Use rvalue functions correctly

A bug fix in Puppet exposed that several tests were using rvalue functions
incorrectly (this was not properly checked by puppet before). This fixes those
tests.
This commit is contained in:
Patrick Carlisle 2012-08-09 14:18:30 -07:00
parent a1bab586ba
commit 09322ad943
3 changed files with 33 additions and 15 deletions

View file

@ -6,16 +6,20 @@ describe Puppet::Parser::Functions.function(:getvar) do
describe 'when calling getvar from puppet' do describe 'when calling getvar from puppet' do
it "should not compile when no arguments are passed" do it "should not compile when no arguments are passed" do
Puppet[:code] = 'getvar()' Puppet[:code] = '$foo = getvar()'
expect { scope.compiler.compile }.should raise_error(Puppet::ParseError, /wrong number of arguments/) expect {
scope.compiler.compile
}.to raise_error(Puppet::ParseError, /wrong number of arguments/)
end end
it "should not compile when too many arguments are passed" do it "should not compile when too many arguments are passed" do
Puppet[:code] = 'getvar("foo::bar", "baz")' Puppet[:code] = '$foo = getvar("foo::bar", "baz")'
expect { scope.compiler.compile }.should raise_error(Puppet::ParseError, /wrong number of arguments/) expect {
scope.compiler.compile
}.to raise_error(Puppet::ParseError, /wrong number of arguments/)
end end
it "should lookup variables in other namespaces" do it "should lookup variables in other namespaces" do
pending "Puppet doesn't appear to think getvar is an rvalue function... BUG?"
Puppet[:code] = <<-'ENDofPUPPETcode' Puppet[:code] = <<-'ENDofPUPPETcode'
class site::data { $foo = 'baz' } class site::data { $foo = 'baz' }
include site::data include site::data

View file

@ -6,22 +6,32 @@ describe Puppet::Parser::Functions.function(:has_key) do
describe 'when calling has_key from puppet' do describe 'when calling has_key from puppet' do
it "should not compile when no arguments are passed" do it "should not compile when no arguments are passed" do
Puppet[:code] = 'has_key()' Puppet[:code] = '$x = has_key()'
expect { scope.compiler.compile }.should raise_error(Puppet::ParseError, /wrong number of arguments/) expect {
scope.compiler.compile
}.to raise_error(Puppet::ParseError, /wrong number of arguments/)
end end
it "should not compile when 1 argument is passed" do it "should not compile when 1 argument is passed" do
Puppet[:code] = "has_key('foo')" Puppet[:code] = "$x = has_key('foo')"
expect { scope.compiler.compile }.should raise_error(Puppet::ParseError, /wrong number of arguments/) expect {
scope.compiler.compile
}.to raise_error(Puppet::ParseError, /wrong number of arguments/)
end end
it "should require the first value to be a Hash" do it "should require the first value to be a Hash" do
Puppet[:code] = "has_key('foo', 'bar')" Puppet[:code] = "$x = has_key('foo', 'bar')"
expect { scope.compiler.compile }.should raise_error(Puppet::ParseError, /expects the first argument to be a hash/) expect {
scope.compiler.compile
}.to raise_error(Puppet::ParseError, /expects the first argument to be a hash/)
end end
end end
describe 'when calling the function has_key from a scope instance' do describe 'when calling the function has_key from a scope instance' do
it 'should detect existing keys' do it 'should detect existing keys' do
scope.function_has_key([{'one' => 1}, 'one']).should be_true scope.function_has_key([{'one' => 1}, 'one']).should be_true
end end
it 'should detect existing keys' do it 'should detect existing keys' do
scope.function_has_key([{'one' => 1}, 'two']).should be_false scope.function_has_key([{'one' => 1}, 'two']).should be_false
end end

View file

@ -7,12 +7,16 @@ describe Puppet::Parser::Functions.function(:merge) do
describe 'when calling merge from puppet' do describe 'when calling merge from puppet' do
it "should not compile when no arguments are passed" do it "should not compile when no arguments are passed" do
Puppet[:code] = 'merge()' Puppet[:code] = '$x = merge()'
expect { scope.compiler.compile }.should raise_error(Puppet::ParseError, /wrong number of arguments/) expect {
scope.compiler.compile
}.to raise_error(Puppet::ParseError, /wrong number of arguments/)
end end
it "should not compile when 1 argument is passed" do it "should not compile when 1 argument is passed" do
Puppet[:code] = "$my_hash={'one' => 1}\nmerge($my_hash)" Puppet[:code] = "$my_hash={'one' => 1}\n$x = merge($my_hash)"
expect { scope.compiler.compile }.should raise_error(Puppet::ParseError, /wrong number of arguments/) expect {
scope.compiler.compile
}.to raise_error(Puppet::ParseError, /wrong number of arguments/)
end end
end end
describe 'when calling merge on the scope instance' do describe 'when calling merge on the scope instance' do