diff options
| author | Rein Henrichs <rein@puppetlabs.com> | 2010-06-23 15:49:53 -0700 |
|---|---|---|
| committer | James Turnbull <james@lovedthanlost.net> | 2010-06-27 03:57:26 +1000 |
| commit | 7faf27ce72d4b2d64d94f0dda1ad4e55aec99fd2 (patch) | |
| tree | ee8b568fbf6d799ef6737340a37f291918109929 /spec | |
| parent | e4b3aacd7856c8221f08771c3b7066094b898a3f (diff) | |
| download | puppet-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.rb | 95 |
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 |
