Skip to content

Commit ba9bc21

Browse files
committed
add: testing for Deferred resolution of Puppet-language functions
1 parent 34dfced commit ba9bc21

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

spec/unit/pops/evaluator/deferred_resolver_spec.rb

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
require 'spec_helper'
22
require 'puppet_spec/compiler'
3+
require 'puppet_spec/files'
34

45
Puppet::Type.newtype(:test_deferred) do
56
newparam(:name)
@@ -8,8 +9,14 @@
89

910
describe Puppet::Pops::Evaluator::DeferredResolver do
1011
include PuppetSpec::Compiler
12+
include PuppetSpec::Files
1113

12-
let(:environment) { Puppet::Node::Environment.create(:testing, []) }
14+
let(:env_dir) do
15+
dir_containing('testing', 'modules' => {
16+
'testmod' => { 'functions' => { 'test.pp' => 'function testmod::test($x) { "Got: ${x}" }' } }
17+
})
18+
end
19+
let(:environment) { Puppet::Node::Environment.create(:testing, [File.join(env_dir, 'modules')]) }
1320
let(:facts) { Puppet::Node::Facts.new('node.example.com') }
1421

1522
def compile_and_resolve_catalog(code, preprocess = false)
@@ -95,4 +102,14 @@ def compile_and_resolve_catalog(code, preprocess = false)
95102
resource = catalog.resource(:test_deferred, 'deferred')
96103
expect(resource.sensitive_parameters).to eq([:value])
97104
end
105+
106+
it 'resolves deferred values that call Puppet language functions' do
107+
catalog = compile_and_resolve_catalog(<<~END, true)
108+
notify { "deferred":
109+
message => Deferred("testmod::test", ["hello"])
110+
}
111+
END
112+
113+
expect(catalog.resource(:notify, 'deferred')[:message]).to eq('Got: hello')
114+
end
98115
end

0 commit comments

Comments
 (0)