diff options
| author | Brice Figureau <brice-puppet@daysofwonder.com> | 2009-06-03 21:10:36 +0200 |
|---|---|---|
| committer | James Turnbull <james@lovedthanlost.net> | 2009-06-06 09:52:53 +1000 |
| commit | f9516d49a02facb43e2856766b6439673450fdd1 (patch) | |
| tree | 06df981d0a51f55d8a749706ae7d349e6b5401ec /spec/unit/parser/ast | |
| parent | b5855ec1a5af2bec6c4ac35f8e6a885999b09bf9 (diff) | |
| download | puppet-f9516d49a02facb43e2856766b6439673450fdd1.tar.gz puppet-f9516d49a02facb43e2856766b6439673450fdd1.tar.xz puppet-f9516d49a02facb43e2856766b6439673450fdd1.zip | |
Make sure virtual and rails query use tags when tag are searched
Up to now, when trying to match with tags:
File<<| tag == 'value' |>>
in fact we were querying parameters. Hopefully all the user tags
are stored in parameters so it was working.
But it wasn't possible to search on auto-tags (like class name).
This patch makes sure searching by tag is done on tags both on the
rails side and the resource side.
Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
Diffstat (limited to 'spec/unit/parser/ast')
| -rwxr-xr-x | spec/unit/parser/ast/collexpr.rb | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/spec/unit/parser/ast/collexpr.rb b/spec/unit/parser/ast/collexpr.rb index e45203492..4dfc1e97a 100755 --- a/spec/unit/parser/ast/collexpr.rb +++ b/spec/unit/parser/ast/collexpr.rb @@ -74,6 +74,27 @@ describe Puppet::Parser::AST::CollExpr do end end + describe "when evaluating with tags" do + before :each do + @tag = stub 'tag', :safeevaluate => 'tag' + @value = stub 'value', :safeevaluate => 'value' + + @resource = stub 'resource' + @resource.stubs(:tagged?).with("value").returns(true) + end + + it "should produce a textual representation of the expression" do + collexpr = ast::CollExpr.new(:test1 => @tag, :test2 => @value, :oper=>"==") + result = collexpr.evaluate(@scope) + result[0].should == "puppet_tags.name = 'value'" + end + + it "should inspect resource tags if the query term is on tags" do + collexpr = ast::CollExpr.new(:test1 => @tag, :test2 => @value, :oper => "==") + collexpr.evaluate(@scope)[1].call(@resource).should be_true + end + end + [:exported,:virtual].each do |mode| it "should check for array member equality if resource parameter is an array for == in mode #{mode}" do array = mock 'array', :safeevaluate => "array" |
