summaryrefslogtreecommitdiffstats
path: root/spec
diff options
context:
space:
mode:
authorPaul Berry <paul@puppetlabs.com>2010-09-01 14:18:41 -0700
committerPaul Berry <paul@puppetlabs.com>2010-09-01 14:27:37 -0700
commit25048ecc40db746f7e88bb6c5e1fc4f2c0150a4f (patch)
tree11bda23eca92a698966695662c441c8b0066b70b /spec
parentfb9034731ddae41f1009745eb8eb1ea53aa05cfb (diff)
downloadpuppet-25048ecc40db746f7e88bb6c5e1fc4f2c0150a4f.tar.gz
puppet-25048ecc40db746f7e88bb6c5e1fc4f2c0150a4f.tar.xz
puppet-25048ecc40db746f7e88bb6c5e1fc4f2c0150a4f.zip
[#4685] Classes, defines, and nodes allowed inside of non-evaluated conditionals
Previously, ASTArray#evaluate() was responsible for checking whether the user had tried to declare a class, define, or node in a prohibited location (such as a conditional construct). This meant that errors would only be reported to the user if the conditional code was actually evaluated. Moved the checking into the parser, so that errors are always reported.
Diffstat (limited to 'spec')
-rwxr-xr-xspec/integration/parser/compiler_spec.rb13
1 files changed, 12 insertions, 1 deletions
diff --git a/spec/integration/parser/compiler_spec.rb b/spec/integration/parser/compiler_spec.rb
index 266347c60..ffff4d845 100755
--- a/spec/integration/parser/compiler_spec.rb
+++ b/spec/integration/parser/compiler_spec.rb
@@ -81,7 +81,7 @@ describe Puppet::Parser::Compiler do
Puppet::Parser::Compiler.compile(node).version.should == 2
end
- it "should not allow classes inside conditional constructs" do
+ it "should not allow classes inside evaluated conditional constructs" do
Puppet[:code] = <<-PP
if true {
class foo {
@@ -91,4 +91,15 @@ describe Puppet::Parser::Compiler do
lambda { Puppet::Parser::Compiler.compile(Puppet::Node.new("mynode")) }.should raise_error(Puppet::Error)
end
+
+ it "should not allow classes inside unevaluated conditional constructs" do
+ Puppet[:code] = <<-PP
+ if false {
+ class foo {
+ }
+ }
+ PP
+
+ lambda { Puppet::Parser::Compiler.compile(Puppet::Node.new("mynode")) }.should raise_error(Puppet::Error)
+ end
end