MCPcopy Create free account
hub / github.com/PowerShell/DSC / test

Method test

lib/dsc-lib/src/dscresources/dscresource.rs:437–486  ·  view source on GitHub ↗
(&self, expected: &str)

Source from the content-addressed store, hash-verified

435 }
436
437 fn test(&self, expected: &str) -> Result<TestResult, DscError> {
438 debug!("{}", t!("dscresources.dscresource.invokeTest", resource = self.type_name));
439 if let Some(deprecation_message) = self.deprecation_message.as_ref() {
440 warn!("{}", t!("dscresources.dscresource.deprecationMessage", resource = self.type_name, message = deprecation_message));
441 }
442 if let Some(adapter) = &self.require_adapter {
443 return self.invoke_test_with_adapter(adapter, self, expected);
444 }
445
446 match &self.implemented_as {
447 Some(ImplementedAs::Command) => {
448 let Some(manifest) = &self.manifest else {
449 return Err(DscError::MissingManifest(self.type_name.to_string()));
450 };
451
452 // if test is not directly implemented, then we need to handle it here
453 if manifest.test.is_none() {
454 let get_result = self.get(expected)?;
455 let mut desired_state = serde_json::from_str(expected)?;
456 let actual_state = match get_result {
457 GetResult::Group(results) => {
458 let mut result_array: Vec<Value> = Vec::new();
459 for result in results {
460 result_array.push(serde_json::to_value(result)?);
461 }
462 Value::from(result_array)
463 },
464 GetResult::Resource(response) => {
465 response.actual_state
466 }
467 };
468 let diff_properties = get_diff( &desired_state, &actual_state);
469 desired_state = redact(&desired_state);
470 let test_result = TestResult::Resource(ResourceTestResponse {
471 desired_state,
472 actual_state,
473 in_desired_state: diff_properties.is_empty(),
474 diff_properties,
475 });
476 Ok(test_result)
477 }
478 else {
479 command_resource::invoke_test(self, expected, self.target_resource.as_deref())
480 }
481 },
482 _ => {
483 Err(DscError::NotImplemented(t!("dscresources.dscresource.customResourceNotSupported").to_string()))
484 },
485 }
486 }
487
488 fn delete(&self, filter: &str, execution_type: &ExecutionKind) -> Result<DeleteResultKind, DscError> {
489 debug!("{}", t!("dscresources.dscresource.invokeDelete", resource = self.type_name));

Callers 5

resource_testMethod · 0.80
invoke_testMethod · 0.80
testFunction · 0.80
invoke_dsc_resourceMethod · 0.80

Calls 10

get_diffFunction · 0.85
invoke_testFunction · 0.85
redactFunction · 0.70
from_strFunction · 0.50
newFunction · 0.50
ResourceClass · 0.50
as_refMethod · 0.45
getMethod · 0.45
is_emptyMethod · 0.45

Tested by

no test coverage detected