diff options
Diffstat (limited to 'test/puppettest.rb')
| -rw-r--r-- | test/puppettest.rb | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/test/puppettest.rb b/test/puppettest.rb index 6f6b961f8..ccaa027cd 100644 --- a/test/puppettest.rb +++ b/test/puppettest.rb @@ -561,6 +561,112 @@ module FileTesting end end +module ParserTesting + include TestPuppet + AST = Puppet::Parser::AST + + def astarray + AST::ASTArray.new( + :children => [] + ) + end + + def classobj(name, args = {}) + unless args.include?(:name) + args[:name] = nameobj(name) + end + unless args.include?(:code) + args[:code] = AST::ASTArray.new( + :children => [ + varobj("%svar" % name, "%svalue" % name), + fileobj("/%s" % name) + ] + ) + end + assert_nothing_raised("Could not create class %s" % name) { + return AST::ClassDef.new(args) + } + end + + def compobj(name, args = {}) + args[:name] = nameobj(name) + args[:code] = AST::ASTArray.new( + :children => [ + varobj("%svar" % name, "%svalue" % name), + fileobj("/%s" % name) + ] + ) + assert_nothing_raised("Could not create compdef %s" % name) { + return AST::CompDef.new(args) + } + end + + def fileobj(path, hash = {"owner" => "root"}) + assert_nothing_raised("Could not create file %s" % path) { + return AST::ObjectDef.new( + :name => stringobj(path), + :type => nameobj("file"), + :params => objectinst(hash) + ) + } + end + + def nameobj(name) + assert_nothing_raised("Could not create name %s" % name) { + return AST::Name.new( + :value => name + ) + } + end + + def nodeobj(name) + assert_nothing_raised("Could not create node %s" % name) { + return AST::NodeDef.new( + :names => nameobj(name), + :code => AST::ASTArray.new( + :children => [ + varobj("%svar" % name, "%svalue" % name), + fileobj("/%s" % name) + ] + ) + ) + } + end + + def objectinst(hash) + assert_nothing_raised("Could not create object instance") { + params = hash.collect { |param, value| + objectparam(param, value) + } + return AST::ObjectInst.new( + :children => params + ) + } + end + + def objectparam(param, value) + assert_nothing_raised("Could not create param %s" % param) { + return AST::ObjectParam.new( + :param => nameobj(param), + :value => stringobj(value) + ) + } + end + + def stringobj(value) + AST::String.new(:value => value) + end + + def varobj(name, value) + assert_nothing_raised("Could not create %s code" % name) { + return AST::VarDef.new( + :name => nameobj(name), + :value => stringobj(value) + ) + } + end +end + class PuppetTestSuite attr_accessor :subdir |
