summaryrefslogtreecommitdiffstats
path: root/spec
diff options
context:
space:
mode:
authorRein Henrichs <rein@puppetlabs.com>2010-06-23 15:49:53 -0700
committerJames Turnbull <james@lovedthanlost.net>2010-06-27 03:57:26 +1000
commit7faf27ce72d4b2d64d94f0dda1ad4e55aec99fd2 (patch)
treeee8b568fbf6d799ef6737340a37f291918109929 /spec
parente4b3aacd7856c8221f08771c3b7066094b898a3f (diff)
downloadpuppet-7faf27ce72d4b2d64d94f0dda1ad4e55aec99fd2.tar.gz
puppet-7faf27ce72d4b2d64d94f0dda1ad4e55aec99fd2.tar.xz
puppet-7faf27ce72d4b2d64d94f0dda1ad4e55aec99fd2.zip
[#4064] Modify confine to also allow a message and a block containing the test.
This way the test can be evaluated lazily when needed. Adds tests and documentation.
Diffstat (limited to 'spec')
-rw-r--r--spec/spec_specs/runnable_spec.rb95
1 files changed, 95 insertions, 0 deletions
diff --git a/spec/spec_specs/runnable_spec.rb b/spec/spec_specs/runnable_spec.rb
new file mode 100644
index 000000000..fd2e48888
--- /dev/null
+++ b/spec/spec_specs/runnable_spec.rb
@@ -0,0 +1,95 @@
+require File.dirname(__FILE__) + '/../spec_helper'
+
+describe PuppetTest::RunnableTest do
+ before do
+ @runnable_test = Class.new.extend(PuppetTest::RunnableTest)
+ end
+
+ describe "#confine" do
+ subject { @runnable_test }
+
+ it "should accept a hash" do
+ subject.confine({}).should_not raise_error(ArgumentError)
+ end
+
+ it "should accept a message and a block" do
+ subject.confine(""){}.should_not raise_error(ArgumentError)
+ end
+
+ end
+
+ describe "#runnable?" do
+ describe "when the superclass is not runnable" do
+ before { @runnable_test.stubs(:superclass).returns(stub("unrunnable superclass", :runnable? => false)) }
+ subject { @runnable_test.runnable? }
+
+ it { should be_false }
+ end
+
+ describe "when a confine is false" do
+ before { @runnable_test.confine(:message => false) }
+ subject { @runnable_test.runnable? }
+
+ it { should be_false }
+ end
+
+ describe "when a confine has a block that returns false" do
+ before { @runnable_test.confine(:message){ false } }
+ subject { @runnable_test.runnable? }
+
+ it { should be_false }
+ end
+
+ describe "when a confine is true and no false confines" do
+ before { @runnable_test.confine(:message => true) }
+ subject { @runnable_test.runnable? }
+
+ it { should be_true }
+ end
+
+ describe "when a confine has block that returns true and no false confines" do
+ before { @runnable_test.confine(:message){ true } }
+ subject { @runnable_test.runnable? }
+
+ it { should be_true }
+ end
+
+ end
+
+ describe "#messages" do
+ describe "before runnable? is called" do
+ subject { @runnable_test.messages }
+
+ it { should == [] }
+ end
+
+ describe "when runnable? is called and returns false" do
+ before do
+ @runnable_test.confine(:message => false)
+ @runnable_test.runnable?
+ end
+
+ subject { @runnable_test.messages }
+
+ it "should include the failed confine's message" do
+ should include(:message)
+ end
+
+ end
+
+ describe "when runnable? is called whose block returns false" do
+ before do
+ @runnable_test.confine(:message){ false }
+ @runnable_test.runnable?
+ end
+
+ subject { @runnable_test.messages }
+
+ it "should include the failed confine's message" do
+ should include(:message)
+ end
+
+ end
+
+ end
+end