diff --git a/acceptance/tests/apply/conditionals/should_evaluate_else.rb b/acceptance/tests/apply/conditionals/should_evaluate_else.rb deleted file mode 100755 index 7bdceb1d1..000000000 --- a/acceptance/tests/apply/conditionals/should_evaluate_else.rb +++ /dev/null @@ -1,15 +0,0 @@ -test_name "else clause will be reached if no expressions match" -manifest = %q{ -if( 1 == 2) { - notice('if') -} elsif(2 == 3) { - notice('elsif') -} else { - notice('else') -} -} - -apply_manifest_on(agents, manifest) do - fail_test "the else clause did not evaluate" unless stdout.include? 'else' -end - diff --git a/acceptance/tests/apply/conditionals/should_evaluate_elsif.rb b/acceptance/tests/apply/conditionals/should_evaluate_elsif.rb deleted file mode 100755 index 027e247c9..000000000 --- a/acceptance/tests/apply/conditionals/should_evaluate_elsif.rb +++ /dev/null @@ -1,15 +0,0 @@ -test_name "should evaluate the elsif block in a conditional" -manifest = %q{ -if( 1 == 3) { - notice('if') -} elsif(2 == 2) { - notice('elsif') -} else { - notice('else') -} -} - -apply_manifest_on(agents, manifest) do - fail_test "didn't evaluate elsif" unless stdout.include? 'elsif' -end - diff --git a/acceptance/tests/apply/conditionals/should_evaluate_empty.rb b/acceptance/tests/apply/conditionals/should_evaluate_empty.rb deleted file mode 100644 index 85b0792b4..000000000 --- a/acceptance/tests/apply/conditionals/should_evaluate_empty.rb +++ /dev/null @@ -1,12 +0,0 @@ -test_name "ensure that undefined variables evaluate as false" -manifest = %q{ -if $undef_var { -} else { - notice('undef') -} -} - -apply_manifest_on(agents, manifest) do - fail_test "did not evaluate as expected" unless stdout.include? 'undef' -end - diff --git a/acceptance/tests/apply/conditionals/should_evaluate_false.rb b/acceptance/tests/apply/conditionals/should_evaluate_false.rb deleted file mode 100755 index 9a64e1663..000000000 --- a/acceptance/tests/apply/conditionals/should_evaluate_false.rb +++ /dev/null @@ -1,12 +0,0 @@ -test_name "test that false evaluates to false" -manifest = %q{ -if false { -} else { - notice('false') -} -} - -apply_manifest_on(agents, manifest) do - fail_test "didn't evaluate false correcly" unless stdout.include? 'false' -end - diff --git a/acceptance/tests/apply/conditionals/should_evaluate_if.rb b/acceptance/tests/apply/conditionals/should_evaluate_if.rb deleted file mode 100755 index d0113e518..000000000 --- a/acceptance/tests/apply/conditionals/should_evaluate_if.rb +++ /dev/null @@ -1,15 +0,0 @@ -test_name = "should evaluate an if block correctly" -manifest = %q{ -if( 1 == 1) { - notice('if') -} elsif(2 == 2) { - notice('elsif') -} else { - notice('else') -} -} - -apply_manifest_on(agents, manifest) do - fail_test "didn't evaluate correctly" unless stdout.include? 'if' -end - diff --git a/acceptance/tests/apply/conditionals/should_evaluate_strings_true.rb b/acceptance/tests/apply/conditionals/should_evaluate_strings_true.rb deleted file mode 100755 index 14b753085..000000000 --- a/acceptance/tests/apply/conditionals/should_evaluate_strings_true.rb +++ /dev/null @@ -1,13 +0,0 @@ -test_name "test that the string 'false' evaluates to true" -manifest = %q{ -if 'false' { - notice('true') -} else { - notice('false') -} -} - -apply_manifest_on(agents, manifest) do - fail_test "string 'false' didn't evaluate as true" unless - stdout.include? 'true' -end diff --git a/acceptance/tests/apply/conditionals/should_evaluate_undef.rb b/acceptance/tests/apply/conditionals/should_evaluate_undef.rb deleted file mode 100755 index ba5d6403e..000000000 --- a/acceptance/tests/apply/conditionals/should_evaluate_undef.rb +++ /dev/null @@ -1,11 +0,0 @@ -test_name "empty string should evaluate as false" -manifest = %q{ -if '' { -} else { - notice('empty') -} -} - -apply_manifest_on(agents, manifest) do - fail_test "didn't evaluate as false" unless stdout.include? 'empty' -end diff --git a/spec/integration/parser/conditionals_spec.rb b/spec/integration/parser/conditionals_spec.rb new file mode 100644 index 000000000..82d950a06 --- /dev/null +++ b/spec/integration/parser/conditionals_spec.rb @@ -0,0 +1,117 @@ +require 'spec_helper' +require 'puppet_spec/compiler' +require 'matchers/resource' + +describe "Evaluation of Conditionals" do + include PuppetSpec::Compiler + include Matchers::Resource + + shared_examples_for "a catalog built with conditionals" do + it "evaluates an if block correctly" do + catalog = compile_to_catalog(<<-CODE) + if( 1 == 1) { + notify { 'if': } + } elsif(2 == 2) { + notify { 'elsif': } + } else { + notify { 'else': } + } + CODE + expect(catalog).to have_resource("Notify[if]") + end + + it "evaluates elsif block" do + catalog = compile_to_catalog(<<-CODE) + if( 1 == 3) { + notify { 'if': } + } elsif(2 == 2) { + notify { 'elsif': } + } else { + notify { 'else': } + } + CODE + expect(catalog).to have_resource("Notify[elsif]") + end + + it "reaches the else clause if no expressions match" do + catalog = compile_to_catalog(<<-CODE) + if( 1 == 2) { + notify { 'if': } + } elsif(2 == 3) { + notify { 'elsif': } + } else { + notify { 'else': } + } + CODE + expect(catalog).to have_resource("Notify[else]") + end + + it "evalutes false to false" do + catalog = compile_to_catalog(<<-CODE) + if false { + } else { + notify { 'false': } + } + CODE + expect(catalog).to have_resource("Notify[false]") + end + + it "evaluates the string 'false' as true" do + catalog = compile_to_catalog(<<-CODE) + if 'false' { + notify { 'true': } + } else { + notify { 'false': } + } + CODE + expect(catalog).to have_resource("Notify[true]") + end + + it "evaluates undefined variables as false" do + catalog = compile_to_catalog(<<-CODE) + if $undef_var { + } else { + notify { 'undef': } + } + CODE + expect(catalog).to have_resource("Notify[undef]") + end + end + + context "current parser" do + before(:each) do + Puppet[:parser] = 'current' + end + + it_behaves_like "a catalog built with conditionals" + + it "evaluates empty string as false" do + catalog = compile_to_catalog(<<-CODE) + if '' { + notify { 'true': } + } else { + notify { 'empty': } + } + CODE + expect(catalog).to have_resource("Notify[empty]") + end + end + + context "future parser" do + before(:each) do + Puppet[:parser] = 'future' + end + it_behaves_like "a catalog built with conditionals" + + it "evaluates empty string as true" do + catalog = compile_to_catalog(<<-CODE) + if '' { + notify { 'true': } + } else { + notify { 'empty': } + } + CODE + expect(catalog).to have_resource("Notify[true]") + end + end +end