@@ -283,25 +283,8 @@ pub fn invoke_test(resource: &ResourceManifest, cwd: &str, expected: &str) -> Re
283
283
return Err ( DscError :: Operation ( t ! ( "dscresources.commandResource.failedParseJson" , executable = & test. executable, stdout = stdout, stderr = stderr, err = err) . to_string ( ) ) )
284
284
}
285
285
} ;
286
- // if actual state contains _inDesiredState, we use that to determine if the resource is in desired state
287
- let mut in_desired_state: Option < bool > = None ;
288
- if let Some ( in_desired_state_value) = actual_value. get ( "_inDesiredState" ) {
289
- if let Some ( desired_state) = in_desired_state_value. as_bool ( ) {
290
- in_desired_state = Some ( desired_state) ;
291
- } else {
292
- return Err ( DscError :: Operation ( t ! ( "dscresources.commandResource.inDesiredStateNotBool" ) . to_string ( ) ) ) ;
293
- }
294
- }
295
-
296
- let mut diff_properties: Vec < String > = Vec :: new ( ) ;
297
- match in_desired_state {
298
- Some ( true ) => {
299
- // if _inDesiredState is true, we don't need to check for diff properties
300
- } ,
301
- Some ( false ) | None => {
302
- diff_properties = get_diff ( & expected_value, & actual_value) ;
303
- }
304
- }
286
+ let in_desired_state = get_desired_state ( & actual_value) ?;
287
+ let diff_properties = get_diff ( & expected_value, & actual_value) ;
305
288
Ok ( TestResult :: Resource ( ResourceTestResponse {
306
289
desired_state : expected_value,
307
290
actual_state : actual_value,
@@ -320,10 +303,11 @@ pub fn invoke_test(resource: &ResourceManifest, cwd: &str, expected: &str) -> Re
320
303
return Err ( DscError :: Command ( resource. resource_type . clone ( ) , exit_code, t ! ( "dscresources.commandResource.testNoDiff" ) . to_string ( ) ) ) ;
321
304
} ;
322
305
let diff_properties: Vec < String > = serde_json:: from_str ( diff_properties) ?;
306
+ let in_desired_state = get_desired_state ( & actual_value) ?;
323
307
Ok ( TestResult :: Resource ( ResourceTestResponse {
324
308
desired_state : expected_value,
325
309
actual_state : actual_value,
326
- in_desired_state : diff_properties. is_empty ( ) ,
310
+ in_desired_state : in_desired_state . unwrap_or ( diff_properties. is_empty ( ) ) ,
327
311
diff_properties,
328
312
} ) )
329
313
} ,
@@ -353,6 +337,19 @@ pub fn invoke_test(resource: &ResourceManifest, cwd: &str, expected: &str) -> Re
353
337
}
354
338
}
355
339
340
+ fn get_desired_state ( actual : & Value ) -> Result < Option < bool > , DscError > {
341
+ // if actual state contains _inDesiredState, we use that to determine if the resource is in desired state
342
+ let mut in_desired_state: Option < bool > = None ;
343
+ if let Some ( in_desired_state_value) = actual. get ( "_inDesiredState" ) {
344
+ if let Some ( desired_state) = in_desired_state_value. as_bool ( ) {
345
+ in_desired_state = Some ( desired_state) ;
346
+ } else {
347
+ return Err ( DscError :: Operation ( t ! ( "dscresources.commandResource.inDesiredStateNotBool" ) . to_string ( ) ) ) ;
348
+ }
349
+ }
350
+ Ok ( in_desired_state)
351
+ }
352
+
356
353
fn invoke_synthetic_test ( resource : & ResourceManifest , cwd : & str , expected : & str ) -> Result < TestResult , DscError > {
357
354
let get_result = invoke_get ( resource, cwd, expected) ?;
358
355
let actual_state = match get_result {
0 commit comments