summaryrefslogtreecommitdiff
path: root/spec/unit
diff options
context:
space:
mode:
authorAndrew Parker <andy@puppetlabs.com>2014-10-16 14:20:00 -0700
committerAndrew Parker <andy@puppetlabs.com>2014-10-16 14:20:00 -0700
commita40cfd624fbc7380690d76a6cb691225e0e9eeba (patch)
treec1e9faf3a6d8d4dbe1bca3809f9039afafdbbc28 /spec/unit
parent873a93ed5b5f0bdbded4bc739a601ef77cd19555 (diff)
downloadpuppet-a40cfd624fbc7380690d76a6cb691225e0e9eeba.tar.gz
(maint) Only test lookup() with future parser
The lookup function only works when the future parser is in effect. This changes the spec tests to turn on the future parser.
Diffstat (limited to 'spec/unit')
-rw-r--r--spec/unit/parser/functions/lookup_spec.rb25
1 files changed, 13 insertions, 12 deletions
diff --git a/spec/unit/parser/functions/lookup_spec.rb b/spec/unit/parser/functions/lookup_spec.rb
index b6d909b6f..54ea55423 100644
--- a/spec/unit/parser/functions/lookup_spec.rb
+++ b/spec/unit/parser/functions/lookup_spec.rb
@@ -8,6 +8,7 @@ describe "lookup function" do
before(:each) do
Puppet[:binder] = true
+ Puppet[:parser] = 'future'
end
it "must be called with at least a name to lookup" do
@@ -46,9 +47,9 @@ describe "lookup function" do
expect(scope.function_lookup(['a_value'])).to eq('from_hiera')
end
- it "returns :undef when the requested value is not bound and undef is accepted" do
+ it "returns nil when the requested value is not bound and undef is accepted" do
scope = scope_with_injections_from(bound(bind_single("a_value", "something")))
- expect(scope.function_lookup(['not_bound_value',{'accept_undef' => true}])).to eq(:undef)
+ expect(scope.function_lookup(['not_bound_value',{'accept_undef' => true}])).to eq(nil)
end
it "fails if the requested value is not bound and undef is not allowed" do
@@ -84,35 +85,35 @@ describe "lookup function" do
it "yields to a given lambda and returns the result" do
scope = scope_with_injections_from(bound(bind_single("a_value", "something")))
- expect(scope.function_lookup(['a_value', ast_lambda('|$x|{something_else}')])).to eq('something_else')
+ expect(scope.function_lookup(['a_value', ast_lambda(scope, '|$x|{something_else}')])).to eq('something_else')
end
it "fails if given lambda produces undef" do
scope = scope_with_injections_from(bound(bind_single("a_value", "something")))
expect do
- scope.function_lookup(['a_value', ast_lambda('|$x|{undef}')])
+ scope.function_lookup(['a_value', ast_lambda(scope, '|$x|{undef}')])
end.to raise_error(/did not find a value for the name 'a_value'/)
end
it "yields name and result to a given lambda" do
scope = scope_with_injections_from(bound(bind_single("a_value", "something")))
- expect(scope.function_lookup(['a_value', ast_lambda('|$name, $result|{[$name, $result]}')])).to eq(['a_value', 'something'])
+ expect(scope.function_lookup(['a_value', ast_lambda(scope, '|$name, $result|{[$name, $result]}')])).to eq(['a_value', 'something'])
end
it "yields name and result and default to a given lambda" do
scope = scope_with_injections_from(bound(bind_single("a_value", "something")))
expect(scope.function_lookup(['a_value', {'default' => 'cigar'},
- ast_lambda('|$name, $result, $d|{[$name, $result, $d]}')])).to eq(['a_value', 'something', 'cigar'])
+ ast_lambda(scope, '|$name, $result, $d|{[$name, $result, $d]}')])).to eq(['a_value', 'something', 'cigar'])
end
it "yields to a given lambda and returns the result when giving name and type" do
scope = scope_with_injections_from(bound(bind_single("a_value", "something")))
- expect(scope.function_lookup(['a_value', 'String', ast_lambda('|$x|{something_else}')])).to eq('something_else')
+ expect(scope.function_lookup(['a_value', 'String', ast_lambda(scope, '|$x|{something_else}')])).to eq('something_else')
end
it "yields :undef when value is not found and using a lambda" do
scope = scope_with_injections_from(bound(bind_single("a_value", "something")))
- expect(scope.function_lookup(['not_bound_value', ast_lambda('|$x|{ if $x == undef {good} else {bad}}')])).to eq('good')
+ expect(scope.function_lookup(['not_bound_value', ast_lambda(scope, '|$x|{ if $x == undef {good} else {bad}}')])).to eq('good')
end
def scope_with_injections_from(binder)
@@ -137,10 +138,10 @@ describe "lookup function" do
Puppet::Pops::Binder::Binder.new(layered_bindings)
end
- def ast_lambda(puppet_source)
+ def ast_lambda(scope, puppet_source)
puppet_source = "fake_func() " + puppet_source
- model = Puppet::Pops::Parser::EvaluatingParser.new().parse_string(puppet_source, __FILE__).current
- model = model.body.lambda
- Puppet::Pops::Model::AstTransformer.new(@file_source, nil).transform(model)
+ evaluator = Puppet::Pops::Parser::EvaluatingParser.new()
+ model = evaluator.parse_string(puppet_source, __FILE__).current
+ evaluator.closure(model.body.lambda, scope)
end
end