Skip to content

Commit b355f42

Browse files
authored
Merge pull request #789 from fetzerms/handle_deferred_values
#775 - Explicitly resolve deferred values
2 parents f3ac73c + 5ae15cd commit b355f42

File tree

2 files changed

+35
-1
lines changed

2 files changed

+35
-1
lines changed

lib/puppet/type/concat_file.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,8 @@ def nested_merge(hash1, hash2)
296296

297297
def fragment_content(r)
298298
if r[:content].nil? == false
299-
fragment_content = r[:content]
299+
# Explicitly resolve deferred values.
300+
fragment_content = r[:content].instance_of?(Puppet::Pops::Evaluator::DeferredValue) ? r[:content].resolve : r[:content]
300301
elsif r[:source].nil? == false
301302
@source = nil
302303
Array(r[:source]).each do |source|
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# frozen_string_literal: true
2+
3+
require 'spec_helper_acceptance'
4+
5+
# For testing the deferred function call
6+
require 'digest/md5'
7+
8+
describe 'deferred function call' do
9+
attr_reader :basedir
10+
11+
before(:all) do
12+
@basedir = setup_test_directory
13+
end
14+
15+
describe 'file' do
16+
let(:pp) do
17+
<<-MANIFEST
18+
concat { '#{basedir}/deferred_file': }
19+
20+
concat::fragment { '1':
21+
target => '#{basedir}/deferred_file',
22+
content => Deferred('md5', ['test']),
23+
}
24+
MANIFEST
25+
end
26+
27+
it 'idempotent, file matches' do
28+
idempotent_apply(pp)
29+
expect(file("#{basedir}/deferred_file")).to be_file
30+
expect(file("#{basedir}/deferred_file").content).to match Digest::MD5.hexdigest('test')
31+
end
32+
end
33+
end

0 commit comments

Comments
 (0)