summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2006-08-22 21:27:11 +0000
committerluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2006-08-22 21:27:11 +0000
commit1b2ee4bb9d9fef44bdf8217f45d6893b7609a432 (patch)
treeeeab100adbabf62c809082f8a9ee0b469d017bec /test
parentea32a38d73dc4c1dec030c2c52d339e8976b881b (diff)
downloadpuppet-1b2ee4bb9d9fef44bdf8217f45d6893b7609a432.tar.gz
puppet-1b2ee4bb9d9fef44bdf8217f45d6893b7609a432.tar.xz
puppet-1b2ee4bb9d9fef44bdf8217f45d6893b7609a432.zip
Adding "if/else" constructs. No operators, no elsif, but it is a good start, anyway.
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@1483 980ebf18-57e1-0310-9a29-db15c13687c0
Diffstat (limited to 'test')
-rwxr-xr-xtest/language/ast.rb52
-rw-r--r--test/language/parser.rb19
-rwxr-xr-xtest/language/scope.rb12
3 files changed, 83 insertions, 0 deletions
diff --git a/test/language/ast.rb b/test/language/ast.rb
index caa9cf156..5bf0c1e4f 100755
--- a/test/language/ast.rb
+++ b/test/language/ast.rb
@@ -16,6 +16,25 @@ require 'puppettest'
class TestAST < Test::Unit::TestCase
include ParserTesting
+ # A fake class that we can use for testing evaluation.
+ class FakeAST
+ attr_writer :evaluate
+
+ def evaluate(*args)
+ return @evaluate
+ end
+
+ def initialize(val = nil)
+ if val
+ @evaluate = val
+ end
+ end
+
+ def safeevaluate(*args)
+ evaluate()
+ end
+ end
+
# Test that classes behave like singletons
def test_classsingleton
parent = child1 = child2 = nil
@@ -888,6 +907,39 @@ class TestAST < Test::Unit::TestCase
objects = scope.evaluate(:ast => top)
}
end
+
+ def test_if
+ astif = nil
+ astelse = nil
+ fakeelse = FakeAST.new(:else)
+ faketest = FakeAST.new(true)
+ fakeif = FakeAST.new(:if)
+
+ assert_nothing_raised {
+ astelse = AST::Else.new(:statements => fakeelse)
+ }
+ assert_nothing_raised {
+ astif = AST::IfStatement.new(
+ :test => faketest,
+ :statements => fakeif,
+ :else => astelse
+ )
+ }
+
+ # We initialized it to true, so we should get that first
+ ret = nil
+ assert_nothing_raised {
+ ret = astif.evaluate(:scope => "yay")
+ }
+ assert_equal(:if, ret)
+
+ # Now set it to false and check that
+ faketest.evaluate = false
+ assert_nothing_raised {
+ ret = astif.evaluate(:scope => "yay")
+ }
+ assert_equal(:else, ret)
+ end
end
# $Id$
diff --git a/test/language/parser.rb b/test/language/parser.rb
index 722d95d95..4328096b5 100644
--- a/test/language/parser.rb
+++ b/test/language/parser.rb
@@ -481,6 +481,25 @@ file { "/tmp/yayness":
parser.parse
}
end
+
+ def test_parsingif
+ parser = Puppet::Parser::Parser.new()
+ exec = proc do |val|
+ %{exec { "/bin/echo #{val}": logoutput => true }}
+ end
+ str1 = %{if true { #{exec.call("true")} }}
+ ret = nil
+ assert_nothing_raised {
+ ret = parser.parse(str1)
+ }
+ assert_instance_of(Puppet::Parser::AST::IfStatement, ret)
+ str2 = %{if true { #{exec.call("true")} } else { #{exec.call("false")} }}
+ assert_nothing_raised {
+ ret = parser.parse(str2)
+ }
+ assert_instance_of(Puppet::Parser::AST::IfStatement, ret)
+ assert_instance_of(Puppet::Parser::AST::Else, ret.else)
+ end
end
# $Id$
diff --git a/test/language/scope.rb b/test/language/scope.rb
index 7fdfdfd90..bf5eadd8d 100755
--- a/test/language/scope.rb
+++ b/test/language/scope.rb
@@ -707,6 +707,18 @@ class TestScope < Test::Unit::TestCase
assert_equal("parentfoo", flat[0]["owner"], "default did not take")
end
+ # Make sure we know what we consider to be truth.
+ def test_truth
+ assert_equal(true, Puppet::Parser::Scope.true?("a string"),
+ "Strings not considered true")
+ assert_equal(true, Puppet::Parser::Scope.true?(true),
+ "True considered true")
+ assert_equal(false, Puppet::Parser::Scope.true?(""),
+ "Empty strings considered true")
+ assert_equal(false, Puppet::Parser::Scope.true?(false),
+ "false considered true")
+ end
+
if defined? ActiveRecord
# Verify that we recursively mark as collectable the results of collectable
# components.