Skip to content

Commit 9ee49bd

Browse files
author
Andrew
committed
metaconfig 8
1 parent 2a02351 commit 9ee49bd

File tree

2 files changed

+95
-1
lines changed

2 files changed

+95
-1
lines changed

dsc/src/util.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ use syntect::{
4141
parsing::SyntaxSet,
4242
util::{as_24_bit_terminal_escaped, LinesWithEndings}
4343
};
44-
use tracing::{Level, debug, error, warn, trace};
44+
use tracing::{Level, info, debug, error, warn, trace};
4545
use tracing_subscriber::{filter::EnvFilter, layer::SubscriberExt, Layer};
4646
use tracing_indicatif::IndicatifLayer;
4747

@@ -394,6 +394,7 @@ pub fn enable_tracing(trace_level_arg: Option<TraceLevel>, trace_format_arg: Opt
394394

395395
// set DSC_TRACE_LEVEL for child processes
396396
env::set_var(DSC_TRACE_LEVEL, tracing_level.to_string().to_ascii_lowercase());
397+
info!("Trace-level is {:?}", tracing_setting.level);
397398
}
398399

399400
/// Validate the JSON against the schema.

dsc/tests/dsc_settings.tests.ps1

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
# Copyright (c) Microsoft Corporation.
2+
# Licensed under the MIT License.
3+
4+
Describe 'tests for dsc settings' {
5+
BeforeAll {
6+
$env:DSC_RESOURCE_PATH = $testdrive
7+
8+
$script:policyFilePath = if ($IsWindows) {
9+
Join-Path $env:ProgramData "dsc" "settings.dsc.json"
10+
} else {
11+
"/etc/.dsc/settings.dsc.json"
12+
}
13+
14+
$script:dscHome = (Get-Command dsc).Path | Split-Path
15+
$script:dscSettingsFilePath = Join-Path $script:dscHome "settings.dsc.json"
16+
$script:dscDefaultv1SettingsFilePath = Join-Path $script:dscHome "default_settings.v1.dsc.json"
17+
$script:dscDefaultv1SettingsJson = Get-Content -Raw -Path $script:dscDefaultv1SettingsFilePath
18+
19+
$script:policyDirPath = $script:policyFilePath | Split-Path
20+
New-Item -ItemType Directory -Path $script:policyDirPath -ErrorAction SilentlyContinue | Out-Null
21+
22+
#create backups of settings files
23+
$script:dscSettingsFilePath_backup = Join-Path $script:dscHome "settings.dsc.json.backup"
24+
$script:dscDefaultv1SettingsFilePath_backup = Join-Path $script:dscHome "default_settings.v1.dsc.json.backup"
25+
Copy-Item -Force -Path $script:dscSettingsFilePath -Destination $script:dscSettingsFilePath_backup
26+
Copy-Item -Force -Path $script:dscDefaultv1SettingsFilePath -Destination $script:dscDefaultv1SettingsFilePath_backup
27+
}
28+
29+
AfterAll {
30+
Remove-Item -Force -Path $script:dscSettingsFilePath_backup
31+
Remove-Item -Force -Path $script:dscDefaultv1SettingsFilePath_backup
32+
Remove-Item -Recurse -Force -Path $script:policyDirPath
33+
}
34+
35+
AfterEach {
36+
Copy-Item -Force -Path $script:dscSettingsFilePath_backup -Destination $script:dscSettingsFilePath
37+
Copy-Item -Force -Path $script:dscDefaultv1SettingsFilePath_backup -Destination $script:dscDefaultv1SettingsFilePath
38+
Remove-Item -Path $script:policyFilePath -ErrorAction SilentlyContinue
39+
$env:DSC_RESOURCE_PATH = $null
40+
}
41+
42+
It 'ensure a new tracing value in settings has effect' {
43+
44+
$script:dscDefaultv1SettingsJson.Replace('"level": "WARN"', '"level": "TRACE"') | Set-Content -Force -Path $script:dscSettingsFilePath
45+
46+
dsc resource list 2> $TestDrive/tracing.txt
47+
"$TestDrive/tracing.txt" | Should -FileContentMatchExactly "Trace-level is Trace"
48+
}
49+
50+
It 'ensure a new resource_path value in settings has effect' {
51+
52+
$script:dscDefaultv1SettingsJson.Replace('"directories": []', '"directories": ["TestDir"]') | Set-Content -Force -Path $script:dscSettingsFilePath
53+
dsc -l debug resource list 2> $TestDrive/tracing.txt
54+
"$TestDrive/tracing.txt" | Should -FileContentMatchExactly 'Using Resource Path: "TestDir'
55+
}
56+
57+
It 'Confirm settings override priorities' {
58+
59+
$v = $script:dscDefaultv1SettingsJson.Replace('"level": "WARN"', '"level": "TRACE"')
60+
$v = $v.Replace('"directories": []', '"directories": ["PolicyDir"]')
61+
$v | Set-Content -Force -Path $script:policyFilePath
62+
63+
$v = $script:dscDefaultv1SettingsJson.Replace('"level": "WARN"', '"level": "TRACE"')
64+
$v = $v.Replace('"directories": []', '"directories": ["SettingsDir"]')
65+
$v | Set-Content -Force -Path $script:dscSettingsFilePath
66+
67+
$v = $script:dscDefaultv1SettingsJson.Replace('"level": "WARN"', '"level": "TRACE"')
68+
$v = $v.Replace('"directories": []', '"directories": ["Defaultv1SettingsDir"]')
69+
$v | Set-Content -Force -Path $script:dscDefaultv1SettingsFilePath
70+
71+
# ensure policy overrides everything
72+
dsc -l debug resource list 2> $TestDrive/tracing.txt
73+
"$TestDrive/tracing.txt" | Should -FileContentMatchExactly "Trace-level is Trace"
74+
"$TestDrive/tracing.txt" | Should -FileContentMatchExactly 'Using Resource Path: "PolicyDir'
75+
76+
# without policy, command-line args have priority
77+
Remove-Item -Path $script:policyFilePath
78+
dsc -l debug resource list 2> $TestDrive/tracing.txt
79+
"$TestDrive/tracing.txt" | Should -FileContentMatchExactly "Trace-level is Debug"
80+
"$TestDrive/tracing.txt" | Should -FileContentMatchExactly 'Using Resource Path: "SettingsDir'
81+
82+
# without policy and command-line args, settings file is used
83+
dsc resource list 2> $TestDrive/tracing.txt
84+
"$TestDrive/tracing.txt" | Should -FileContentMatchExactly "Trace-level is Trace"
85+
"$TestDrive/tracing.txt" | Should -FileContentMatchExactly 'Using Resource Path: "SettingsDir'
86+
87+
# without policy and command-line args and settings file, the default settings file is used
88+
Remove-Item -Path $script:dscSettingsFilePath
89+
dsc resource list 2> $TestDrive/tracing.txt
90+
"$TestDrive/tracing.txt" | Should -FileContentMatchExactly "Trace-level is Trace"
91+
"$TestDrive/tracing.txt" | Should -FileContentMatchExactly 'Using Resource Path: "Defaultv1SettingsDir'
92+
}
93+
}

0 commit comments

Comments
 (0)