diff options
| author | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2006-04-10 21:37:29 +0000 |
|---|---|---|
| committer | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2006-04-10 21:37:29 +0000 |
| commit | 0507486ad35189c557903d0c78bd1bbd7d43b967 (patch) | |
| tree | 3555b793c684ec009dd906b9d8c28212ba242fd7 | |
| parent | ae4b12e2cd337007f32c6bdb51924969a1bddc48 (diff) | |
| download | puppet-0507486ad35189c557903d0c78bd1bbd7d43b967.tar.gz puppet-0507486ad35189c557903d0c78bd1bbd7d43b967.tar.xz puppet-0507486ad35189c557903d0c78bd1bbd7d43b967.zip | |
Fixing #117. If only one value was provided, then it was not placed in an array, yet AST::Selector expected an array. The grammar needs to have some abstraction added or something, because I seem to have encountered this bug for every ast type that supports arrays internally.
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@1097 980ebf18-57e1-0310-9a29-db15c13687c0
| -rw-r--r-- | examples/code/snippets/singleselector.pp | 22 | ||||
| -rw-r--r-- | lib/puppet/parser/ast/selector.rb | 2 | ||||
| -rwxr-xr-x | test/language/snippets.rb | 14 |
3 files changed, 38 insertions, 0 deletions
diff --git a/examples/code/snippets/singleselector.pp b/examples/code/snippets/singleselector.pp new file mode 100644 index 000000000..520a14017 --- /dev/null +++ b/examples/code/snippets/singleselector.pp @@ -0,0 +1,22 @@ +$value1 = "" +$value2 = true +$value3 = false +$value4 = yay + +$test = "yay" + +$mode1 = $value1 ? { + "" => 755 +} + +$mode2 = $value2 ? { + true => 755 +} + +$mode3 = $value3 ? { + default => 755 +} + +file { "/tmp/singleselector1": ensure => file, mode => $mode1 } +file { "/tmp/singleselector2": ensure => file, mode => $mode2 } +file { "/tmp/singleselector3": ensure => file, mode => $mode3 } diff --git a/lib/puppet/parser/ast/selector.rb b/lib/puppet/parser/ast/selector.rb index 299473fda..3adf0261c 100644 --- a/lib/puppet/parser/ast/selector.rb +++ b/lib/puppet/parser/ast/selector.rb @@ -19,6 +19,8 @@ class Puppet::Parser::AST default = nil + @values = [@values] unless @values.instance_of? AST::ASTArray + # Then look for a match in the options. @values.each { |obj| param = obj.param.safeevaluate(:scope => scope) diff --git a/test/language/snippets.rb b/test/language/snippets.rb index 220c50511..f10b12aaa 100755 --- a/test/language/snippets.rb +++ b/test/language/snippets.rb @@ -345,6 +345,20 @@ class TestSnippets < Test::Unit::TestCase } end + def snippet_singleselector(trans) + nums = %w{1 2 3} + files = nums.collect { |n| + "/tmp/singleselector%s" % n + } + + files.each { |f| + @@tmpfiles << f + assert(FileTest.exists?(f), "File %s does not exist" % f) + assert(File.stat(f).mode & 007777 == 0755, + "File %s is not 755" % f) + } + end + def snippet_falsevalues(trans) file = "/tmp/falsevaluesfalse" @@tmpfiles << file |
