Skip to content

Commit 9c5b17d

Browse files
committed
03c test added
1 parent 2aca2e9 commit 9c5b17d

File tree

3 files changed

+55
-3
lines changed

3 files changed

+55
-3
lines changed

spec/acceptance/deferred_spec.rb

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@ def read_win_file_if_exists(path)
1919

2020
describe 'deferred values with dsc_lite' do
2121
let(:control_manifest) { read_fixture('01_file_deferred.pp') }
22+
let(:dsc_control_manifest_epp) { read_fixture('01b_file_deferred_with_epp.pp') }
2223
let(:dsc_deferred_direct) { read_fixture('02_dsc_deferred_direct.pp') }
23-
let(:dsc_deferred_inline) { read_fixture('02b_dsc_deferred_inline.pp') } # <— NEW
24-
let(:dsc_deferred_stringified) { read_fixture('03a_dsc_deferred_stringified.pp') }
25-
let(:dsc_deferred_bad_unwrap) { read_fixture('03b_dsc_deferred_bad_unwrap.pp') }
24+
let(:dsc_deferred_inline) { read_fixture('02b_dsc_deferred_inline.pp') } # ← NEW
25+
let(:dsc_deferred_epp_inline) { read_fixture('02c_dsc_deferred_epp_inline.pp') } # ← NEW
2626

2727
it 'control (01): native file + Deferred resolves to hello-file' do
2828
result = idempotent_apply(control_manifest)
@@ -32,6 +32,14 @@ def read_win_file_if_exists(path)
3232
expect(out[:content].strip).to eq('hello-file')
3333
end
3434

35+
it 'control (01b): native file + Deferred resolves to hello-file (EPP)' do
36+
result = idempotent_apply_debug(dsc_control_manifest_epp)
37+
expect(result.exit_code).to eq(0)
38+
out = read_win_file_if_exists('C:/Temp/deferred_ok.txt')
39+
expect(out[:exists]).to be(true)
40+
expect(out[:content].strip).to eq('hello-file')
41+
end
42+
3543
it '02: passing Deferred via variable to DSC resolves to hello-dsc (otherwise flag bug)' do
3644
apply = apply_manifest(dsc_deferred_direct)
3745
out = read_win_file_if_exists('C:/Temp/from_dsc.txt')
@@ -59,6 +67,20 @@ def read_win_file_if_exists(path)
5967
end
6068
end
6169

70+
# NEW 02c: inline Deferred on the DSC property (no variable intermediary)
71+
it '02c: passing a Deferred inline while calling an epp' do
72+
apply = apply_manifest_debug(dsc_deferred_epp_inline)
73+
out = read_win_file_if_exists('C:/Temp/from_dsc_inline.txt')
74+
content = out[:content].strip
75+
if out[:exists] && content == 'hello-dsc-epp'
76+
expect(true).to be(true)
77+
elsif out[:exists] && content =~ %r{Deferred\s*\(|Puppet::Pops::Types::Deferred}i
78+
raise "BUG: 02c wrote stringified Deferred: #{content.inspect}\nApply:\n#{apply.stdout}#{apply.stderr}"
79+
else
80+
raise "Unexpected 02c outcome. Exists=#{out[:exists]} Content=#{content.inspect}\nApply:\n#{apply.stdout}#{apply.stderr}"
81+
end
82+
end
83+
6284
it '03a: stringifying a Deferred writes the function form (reproduces customer report)' do
6385
apply_manifest(dsc_deferred_stringified)
6486
out = read_win_file_if_exists('C:/Temp/from_dsc_var_string.txt')
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# spec/fixtures/manifests/01_file_deferred.pp
2+
file { 'C:/Temp':
3+
ensure => directory,
4+
}
5+
6+
$deferred = Deferred('join', [['hello','-','file'], ''])
7+
8+
file { 'C:/Temp/deferred_ok.txt':
9+
ensure => file,
10+
content => Deferred('inline_epp', ['<%= $content.unwrap %>', { content => $deferred }]),
11+
require => File['C:/Temp'],
12+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# spec/fixtures/manifests/02_dsc_deferred_direct.pp
2+
file { 'C:/Temp':
3+
ensure => directory,
4+
}
5+
6+
$deferred = Deferred('join', [['hello','-','dsc', '-', 'epp'], ''])
7+
8+
dsc { 'WriteFileViaDSC':
9+
resource_name => 'File',
10+
module => 'PSDesiredStateConfiguration',
11+
properties => {
12+
'DestinationPath' => 'C:\Temp\from_dsc.txt',
13+
'Type' => 'File',
14+
'Ensure' => 'Present',
15+
'Contents' => Deferred('inline_epp', ['<%= $content.unwrap %>', { content => $deferred }]),
16+
},
17+
require => File['C:/Temp'],
18+
}

0 commit comments

Comments
 (0)