diff options
Diffstat (limited to 'test/rails/ast.rb')
-rwxr-xr-x | test/rails/ast.rb | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/test/rails/ast.rb b/test/rails/ast.rb new file mode 100755 index 000000000..0493237f5 --- /dev/null +++ b/test/rails/ast.rb @@ -0,0 +1,74 @@ +#!/usr/bin/env ruby + +$:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/ + +require 'puppettest' +require 'puppet/rails' +require 'puppet/parser/parser' +require 'puppettest/resourcetesting' +require 'puppettest/parsertesting' +require 'puppettest/railstesting' +require 'puppettest/support/collection' + +class TestRailsAST < PuppetTest::TestCase + confine "Missing rails" => Puppet.features.rails? + include PuppetTest::RailsTesting + include PuppetTest::ParserTesting + include PuppetTest::ResourceTesting + include PuppetTest::Support::Collection + + def test_exported_collexp + railsinit + Puppet[:storeconfigs] = true + @interp, @scope, @source = mkclassframing + + # make a rails resource + railsresource "file", "/tmp/testing", :owner => "root", :group => "bin", + :mode => "644" + + run_collection_queries(:exported) do |string, result, query| + code = nil + str = nil + + # We don't support anything but the title in rails right now + retval = nil + bad = false + # Figure out if the search is for anything rails will ignore + string.scan(/(\w+) [!=]= \w+/) do |s| + unless s[0] == "title" + bad = true + break + end + end + + # And if it is, make sure we throw an error. + if bad + assert_raise(Puppet::ParseError, "Evaluated '#{string}'") do + str, code = query.evaluate :scope => @scope + end + next + else + assert_nothing_raised("Could not evaluate '#{string}'") do + str, code = query.evaluate :scope => @scope + end + end + assert_nothing_raised("Could not find resource") do + retval = Puppet::Rails::Resource.find(:all, + :include => :param_values, + :conditions => str) + end + + if result + assert_equal(1, retval.length, "Did not find resource with '#{string}'") + res = retval.shift + + assert_equal("file", res.restype) + assert_equal("/tmp/testing", res.title) + else + assert_equal(0, retval.length, "found a resource with '#{string}'") + end + end + end +end + +# $Id$ |