diff --git a/CHANGELOG.md b/CHANGELOG.md index b3f870d8..470ca426 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ ## CHANGELOG +### v0.37.13 + +* Enhancement: New condition_script_runner_args attribute #1081 + ### v0.37.12 (2024-05-04) * Enhancement: support crates with invalid structure (fallback of cargo-metadata) #1076 diff --git a/src/lib/condition.rs b/src/lib/condition.rs index f934a8f3..1d2fdce1 100755 --- a/src/lib/condition.rs +++ b/src/lib/condition.rs @@ -442,6 +442,7 @@ pub(crate) fn get_script_text(script: &ConditionScriptValue) -> Vec { fn validate_script( condition_script: &Option, script_runner: Option, + script_runner_args: Option>, ) -> bool { match condition_script { Some(ref script) => { @@ -451,7 +452,7 @@ fn validate_script( return scriptengine::invoke_script_pre_flow( &ScriptValue::Text(script_text), script_runner, - None, + script_runner_args, None, false, &vec![], @@ -470,9 +471,10 @@ pub(crate) fn validate_conditions( condition: &Option, condition_script: &Option, script_runner: Option, + script_runner_args: Option>, ) -> bool { validate_criteria(Some(&flow_info), &condition) - && validate_script(&condition_script, script_runner) + && validate_script(&condition_script, script_runner, script_runner_args) } pub(crate) fn validate_condition_for_step(flow_info: &FlowInfo, step: &Step) -> bool { @@ -481,5 +483,6 @@ pub(crate) fn validate_condition_for_step(flow_info: &FlowInfo, step: &Step) -> &step.config.condition, &step.config.condition_script, step.config.script_runner.clone(), + step.config.condition_script_runner_args.clone(), ) } diff --git a/src/lib/condition_test.rs b/src/lib/condition_test.rs index 6364dd5a..0ca135ed 100755 --- a/src/lib/condition_test.rs +++ b/src/lib/condition_test.rs @@ -852,7 +852,7 @@ fn validate_env_contains_invalid_partial_found() { #[test] fn validate_script_empty() { - let enabled = validate_script(&None, None); + let enabled = validate_script(&None, None, None); assert!(enabled); } @@ -862,6 +862,7 @@ fn validate_script_valid() { let enabled = validate_script( &Some(ConditionScriptValue::Text(vec!["exit 0".to_string()])), None, + None, ); assert!(enabled); @@ -872,6 +873,7 @@ fn validate_script_invalid() { let enabled = validate_script( &Some(ConditionScriptValue::Text(vec!["exit 1".to_string()])), None, + None, ); assert!(!enabled); @@ -884,6 +886,7 @@ fn validate_script_valid_with_duckscript_shebang() { "#!@duckscript\nexit 0".to_string() ])), None, + None, ); assert!(enabled); @@ -896,6 +899,7 @@ fn validate_script_invalid_with_duckscript_shebang() { "#!@duckscript\nexit 1".to_string() ])), None, + None, ); assert!(!enabled); diff --git a/src/lib/execution_plan_test.rs b/src/lib/execution_plan_test.rs index f1af80b0..ca4a9039 100644 --- a/src/lib/execution_plan_test.rs +++ b/src/lib/execution_plan_test.rs @@ -1230,6 +1230,7 @@ fn create_platform_disabled() { watch: Some(TaskWatchOptions::Boolean(false)), condition: None, condition_script: None, + condition_script_runner_args: None, install_crate: None, install_crate_args: None, command: None, @@ -1258,6 +1259,7 @@ fn create_platform_disabled() { watch: Some(TaskWatchOptions::Boolean(false)), condition: None, condition_script: None, + condition_script_runner_args: None, install_crate: None, install_crate_args: None, command: None, @@ -1286,6 +1288,7 @@ fn create_platform_disabled() { watch: Some(TaskWatchOptions::Boolean(false)), condition: None, condition_script: None, + condition_script_runner_args: None, install_crate: None, install_crate_args: None, command: None, @@ -1524,6 +1527,7 @@ fn get_normalized_task_multi_extend() { watch: None, condition: None, condition_script: None, + condition_script_runner_args: None, install_crate: None, install_crate_args: None, command: None, diff --git a/src/lib/plugin/runner_test.rs b/src/lib/plugin/runner_test.rs index 98920532..eb17c68d 100644 --- a/src/lib/plugin/runner_test.rs +++ b/src/lib/plugin/runner_test.rs @@ -473,6 +473,7 @@ fn run_task_invoked_valid() { files_modified: None, }), condition_script: Some(ConditionScriptValue::Text(vec!["exit 0".to_string()])), + condition_script_runner_args: None, ignore_errors: Some(true), force: Some(true), env_files: Some(vec![EnvFile::Path("extended".to_string())]), diff --git a/src/lib/runner.rs b/src/lib/runner.rs index d30da58c..c774314a 100755 --- a/src/lib/runner.rs +++ b/src/lib/runner.rs @@ -95,6 +95,7 @@ pub(crate) fn get_sub_task_info_for_routing_info( &routing_step.condition, &routing_step.condition_script, None, + routing_step.condition_script_runner_args.clone(), ); if invoke { diff --git a/src/lib/runner_test.rs b/src/lib/runner_test.rs index da1272ba..6da36e16 100755 --- a/src/lib/runner_test.rs +++ b/src/lib/runner_test.rs @@ -1571,6 +1571,7 @@ fn run_sub_task_and_report_routing_no_condition() { cleanup_task: None, condition: None, condition_script: None, + condition_script_runner_args: None, }]); let output = run_sub_task_and_report( @@ -1639,6 +1640,7 @@ fn run_sub_task_and_report_routing_condition_not_met() { files_modified: None, }), condition_script: None, + condition_script_runner_args: None, }]); let output = run_sub_task_and_report( @@ -1692,6 +1694,7 @@ fn run_sub_task_and_report_routing_not_found() { cleanup_task: None, condition: None, condition_script: None, + condition_script_runner_args: None, }]); run_sub_task_and_report( @@ -1838,6 +1841,7 @@ fn get_sub_task_info_for_routing_info_condition_not_met() { files_modified: None, }), condition_script: None, + condition_script_runner_args: None, }], ); @@ -1899,6 +1903,7 @@ fn get_sub_task_info_for_routing_info_condition_found() { files_modified: None, }), condition_script: None, + condition_script_runner_args: None, }], ); @@ -1960,6 +1965,7 @@ fn get_sub_task_info_for_routing_info_condition_found_multiple_tasks() { files_modified: None, }), condition_script: None, + condition_script_runner_args: None, }], ); @@ -2005,6 +2011,7 @@ fn get_sub_task_info_for_routing_info_script_not_met() { cleanup_task: None, condition: None, condition_script: Some(ConditionScriptValue::Text(vec!["exit 1".to_string()])), + condition_script_runner_args: None, }], ); @@ -2050,6 +2057,7 @@ fn get_sub_task_info_for_routing_info_script_found() { cleanup_task: None, condition: None, condition_script: Some(ConditionScriptValue::Text(vec!["exit 0".to_string()])), + condition_script_runner_args: None, }], ); @@ -2112,6 +2120,7 @@ fn get_sub_task_info_for_routing_info_multiple_found() { files_modified: None, }), condition_script: None, + condition_script_runner_args: None, }, RunTaskRoutingInfo { name: RunTaskName::Single("test2".to_string()), @@ -2120,6 +2129,7 @@ fn get_sub_task_info_for_routing_info_multiple_found() { cleanup_task: None, condition: None, condition_script: Some(ConditionScriptValue::Text(vec!["exit 0".to_string()])), + condition_script_runner_args: None, }, ], ); @@ -2183,6 +2193,7 @@ fn get_sub_task_info_for_routing_info_default() { files_modified: None, }), condition_script: None, + condition_script_runner_args: None, }, RunTaskRoutingInfo { name: RunTaskName::Single("test2".to_string()), @@ -2191,6 +2202,7 @@ fn get_sub_task_info_for_routing_info_default() { cleanup_task: None, condition: None, condition_script: Some(ConditionScriptValue::Text(vec!["exit 1".to_string()])), + condition_script_runner_args: None, }, RunTaskRoutingInfo { name: RunTaskName::Single("default".to_string()), @@ -2199,6 +2211,7 @@ fn get_sub_task_info_for_routing_info_default() { cleanup_task: None, condition: None, condition_script: None, + condition_script_runner_args: None, }, ], ); @@ -2262,6 +2275,7 @@ fn get_sub_task_info_for_routing_info_multiple() { files_modified: None, }), condition_script: None, + condition_script_runner_args: None, }, RunTaskRoutingInfo { name: RunTaskName::Single("test2".to_string()), @@ -2270,6 +2284,7 @@ fn get_sub_task_info_for_routing_info_multiple() { cleanup_task: None, condition: None, condition_script: Some(ConditionScriptValue::Text(vec!["exit 1".to_string()])), + condition_script_runner_args: None, }, RunTaskRoutingInfo { name: RunTaskName::Single("test3".to_string()), @@ -2278,6 +2293,7 @@ fn get_sub_task_info_for_routing_info_multiple() { cleanup_task: None, condition: None, condition_script: Some(ConditionScriptValue::Text(vec!["exit 0".to_string()])), + condition_script_runner_args: None, }, RunTaskRoutingInfo { name: RunTaskName::Single("default".to_string()), @@ -2286,6 +2302,7 @@ fn get_sub_task_info_for_routing_info_multiple() { cleanup_task: None, condition: None, condition_script: None, + condition_script_runner_args: None, }, ], ); @@ -2348,6 +2365,7 @@ fn get_sub_task_info_for_routing_info_fork_false() { files_modified: None, }), condition_script: None, + condition_script_runner_args: None, }], ); @@ -2409,6 +2427,7 @@ fn get_sub_task_info_for_routing_info_fork_true() { files_modified: None, }), condition_script: None, + condition_script_runner_args: None, }], ); diff --git a/src/lib/types.rs b/src/lib/types.rs index 28afd33f..e0cf5fac 100755 --- a/src/lib/types.rs +++ b/src/lib/types.rs @@ -870,6 +870,8 @@ pub struct RunTaskRoutingInfo { pub condition: Option, /// if script exit code is not 0, the task will not be invoked pub condition_script: Option, + /// The script runner arguments before the script file path + pub condition_script_runner_args: Option>, } #[derive(Serialize, Deserialize, Debug, Clone)] @@ -1107,6 +1109,8 @@ pub struct Task { pub condition: Option, /// if script exit code is not 0, the command/script of this task will not be invoked, dependencies however will be pub condition_script: Option, + /// The script runner arguments before the script file path + pub condition_script_runner_args: Option>, /// if true, any error while executing the task will be printed but will not break the build pub ignore_errors: Option, /// DEPRECATED, replaced with ignore_errors @@ -1507,6 +1511,12 @@ impl Task { self.condition_script = None; } + if task.condition_script_runner_args.is_some() { + self.condition_script_runner_args = task.condition_script_runner_args.clone(); + } else if override_values { + self.condition_script_runner_args = None; + } + if task.ignore_errors.is_some() { self.ignore_errors = task.ignore_errors.clone(); } else if override_values { @@ -1708,6 +1718,9 @@ impl Task { watch: override_task.watch.clone(), condition: override_task.condition.clone(), condition_script: override_task.condition_script.clone(), + condition_script_runner_args: override_task + .condition_script_runner_args + .clone(), ignore_errors: override_task.ignore_errors.clone(), force: override_task.force.clone(), env_files: override_task.env_files.clone(), @@ -1867,6 +1880,8 @@ pub struct PlatformOverrideTask { pub condition: Option, /// if script exit code is not 0, the command/script of this task will not be invoked, dependencies however will be pub condition_script: Option, + /// The script runner arguments before the script file path + pub condition_script_runner_args: Option>, /// if true, any error while executing the task will be printed but will not break the build pub ignore_errors: Option, /// DEPRECATED, replaced with ignore_errors @@ -1948,6 +1963,12 @@ impl PlatformOverrideTask { self.condition_script = task.condition_script.clone(); } + if self.condition_script_runner_args.is_none() + && task.condition_script_runner_args.is_some() + { + self.condition_script_runner_args = task.condition_script_runner_args.clone(); + } + if self.ignore_errors.is_none() && task.ignore_errors.is_some() { self.ignore_errors = task.ignore_errors.clone(); } diff --git a/src/lib/types_test.rs b/src/lib/types_test.rs index 0437d5d8..65ef37d6 100755 --- a/src/lib/types_test.rs +++ b/src/lib/types_test.rs @@ -1705,6 +1705,7 @@ fn task_new() { assert!(task.watch.is_none()); assert!(task.condition.is_none()); assert!(task.condition_script.is_none()); + assert!(task.condition_script_runner_args.is_none()); assert!(task.description.is_none()); assert!(task.category.is_none()); assert!(task.workspace.is_none()); @@ -1813,6 +1814,7 @@ fn task_extend_both_have_misc_data() { watch: Some(TaskWatchOptions::Boolean(true)), condition: None, condition_script: None, + condition_script_runner_args: None, ignore_errors: Some(true), force: Some(true), env_files: Some(vec![]), @@ -1853,6 +1855,7 @@ fn task_extend_both_have_misc_data() { assert!(base.watch.is_some()); assert!(base.condition.is_none()); assert!(base.condition_script.is_none()); + assert!(base.condition_script_runner_args.is_none()); assert!(base.ignore_errors.is_some()); assert!(base.force.is_some()); assert!(base.env_files.is_some()); @@ -1913,6 +1916,7 @@ fn task_extend_extended_have_all_fields() { watch: Some(TaskWatchOptions::Boolean(true)), condition: None, condition_script: None, + condition_script_runner_args: None, ignore_errors: Some(true), force: Some(true), env_files: Some(vec![]), @@ -1971,6 +1975,7 @@ fn task_extend_extended_have_all_fields() { files_modified: None, }), condition_script: Some(ConditionScriptValue::Text(vec!["exit 0".to_string()])), + condition_script_runner_args: Some(vec!["csr_a1".to_string(), "csr_a2".to_string()]), ignore_errors: Some(false), force: Some(false), env_files: Some(vec![EnvFile::Path("extended".to_string())]), @@ -2022,6 +2027,7 @@ fn task_extend_extended_have_all_fields() { files_modified: None, }), condition_script: Some(ConditionScriptValue::Text(vec!["exit 0".to_string()])), + condition_script_runner_args: Some(vec!["csr_a1".to_string(), "csr_a2".to_string()]), ignore_errors: Some(true), force: Some(true), env_files: Some(vec![EnvFile::Path("extended".to_string())]), @@ -2070,6 +2076,7 @@ fn task_extend_extended_have_all_fields() { files_modified: None, }), condition_script: Some(ConditionScriptValue::Text(vec!["exit 0".to_string()])), + condition_script_runner_args: Some(vec!["csr_a1".to_string(), "csr_a2".to_string()]), ignore_errors: Some(true), force: Some(true), env_files: Some(vec![EnvFile::Path("extended".to_string())]), @@ -2118,6 +2125,7 @@ fn task_extend_extended_have_all_fields() { files_modified: None, }), condition_script: Some(ConditionScriptValue::Text(vec!["exit 0".to_string()])), + condition_script_runner_args: Some(vec!["csr_a1".to_string(), "csr_a2".to_string()]), ignore_errors: Some(true), force: Some(true), env_files: Some(vec![EnvFile::Path("extended".to_string())]), @@ -2156,6 +2164,7 @@ fn task_extend_extended_have_all_fields() { assert!(base.watch.is_some()); assert!(base.condition.is_some()); assert!(base.condition_script.is_some()); + assert!(base.condition_script_runner_args.is_some()); assert!(base.ignore_errors.is_some()); assert!(base.force.is_some()); assert!(base.env_files.is_some()); @@ -2199,6 +2208,7 @@ fn task_extend_extended_have_all_fields() { _ => panic!("Invalid condition script value."), }; assert_eq!(condition_script.len(), 1); + assert_eq!(base.condition_script_runner_args.unwrap().len(), 2); assert!(!base.ignore_errors.unwrap()); assert!(!base.force.unwrap()); assert_eq!(base.env_files.unwrap().len(), 1); @@ -2265,6 +2275,7 @@ fn task_extend_clear_with_no_data() { files_modified: None, }), condition_script: Some(ConditionScriptValue::Text(vec!["exit 0".to_string()])), + condition_script_runner_args: Some(vec!["csr_a1".to_string(), "csr_a2".to_string()]), ignore_errors: Some(false), force: Some(false), env_files: Some(vec![]), @@ -2316,6 +2327,7 @@ fn task_extend_clear_with_no_data() { files_modified: None, }), condition_script: Some(ConditionScriptValue::Text(vec!["exit 0".to_string()])), + condition_script_runner_args: Some(vec!["csr_a1".to_string(), "csr_a2".to_string()]), ignore_errors: Some(true), force: Some(true), env_files: Some(vec![]), @@ -2364,6 +2376,7 @@ fn task_extend_clear_with_no_data() { files_modified: None, }), condition_script: Some(ConditionScriptValue::Text(vec!["exit 0".to_string()])), + condition_script_runner_args: Some(vec!["csr_a1".to_string(), "csr_a2".to_string()]), ignore_errors: Some(true), force: Some(true), env_files: Some(vec![]), @@ -2412,6 +2425,7 @@ fn task_extend_clear_with_no_data() { files_modified: None, }), condition_script: Some(ConditionScriptValue::Text(vec!["exit 0".to_string()])), + condition_script_runner_args: Some(vec!["csr_a1".to_string(), "csr_a2".to_string()]), ignore_errors: Some(true), force: Some(true), env_files: Some(vec![]), @@ -2452,6 +2466,7 @@ fn task_extend_clear_with_no_data() { assert!(base.watch.is_none()); assert!(base.condition.is_none()); assert!(base.condition_script.is_none()); + assert!(base.condition_script_runner_args.is_none()); assert!(base.ignore_errors.is_none()); assert!(base.force.is_none()); assert!(base.env_files.is_none()); @@ -2513,6 +2528,7 @@ fn task_extend_clear_with_all_data() { files_modified: None, }), condition_script: Some(ConditionScriptValue::Text(vec!["exit 0".to_string()])), + condition_script_runner_args: Some(vec!["csr_a1".to_string(), "csr_a2".to_string()]), ignore_errors: Some(false), force: Some(false), env_files: Some(vec![]), @@ -2564,6 +2580,7 @@ fn task_extend_clear_with_all_data() { files_modified: None, }), condition_script: Some(ConditionScriptValue::Text(vec!["exit 0".to_string()])), + condition_script_runner_args: Some(vec!["csr_a1".to_string(), "csr_a2".to_string()]), ignore_errors: Some(true), force: Some(true), env_files: Some(vec![]), @@ -2612,6 +2629,7 @@ fn task_extend_clear_with_all_data() { files_modified: None, }), condition_script: Some(ConditionScriptValue::Text(vec!["exit 0".to_string()])), + condition_script_runner_args: Some(vec!["csr_a1".to_string(), "csr_a2".to_string()]), ignore_errors: Some(true), force: Some(true), env_files: Some(vec![]), @@ -2660,6 +2678,7 @@ fn task_extend_clear_with_all_data() { files_modified: None, }), condition_script: Some(ConditionScriptValue::Text(vec!["exit 0".to_string()])), + condition_script_runner_args: Some(vec!["csr_a1".to_string(), "csr_a2".to_string()]), ignore_errors: Some(true), force: Some(true), env_files: Some(vec![]), @@ -2697,6 +2716,7 @@ fn task_extend_clear_with_all_data() { assert!(base.watch.is_some()); assert!(base.condition.is_some()); assert!(base.condition_script.is_some()); + assert!(base.condition_script_runner_args.is_some()); assert!(base.ignore_errors.is_some()); assert!(base.force.is_some()); assert!(base.env_files.is_some()); @@ -2774,6 +2794,7 @@ fn task_get_normalized_task_undefined() { watch: Some(TaskWatchOptions::Boolean(true)), condition: None, condition_script: None, + condition_script_runner_args: Some(vec!["csr_a1".to_string(), "csr_a2".to_string()]), ignore_errors: None, force: None, env_files: None, @@ -2814,6 +2835,7 @@ fn task_get_normalized_task_undefined() { assert!(normalized_task.watch.is_some()); assert!(normalized_task.condition.is_none()); assert!(normalized_task.condition_script.is_none()); + assert!(normalized_task.condition_script_runner_args.is_some()); assert!(normalized_task.ignore_errors.is_none()); assert!(normalized_task.force.is_none()); assert!(normalized_task.env_files.is_none()); @@ -2857,6 +2879,10 @@ fn task_get_normalized_task_undefined() { normalized_task.watch.unwrap(), TaskWatchOptions::Boolean(true) ); + assert_eq!( + normalized_task.condition_script_runner_args.unwrap().len(), + 2 + ); assert!(!normalized_task.ignore_errors.unwrap_or(false)); assert!(!normalized_task.force.unwrap_or(false)); assert_eq!(normalized_task.alias.unwrap(), "alias"); @@ -2919,6 +2945,7 @@ fn task_get_normalized_task_with_override_no_clear() { files_modified: None, }), condition_script: Some(ConditionScriptValue::Text(vec!["exit 0".to_string()])), + condition_script_runner_args: Some(vec!["csr_a1".to_string(), "csr_a2".to_string()]), ignore_errors: Some(false), force: Some(false), env_files: Some(vec![]), @@ -2966,6 +2993,11 @@ fn task_get_normalized_task_with_override_no_clear() { files_modified: None, }), condition_script: Some(ConditionScriptValue::Text(vec!["exit 0".to_string()])), + condition_script_runner_args: Some(vec![ + "csr_a1".to_string(), + "csr_a2".to_string(), + "csr_a3".to_string(), + ]), ignore_errors: Some(true), force: Some(true), env_files: Some(vec![EnvFile::Path("extended".to_string())]), @@ -3015,6 +3047,7 @@ fn task_get_normalized_task_with_override_no_clear() { assert!(normalized_task.watch.is_some()); assert!(normalized_task.condition.is_some()); assert!(normalized_task.condition_script.is_some()); + assert!(normalized_task.condition_script_runner_args.is_some()); assert!(normalized_task.ignore_errors.is_some()); assert!(normalized_task.force.is_some()); assert!(normalized_task.env_files.is_some()); @@ -3064,6 +3097,10 @@ fn task_get_normalized_task_with_override_no_clear() { _ => panic!("Invalid condition script value."), }; assert_eq!(condition_script.len(), 1); + assert_eq!( + normalized_task.condition_script_runner_args.unwrap().len(), + 3 + ); assert!(normalized_task.ignore_errors.unwrap()); assert!(normalized_task.force.unwrap()); assert_eq!(normalized_task.env_files.unwrap().len(), 1); @@ -3130,6 +3167,7 @@ fn task_get_normalized_task_with_override_clear_false() { files_modified: None, }), condition_script: Some(ConditionScriptValue::Text(vec!["exit 0".to_string()])), + condition_script_runner_args: Some(vec!["csr_a1".to_string(), "csr_a2".to_string()]), ignore_errors: Some(false), force: Some(false), env_files: Some(vec![]), @@ -3183,6 +3221,11 @@ fn task_get_normalized_task_with_override_clear_false() { "echo test".to_string(), "exit 1".to_string(), ])), + condition_script_runner_args: Some(vec![ + "csr_a1".to_string(), + "csr_a2".to_string(), + "csr_a3".to_string(), + ]), ignore_errors: Some(true), force: Some(true), env_files: Some(vec![EnvFile::Path("extended".to_string())]), @@ -3232,6 +3275,7 @@ fn task_get_normalized_task_with_override_clear_false() { assert!(normalized_task.watch.is_some()); assert!(normalized_task.condition.is_some()); assert!(normalized_task.condition_script.is_some()); + assert!(normalized_task.condition_script_runner_args.is_some()); assert!(normalized_task.ignore_errors.is_some()); assert!(normalized_task.force.is_some()); assert!(normalized_task.env_files.is_some()); @@ -3281,6 +3325,10 @@ fn task_get_normalized_task_with_override_clear_false() { _ => panic!("Invalid condition script value."), }; assert_eq!(condition_script.len(), 2); + assert_eq!( + normalized_task.condition_script_runner_args.unwrap().len(), + 3 + ); assert!(normalized_task.ignore_errors.unwrap()); assert!(normalized_task.force.unwrap()); assert_eq!(normalized_task.env_files.unwrap().len(), 1); @@ -3341,6 +3389,7 @@ fn task_get_normalized_task_with_override_clear_false_partial_override() { files_modified: None, }), condition_script: Some(ConditionScriptValue::Text(vec!["exit 0".to_string()])), + condition_script_runner_args: Some(vec!["csr_a1".to_string(), "csr_a2".to_string()]), ignore_errors: Some(false), force: Some(false), env_files: Some(vec![]), @@ -3376,6 +3425,7 @@ fn task_get_normalized_task_with_override_clear_false_partial_override() { watch: None, condition: None, condition_script: None, + condition_script_runner_args: None, ignore_errors: None, force: None, env_files: None, @@ -3408,6 +3458,7 @@ fn task_get_normalized_task_with_override_clear_false_partial_override() { assert!(normalized_task.watch.is_some()); assert!(normalized_task.condition.is_some()); assert!(normalized_task.condition_script.is_some()); + assert!(normalized_task.condition_script_runner_args.is_some()); assert!(normalized_task.ignore_errors.is_some()); assert!(normalized_task.force.is_some()); assert!(normalized_task.env_files.is_some()); @@ -3451,6 +3502,10 @@ fn task_get_normalized_task_with_override_clear_false_partial_override() { normalized_task.watch.unwrap(), TaskWatchOptions::Boolean(true) ); + assert_eq!( + normalized_task.condition_script_runner_args.unwrap().len(), + 2 + ); assert!(!normalized_task.ignore_errors.unwrap()); assert!(!normalized_task.force.unwrap()); assert_eq!(normalized_task.env_files.unwrap().len(), 0); @@ -3506,6 +3561,7 @@ fn task_get_normalized_task_with_override_clear_true() { files_modified: None, }), condition_script: Some(ConditionScriptValue::Text(vec!["exit 0".to_string()])), + condition_script_runner_args: Some(vec!["csr_a1".to_string(), "csr_a2".to_string()]), ignore_errors: Some(false), force: Some(false), env_files: Some(vec![]), @@ -3541,6 +3597,7 @@ fn task_get_normalized_task_with_override_clear_true() { watch: None, condition: None, condition_script: None, + condition_script_runner_args: None, ignore_errors: None, force: None, env_files: None, @@ -3574,6 +3631,7 @@ fn task_get_normalized_task_with_override_clear_true() { assert!(normalized_task.watch.is_none()); assert!(normalized_task.condition.is_none()); assert!(normalized_task.condition_script.is_none()); + assert!(normalized_task.condition_script_runner_args.is_none()); assert!(normalized_task.ignore_errors.is_none()); assert!(normalized_task.force.is_none()); assert!(normalized_task.env_files.is_none()); @@ -4400,6 +4458,7 @@ fn task_apply_run_task_routing_info_single_modify_namespace() { cleanup_task: None, condition: None, condition_script: None, + condition_script_runner_args: None, }])); task.apply(&modify_config); @@ -4435,6 +4494,7 @@ fn task_apply_run_task_routing_info_multiple_modify_namespace() { cleanup_task: None, condition: None, condition_script: None, + condition_script_runner_args: None, }])); task.apply(&modify_config);