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

Function test_value

archive/registry/src/regconfighelper.rs:231–289  ·  view source on GitHub ↗
(config: &Registry)

Source from the content-addressed store, hash-verified

229}
230
231fn test_value(config: &Registry) -> Result<String, RegistryError> {
232 let mut reg_result: Registry = Registry { key_path: config.key_path.clone(), ..Default::default()};
233 let mut in_desired_state = true;
234
235 let reg_key = match RegistryKey::new(config.key_path.as_str()) {
236 Ok(key) => {
237 key
238 },
239 Err(NtStatusError { status: NtStatusErrorKind::ObjectNameNotFound, ..}) => {
240 reg_result.key_path = String::new();
241 reg_result.in_desired_state = Some(false);
242 return Ok(reg_result.to_json());
243 },
244 Err(err) => {
245 return Err(RegistryError::NtStatus(err));
246 }
247 };
248
249 let value_name = config.value_name.as_ref().unwrap();
250 let mut value_exists = false;
251 let reg_value: RegistryValue = match reg_key.get_value(value_name) {
252 Ok(value) => {
253 value_exists = true;
254 reg_result.value_name = Some(value.name.clone());
255 reg_result.value_data = Some(convert_ntreg_data(&value.data)?);
256 value
257 },
258 Err(NtStatusError { status: NtStatusErrorKind::ObjectNameNotFound, ..}) => {
259 RegistryValue {
260 key_path: config.key_path.clone(),
261 name : String::new(),
262 data : NtRegistryValueData::None,
263 }
264 },
265 Err(err) => {
266 return Err(RegistryError::NtStatus(err));
267 }
268 };
269
270 match &config.exist {
271 Some(true) | None => {
272 if value_exists {
273 in_desired_state = reg_values_are_eq(config, &reg_value)?;
274 }
275 else {
276 in_desired_state = false;
277 }
278 },
279 Some(false) => {
280 if value_exists {
281 in_desired_state = false;
282 }
283 }
284 }
285
286 reg_result.exist = Some(value_exists);
287 reg_result.in_desired_state = Some(in_desired_state);
288 Ok(reg_result.to_json())

Callers 1

config_testFunction · 0.85

Calls 8

convert_ntreg_dataFunction · 0.85
reg_values_are_eqFunction · 0.85
as_strMethod · 0.80
get_valueMethod · 0.80
defaultFunction · 0.50
newFunction · 0.50
to_jsonMethod · 0.45
as_refMethod · 0.45

Tested by

no test coverage detected