@@ -19,10 +19,10 @@ def read_win_file_if_exists(path)
1919
2020describe '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 } \n Apply:\n #{ apply . stdout } #{ apply . stderr } "
79+ else
80+ raise "Unexpected 02c outcome. Exists=#{ out [ :exists ] } Content=#{ content . inspect } \n Apply:\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' )
0 commit comments