Skip to content

Commit a91df62

Browse files
committed
change to passing whether to process expressions in context
1 parent 4801dc3 commit a91df62

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+194
-194
lines changed

dsc_lib/src/configure/context.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ pub struct Context {
1919
pub variables: Map<String, Value>,
2020
pub start_datetime: DateTime<Local>,
2121
pub restart_required: Option<Vec<RestartRequired>>,
22+
pub process_expressions: bool,
2223
}
2324

2425
impl Context {
@@ -37,6 +38,7 @@ impl Context {
3738
variables: Map::new(),
3839
start_datetime: chrono::Local::now(),
3940
restart_required: None,
41+
process_expressions: true,
4042
}
4143
}
4244
}

dsc_lib/src/configure/depends_on.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ pub fn get_resource_invocation_order(config: &Configuration, parser: &mut Statem
3535
let mut dependency_already_in_order = true;
3636
if let Some(depends_on) = resource.depends_on.clone() {
3737
for dependency in depends_on {
38-
let statement = parser.parse_and_execute(&dependency, context, true)?;
38+
let statement = parser.parse_and_execute(&dependency, context)?;
3939
let Some(string_result) = statement.as_str() else {
4040
return Err(DscError::Validation(t!("configure.dependsOn.syntaxIncorrect", dependency = dependency).to_string()));
4141
};
@@ -69,7 +69,7 @@ pub fn get_resource_invocation_order(config: &Configuration, parser: &mut Statem
6969
// check if the order has resource before its dependencies
7070
let resource_index = order.iter().position(|r| r.name == resource.name && r.resource_type == resource.resource_type).ok_or(DscError::Validation(t!("configure.dependsOn.resourceNotInOrder").to_string()))?;
7171
for dependency in depends_on {
72-
let statement = parser.parse_and_execute(dependency, context, true)?;
72+
let statement = parser.parse_and_execute(dependency, context)?;
7373
let Some(string_result) = statement.as_str() else {
7474
return Err(DscError::Validation(t!("configure.dependsOn.syntaxIncorrect", dependency = dependency).to_string()));
7575
};

dsc_lib/src/configure/mod.rs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ pub struct Configurator {
3939
discovery: Discovery,
4040
statement_parser: Statement,
4141
progress_format: ProgressFormat,
42-
pub process_expressions: bool,
4342
}
4443

4544
/// Add the results of an export operation to a configuration.
@@ -275,7 +274,6 @@ impl Configurator {
275274
discovery: discovery.clone(),
276275
statement_parser: Statement::new()?,
277276
progress_format,
278-
process_expressions: true,
279277
};
280278
config.validate_config()?;
281279
for extension in discovery.extensions.values() {
@@ -672,7 +670,7 @@ impl Configurator {
672670

673671
fn skip_resource(&mut self, resource: &Resource) -> Result<bool, DscError> {
674672
if let Some(condition) = &resource.condition {
675-
let condition_result = self.statement_parser.parse_and_execute(condition, &self.context, self.process_expressions)?;
673+
let condition_result = self.statement_parser.parse_and_execute(condition, &self.context)?;
676674
if condition_result != Value::Bool(true) {
677675
info!("{}", t!("configure.config_doc.skippingResource", name = resource.name, condition = condition, result = condition_result));
678676
return Ok(true);
@@ -724,7 +722,7 @@ impl Configurator {
724722
// default values can be expressions
725723
let value = if default_value.is_string() {
726724
if let Some(value) = default_value.as_str() {
727-
self.statement_parser.parse_and_execute(value, &self.context, self.process_expressions)?
725+
self.statement_parser.parse_and_execute(value, &self.context)?
728726
} else {
729727
return Err(DscError::Parser(t!("configure.mod.defaultStringNotDefined").to_string()));
730728
}
@@ -785,7 +783,7 @@ impl Configurator {
785783

786784
for (name, value) in variables {
787785
let new_value = if let Some(string) = value.as_str() {
788-
self.statement_parser.parse_and_execute(string, &self.context, self.process_expressions)?
786+
self.statement_parser.parse_and_execute(string, &self.context)?
789787
}
790788
else {
791789
value.clone()
@@ -889,7 +887,7 @@ impl Configurator {
889887
let Some(statement) = element.as_str() else {
890888
return Err(DscError::Parser(t!("configure.mod.arrayElementCouldNotTransformAsString").to_string()));
891889
};
892-
let statement_result = self.statement_parser.parse_and_execute(statement, &self.context, self.process_expressions)?;
890+
let statement_result = self.statement_parser.parse_and_execute(statement, &self.context)?;
893891
let Some(string_result) = statement_result.as_str() else {
894892
return Err(DscError::Parser(t!("configure.mod.arrayElementCouldNotTransformAsString").to_string()));
895893
};
@@ -907,7 +905,7 @@ impl Configurator {
907905
let Some(statement) = value.as_str() else {
908906
return Err(DscError::Parser(t!("configure.mod.valueCouldNotBeTransformedAsString", value = value).to_string()));
909907
};
910-
let statement_result = self.statement_parser.parse_and_execute(statement, &self.context, self.process_expressions)?;
908+
let statement_result = self.statement_parser.parse_and_execute(statement, &self.context)?;
911909
if let Some(string_result) = statement_result.as_str() {
912910
result.insert(name.clone(), Value::String(string_result.to_string()));
913911
} else {

dsc_lib/src/dscresources/dscresource.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ impl DscResource {
116116
let config_json = serde_json::to_string(&configuration)?;
117117
let mut configurator = Configurator::new(&config_json, crate::progress::ProgressFormat::None)?;
118118
// don't process expressions again as they would have already been processed before being passed to the adapter
119-
configurator.process_expressions = false;
119+
configurator.context.process_expressions = false;
120120
Ok(configurator)
121121
}
122122
}

dsc_lib/src/functions/add.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,36 +46,36 @@ mod tests {
4646
#[test]
4747
fn numbers() {
4848
let mut parser = Statement::new().unwrap();
49-
let result = parser.parse_and_execute("[add(2, 3)]", &Context::new(), true).unwrap();
49+
let result = parser.parse_and_execute("[add(2, 3)]", &Context::new()).unwrap();
5050
assert_eq!(result, 5);
5151
}
5252

5353
#[test]
5454
fn nested() {
5555
let mut parser = Statement::new().unwrap();
56-
let result = parser.parse_and_execute("[add(2, add(3, 4))]", &Context::new(), true).unwrap();
56+
let result = parser.parse_and_execute("[add(2, add(3, 4))]", &Context::new()).unwrap();
5757
assert_eq!(result, 9);
5858
}
5959

6060
#[test]
6161
fn invalid_one_parameter() {
6262
let mut parser = Statement::new().unwrap();
63-
let result = parser.parse_and_execute("[add(5)]", &Context::new(), true);
63+
let result = parser.parse_and_execute("[add(5)]", &Context::new());
6464
assert!(result.is_err());
6565
}
6666

6767
#[test]
6868
fn overflow_result() {
6969
let mut parser = Statement::new().unwrap();
7070
// max value for i64 is 2^63 -1 (or 9,223,372,036,854,775,807)
71-
let result = parser.parse_and_execute("[add(9223372036854775807, 2)]", &Context::new(), true);
71+
let result = parser.parse_and_execute("[add(9223372036854775807, 2)]", &Context::new());
7272
assert!(result.is_err());
7373
}
7474

7575
#[test]
7676
fn overflow_input() {
7777
let mut parser = Statement::new().unwrap();
78-
let result = parser.parse_and_execute("[add(9223372036854775808, 2)]", &Context::new(), true);
78+
let result = parser.parse_and_execute("[add(9223372036854775808, 2)]", &Context::new());
7979
assert!(result.is_err());
8080
}
8181
}

dsc_lib/src/functions/and.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,28 +51,28 @@ mod tests {
5151
#[test]
5252
fn two_values() {
5353
let mut parser = Statement::new().unwrap();
54-
let result = parser.parse_and_execute("[and(true, false)]", &Context::new(), true).unwrap();
54+
let result = parser.parse_and_execute("[and(true, false)]", &Context::new()).unwrap();
5555
assert_eq!(result, false);
5656
}
5757

5858
#[test]
5959
fn multiple_values() {
6060
let mut parser = Statement::new().unwrap();
61-
let result = parser.parse_and_execute("[and(true, false, true)]", &Context::new(), true).unwrap();
61+
let result = parser.parse_and_execute("[and(true, false, true)]", &Context::new()).unwrap();
6262
assert_eq!(result, false);
6363
}
6464

6565
#[test]
6666
fn all_false() {
6767
let mut parser = Statement::new().unwrap();
68-
let result = parser.parse_and_execute("[and(false, false)]", &Context::new(), true).unwrap();
68+
let result = parser.parse_and_execute("[and(false, false)]", &Context::new()).unwrap();
6969
assert_eq!(result, false);
7070
}
7171

7272
#[test]
7373
fn all_true() {
7474
let mut parser = Statement::new().unwrap();
75-
let result = parser.parse_and_execute("[and(true, true)]", &Context::new(), true).unwrap();
75+
let result = parser.parse_and_execute("[and(true, true)]", &Context::new()).unwrap();
7676
assert_eq!(result, true);
7777
}
7878
}

dsc_lib/src/functions/base64.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,21 +40,21 @@ mod tests {
4040
#[test]
4141
fn strings() {
4242
let mut parser = Statement::new().unwrap();
43-
let result = parser.parse_and_execute("[base64('hello world')]", &Context::new(), true).unwrap();
43+
let result = parser.parse_and_execute("[base64('hello world')]", &Context::new()).unwrap();
4444
assert_eq!(result, "aGVsbG8gd29ybGQ=");
4545
}
4646

4747
#[test]
4848
fn numbers() {
4949
let mut parser = Statement::new().unwrap();
50-
let result = parser.parse_and_execute("[base64(123)]", &Context::new(), true);
50+
let result = parser.parse_and_execute("[base64(123)]", &Context::new());
5151
assert!(result.is_err());
5252
}
5353

5454
#[test]
5555
fn nested() {
5656
let mut parser = Statement::new().unwrap();
57-
let result = parser.parse_and_execute("[base64(base64('hello world'))]", &Context::new(), true).unwrap();
57+
let result = parser.parse_and_execute("[base64(base64('hello world'))]", &Context::new()).unwrap();
5858
assert_eq!(result, "YUdWc2JHOGdkMjl5YkdRPQ==");
5959
}
6060
}

dsc_lib/src/functions/bool.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,28 +49,28 @@ mod tests {
4949
#[test]
5050
fn true_string() {
5151
let mut parser = Statement::new().unwrap();
52-
let result = parser.parse_and_execute("[bool('true')]", &Context::new(), true).unwrap();
52+
let result = parser.parse_and_execute("[bool('true')]", &Context::new()).unwrap();
5353
assert_eq!(result, true);
5454
}
5555

5656
#[test]
5757
fn false_string() {
5858
let mut parser = Statement::new().unwrap();
59-
let result = parser.parse_and_execute("[bool('false')]", &Context::new(), true).unwrap();
59+
let result = parser.parse_and_execute("[bool('false')]", &Context::new()).unwrap();
6060
assert_eq!(result, false);
6161
}
6262

6363
#[test]
6464
fn number_1() {
6565
let mut parser = Statement::new().unwrap();
66-
let result = parser.parse_and_execute("[bool(1)]", &Context::new(), true).unwrap();
66+
let result = parser.parse_and_execute("[bool(1)]", &Context::new()).unwrap();
6767
assert_eq!(result, true);
6868
}
6969

7070
#[test]
7171
fn number_0() {
7272
let mut parser = Statement::new().unwrap();
73-
let result = parser.parse_and_execute("[bool(0)]", &Context::new(), true).unwrap();
73+
let result = parser.parse_and_execute("[bool(0)]", &Context::new()).unwrap();
7474
assert_eq!(result, false);
7575
}
7676
}

dsc_lib/src/functions/coalesce.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -150,13 +150,13 @@ mod tests {
150150
#[test]
151151
fn parser_with_values() {
152152
let mut parser = Statement::new().unwrap();
153-
let result = parser.parse_and_execute("[coalesce('hello', 'world')]", &Context::new(), true).unwrap();
153+
let result = parser.parse_and_execute("[coalesce('hello', 'world')]", &Context::new()).unwrap();
154154
assert_eq!(result, "hello");
155155

156-
let result = parser.parse_and_execute("[coalesce(42, 'fallback')]", &Context::new(), true).unwrap();
156+
let result = parser.parse_and_execute("[coalesce(42, 'fallback')]", &Context::new()).unwrap();
157157
assert_eq!(result, 42);
158158

159-
let result = parser.parse_and_execute("[coalesce(true)]", &Context::new(), true).unwrap();
159+
let result = parser.parse_and_execute("[coalesce(true)]", &Context::new()).unwrap();
160160
assert_eq!(result, true);
161161
}
162162
}

dsc_lib/src/functions/concat.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -89,56 +89,56 @@ mod tests {
8989
#[test]
9090
fn strings() {
9191
let mut parser = Statement::new().unwrap();
92-
let result = parser.parse_and_execute("[concat('a', 'b')]", &Context::new(), true).unwrap();
92+
let result = parser.parse_and_execute("[concat('a', 'b')]", &Context::new()).unwrap();
9393
assert_eq!(result, "ab");
9494
}
9595

9696
#[test]
9797
fn strings_with_spaces() {
9898
let mut parser = Statement::new().unwrap();
99-
let result = parser.parse_and_execute("[concat('a ', ' ', ' b')]", &Context::new(), true).unwrap();
99+
let result = parser.parse_and_execute("[concat('a ', ' ', ' b')]", &Context::new()).unwrap();
100100
assert_eq!(result, "a b");
101101
}
102102

103103
#[test]
104104
fn arrays() {
105105
let mut parser = Statement::new().unwrap();
106-
let result = parser.parse_and_execute("[concat(createArray('a','b'), createArray('c','d'))]", &Context::new(), true).unwrap();
106+
let result = parser.parse_and_execute("[concat(createArray('a','b'), createArray('c','d'))]", &Context::new()).unwrap();
107107
assert_eq!(result.to_string(), r#"["a","b","c","d"]"#);
108108
}
109109

110110
#[test]
111111
fn string_and_numbers() {
112112
let mut parser = Statement::new().unwrap();
113-
let result = parser.parse_and_execute("[concat('a', 1)]", &Context::new(), true);
113+
let result = parser.parse_and_execute("[concat('a', 1)]", &Context::new());
114114
assert!(result.is_err());
115115
}
116116

117117
#[test]
118118
fn nested() {
119119
let mut parser = Statement::new().unwrap();
120-
let result = parser.parse_and_execute("[concat('a', concat('b', 'c'), 'd')]", &Context::new(), true).unwrap();
120+
let result = parser.parse_and_execute("[concat('a', concat('b', 'c'), 'd')]", &Context::new()).unwrap();
121121
assert_eq!(result, "abcd");
122122
}
123123

124124
#[test]
125125
fn invalid_one_parameter() {
126126
let mut parser = Statement::new().unwrap();
127-
let result = parser.parse_and_execute("[concat('a')]", &Context::new(), true);
127+
let result = parser.parse_and_execute("[concat('a')]", &Context::new());
128128
assert!(result.is_err());
129129
}
130130

131131
#[test]
132132
fn string_and_array() {
133133
let mut parser = Statement::new().unwrap();
134-
let result = parser.parse_and_execute("[concat('a', createArray('b','c'))]", &Context::new(), true);
134+
let result = parser.parse_and_execute("[concat('a', createArray('b','c'))]", &Context::new());
135135
assert!(result.is_err());
136136
}
137137

138138
#[test]
139139
fn array_and_string() {
140140
let mut parser = Statement::new().unwrap();
141-
let result = parser.parse_and_execute("[concat(createArray('a','b'), 'c')]", &Context::new(), true);
141+
let result = parser.parse_and_execute("[concat(createArray('a','b'), 'c')]", &Context::new());
142142
assert!(result.is_err());
143143
}
144144
}

0 commit comments

Comments
 (0)