Skip to content

Commit da4eb79

Browse files
committed
fix unescaping single quote and add test
1 parent 2d85eeb commit da4eb79

File tree

3 files changed

+11
-5
lines changed

3 files changed

+11
-5
lines changed

dsc/examples/multiline.dsc.yaml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
$schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2024/04/config/document.json
22
resources:
3-
- name: test
3+
- name: test multi-line
44
type: Test/Echo
55
properties:
66
output: |
77
This is a
8-
multi-line
8+
'multi-line'
99
string.
10+
- name: test single-quote escaping
11+
type: Test/Echo
12+
properties:
13+
output: "[concat('This is a single-quote: ', '''')]"

dsc/tests/dsc_expressions.tests.ps1

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,10 @@ resources:
7070
$LASTEXITCODE | Should -Be 0
7171
$out.results[0].result.actualState.output | Should -BeExactly @"
7272
This is a
73-
multi-line
73+
'multi-line'
7474
string.
7575
76-
"@
76+
"@.Replace("`r", "")
77+
$out.results[1].result.actualState.output | Should -BeExactly "This is a single-quote: '"
7778
}
7879
}

dsc_lib/src/parser/functions.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,8 @@ fn convert_args_node(statement_bytes: &[u8], args: &Option<Node>) -> Result<Opti
9797
match arg.kind() {
9898
"string" => {
9999
let value = arg.utf8_text(statement_bytes)?;
100-
result.push(FunctionArg::Value(Value::String(value.to_string())));
100+
// Resolve escaped single quotes
101+
result.push(FunctionArg::Value(Value::String(value.to_string().replace("''", "'"))));
101102
},
102103
"number" => {
103104
let value = arg.utf8_text(statement_bytes)?;

0 commit comments

Comments
 (0)