diff options
author | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2006-04-04 23:30:56 +0000 |
---|---|---|
committer | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2006-04-04 23:30:56 +0000 |
commit | 8db837ad7663c611f1fe92189e36158404a452cc (patch) | |
tree | 4353df4b7c670128d15be578b4ac8f63da57db86 /test/language/node.rb | |
parent | d4a5b480f2451041109d867052db2285990d01a6 (diff) | |
download | puppet-8db837ad7663c611f1fe92189e36158404a452cc.tar.gz puppet-8db837ad7663c611f1fe92189e36158404a452cc.tar.xz puppet-8db837ad7663c611f1fe92189e36158404a452cc.zip |
getting rid of the parser tree, and moving everything into the language dir
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@1070 980ebf18-57e1-0310-9a29-db15c13687c0
Diffstat (limited to 'test/language/node.rb')
-rw-r--r-- | test/language/node.rb | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/test/language/node.rb b/test/language/node.rb new file mode 100644 index 000000000..5013b190d --- /dev/null +++ b/test/language/node.rb @@ -0,0 +1,84 @@ +if __FILE__ == $0 + $:.unshift '../../lib' + $:.unshift '..' + $puppetbase = "../.." +end + +require 'puppet' +require 'puppet/parser/parser' +require 'test/unit' +require 'puppettest' + +class TestParser < Test::Unit::TestCase + include ParserTesting + + def setup + super + Puppet[:parseonly] = true + @parser = Puppet::Parser::Parser.new() + end + + def test_simple_hostname + check_parseable "host1" + check_parseable "'host2'" + check_parseable [ "'host1'", "host2" ] + check_parseable [ "'host1'", "'host2'" ] + end + + def test_qualified_hostname + check_parseable "'host.example.com'" + check_parseable [ "'host.example.com'", "host1" ] + check_parseable "'host-1.37examples.example.com'" + check_parseable "'svn.23.nu'" + check_parseable "'HOST'" + end + + def test_reject_hostname + check_nonparseable "host.example.com" + check_nonparseable "host@example.com" + check_nonparseable "\"host\"" + check_nonparseable "'$foo.example.com'" + check_nonparseable "'host1 host2'" + check_nonparseable "HOST" + end + + AST = Puppet::Parser::AST + + def check_parseable(hostnames) + unless hostnames.is_a?(Array) + hostnames = [ hostnames ] + end + assert_nothing_raised { + @parser.string = "node #{hostnames.join(" ")} { }" + } + # Strip quotes + hostnames.map! { |s| s.sub(/^'(.*)'$/, "\\1") } + ast = nil + assert_nothing_raised { + ast = @parser.parse + } + # Verify that the AST has the expected structure + # and that the leaves have the right hostnames in them + assert_kind_of(AST::ASTArray, ast) + assert_equal(1, ast.children.size) + nodedef = ast.children[0] + assert_kind_of(AST::NodeDef, nodedef) + assert_kind_of(AST::ASTArray, nodedef.names) + assert_equal(hostnames.size, nodedef.names.children.size) + hostnames.size.times do |i| + hostnode = nodedef.names.children[i] + assert_kind_of(AST::HostName, hostnode) + assert_equal(hostnames[i], hostnode.value) + end + end + + def check_nonparseable(hostname) + assert_nothing_raised { + @parser.string = "node #{hostname} { }" + } + + assert_raise(Puppet::DevError, Puppet::ParseError) { + @parser.parse + } + end +end |