diff options
Diffstat (limited to 'vendor/plugins/rspec/spec')
50 files changed, 4922 insertions, 0 deletions
diff --git a/vendor/plugins/rspec/spec/autotest/autotest_helper.rb b/vendor/plugins/rspec/spec/autotest/autotest_helper.rb new file mode 100644 index 000000000..b7b873d9f --- /dev/null +++ b/vendor/plugins/rspec/spec/autotest/autotest_helper.rb @@ -0,0 +1,8 @@ +require 'spec_helper' +begin + require 'autotest' +rescue LoadError + raise "You must install ZenTest to use autotest" +end +require 'autotest/rspec' +require 'spec/autotest/autotest_matchers' diff --git a/vendor/plugins/rspec/spec/autotest/autotest_matchers.rb b/vendor/plugins/rspec/spec/autotest/autotest_matchers.rb new file mode 100644 index 000000000..2bfca4ac3 --- /dev/null +++ b/vendor/plugins/rspec/spec/autotest/autotest_matchers.rb @@ -0,0 +1,38 @@ +module Spec + module Matchers + class AutotestMappingMatcher + def initialize(specs) + @specs = specs + end + + def to(file) + @file = file + self + end + + def matches?(autotest) + @autotest = prepare(autotest) + @actual = autotest.test_files_for(@file) + @actual == @specs + end + + def failure_message + "expected #{@autotest.class} to map #{@specs.inspect} to #{@file.inspect}\ngot #{@actual.inspect}" + end + + private + + def prepare(autotest) + find_order = @specs.dup << @file + autotest.instance_eval { @find_order = find_order } + autotest + end + + end + + def map_specs(specs) + AutotestMappingMatcher.new(specs) + end + + end +end
\ No newline at end of file diff --git a/vendor/plugins/rspec/spec/autotest/failed_results_re_spec.rb b/vendor/plugins/rspec/spec/autotest/failed_results_re_spec.rb new file mode 100644 index 000000000..f4a1488e8 --- /dev/null +++ b/vendor/plugins/rspec/spec/autotest/failed_results_re_spec.rb @@ -0,0 +1,31 @@ +require 'spec/autotest/autotest_helper' + +describe "failed_results_re" do + it "should match a failure" do + re = Autotest::Rspec.new.failed_results_re + re =~ "1)\n'this example' FAILED\nreason\n/path.rb:37:\n\n" + $1.should == "this example" + $2.should == "reason\n/path.rb:37:" + end + + it "should match a failure when matcher outputs multiple lines" do + re = Autotest::Rspec.new.failed_results_re + re =~ "1)\n'other example' FAILED\n\nreason line 1\nreason line 2\n\n(additional info)\n/path.rb:37:\n\n" + $1.should == "other example" + $2.should == "reason line 1\nreason line 2\n\n(additional info)\n/path.rb:37:" + end + + it "should match an Error" do + re = Autotest::Rspec.new.failed_results_re + re =~ "1)\nRuntimeError in 'this example'\nreason\n/path.rb:37:\n\n" + $1.should == "this example" + $2.should == "reason\n/path.rb:37:" + end + + it "should match an Error that doesn't end in Error" do + re = Autotest::Rspec.new.failed_results_re + re =~ "1)\nInvalidArgument in 'this example'\nreason\n/path.rb:37:\n\n" + $1.should == "this example" + $2.should == "reason\n/path.rb:37:" + end +end
\ No newline at end of file diff --git a/vendor/plugins/rspec/spec/spec/dsl/main_spec.rb b/vendor/plugins/rspec/spec/spec/dsl/main_spec.rb new file mode 100644 index 000000000..752b07f88 --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/dsl/main_spec.rb @@ -0,0 +1,95 @@ +require 'spec_helper' + +module Spec + module DSL + describe Main do + before(:each) do + @main = Class.new do; include Spec::DSL::Main; end + end + + [:describe, :context].each do |method| + describe "##{method}" do + it "should delegate to Spec::Example::ExampleGroupFactory.create_example_group" do + block = lambda {|a,b|} + Spec::Example::ExampleGroupFactory.should_receive(:create_example_group).with( + "The ExampleGroup", hash_including(:location), &block + ) + @main.__send__ method, "The ExampleGroup", &block + end + + it "raises with no description" do + block = lambda {|a,b|} + lambda do + @main.__send__ method, &block + end.should raise_error(ArgumentError, /No description supplied for example group declared on #{__FILE__}:#{__LINE__ - 1}/) + end + end + end + + [:share_examples_for, :shared_examples_for].each do |method| + describe "##{method}" do + it "should create a shared ExampleGroup" do + block = lambda {|a,b|} + Spec::Example::ExampleGroupFactory.should_receive(:create_shared_example_group).with( + "shared group", hash_including(:location), &block + ) + @main.__send__ method, "shared group", &block + end + end + end + + describe "#describe; with RUBY_VERSION = 1.9" do + it "includes an enclosing module into the block's scope" do + Spec::Ruby.stub!(:version).and_return("1.9") + + module Foo; module Bar; end; end + + Foo::Bar.should_receive(:included).with do |*args| + included_by = args.last + included_by.description.should == "this example group" + end + + module Foo + module Bar + describe("this example group") do; end + end + end + end + end + + + describe "#share_as" do + def self.next_group_name + @group_number ||= 0 + @group_number += 1 + "Group#{@group_number}" + end + + def group_name + @group_name ||= self.class.next_group_name + end + + it "registers a shared ExampleGroup" do + block = lambda {|a,b|} + Spec::Example::ExampleGroupFactory.should_receive(:create_shared_example_group).with( + group_name, hash_including(:location), &block + ) + @main.share_as group_name, &block + end + + it "creates a constant that points to a Module" do + group = @main.share_as group_name do end + Object.const_get(group_name).should equal(group) + end + + it "complains if you pass it a not-constantizable name" do + lambda do + @group = @main.share_as "Non Constant" do end + end.should raise_error(NameError, /The first argument to share_as must be a legal name for a constant/) + end + + end + end + end +end +
\ No newline at end of file diff --git a/vendor/plugins/rspec/spec/spec/example/example_group_proxy_spec.rb b/vendor/plugins/rspec/spec/spec/example/example_group_proxy_spec.rb new file mode 100644 index 000000000..6af4ef181 --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/example/example_group_proxy_spec.rb @@ -0,0 +1,107 @@ +require 'spec_helper' + +module Spec + module Example + describe ExampleGroupProxy do + before(:each) do + @group = stub("example group").as_null_object + end + + attr_reader :group + def proxy + @proxy ||= ExampleGroupProxy.new(@group) + end + + describe "#description" do + it "provides the example group's description" do + group.stub!(:description => "the description") + proxy.description.should == "the description" + end + end + + describe "#nested_descriptions" do + it "provides the example group's nested_descriptions" do + group.stub!(:nested_descriptions => ["the description"]) + proxy.nested_descriptions.should == ["the description"] + end + end + + describe "#filtered_description (DEPRECATED)" do + before(:each) do + Spec.stub!(:deprecate) + end + + it "is deprecated" do + Spec.should_receive(:deprecate) + proxy.filtered_description(/(ignore)/) + end + + it "builds the description from the group's nested_descriptions" do + group.stub!(:nested_descriptions => ["ignore","the","description"]) + proxy.filtered_description(/(ignore)/).should == "the description" + end + + it "filters out description parts that match the supplied regexp" do + group.stub!(:nested_descriptions => ["ignore the","description"]) + proxy.filtered_description(/(ignore )/).should == "the description" + end + end + + describe "#examples" do + it "provides a collection of example group proxies" do + group.stub!(:example_proxies => ["array","of","proxies"]) + proxy.examples.should == ["array","of","proxies"] + end + end + + describe "#backtrace (deprecated - use #location)" do + before(:each) do + Spec.stub!(:deprecate) + end + + it "provides the location of the declaration of this group" do + group.stub!(:location => "path/to/location:37") + proxy.backtrace.should == "path/to/location:37" + end + + it "warns deprecation" do + Spec.should_receive(:deprecate) + group.stub!(:location => "path/to/location:37") + proxy.backtrace + end + end + + describe "#location" do + it "provides the location of the declaration of this group" do + group.stub!(:location => "path/to/location:37") + proxy.location.should == "path/to/location:37" + end + end + + describe "#options" do + it "provides the options passed to the example group declaration" do + group.stub!(:options => {:a => 'b'}) + proxy.options.should == {:a => 'b'} + end + + it "excludes :location" do + group.stub!(:options => {:location => 'b'}) + proxy.options.should == {} + end + + it "excludes :scope" do + group.stub!(:options => {:scope => 'b'}) + proxy.options.should == {} + end + + it "preserves the original hash" do + hash = {:a => 'b', :location => 'here', :scope => 'tiny'} + group.stub!(:options => hash) + proxy.options.should == {:a => 'b'} + hash.should == {:a => 'b', :location => 'here', :scope => 'tiny'} + end + end + + end + end +end diff --git a/vendor/plugins/rspec/spec/spec/example/example_proxy_spec.rb b/vendor/plugins/rspec/spec/spec/example/example_proxy_spec.rb new file mode 100644 index 000000000..de845c9e2 --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/example/example_proxy_spec.rb @@ -0,0 +1,57 @@ +require 'spec_helper' + +module Spec + module Example + + describe ExampleProxy do + + describe "#description" do + it "provides the submitted description" do + proxy = ExampleProxy.new("the description") + proxy.description.should == "the description" + end + end + + describe "#update" do + it "updates the description" do + proxy = ExampleProxy.new("old description") + proxy.update("new description") + proxy.description.should == "new description" + end + end + + describe "#options" do + it "provides the submitted options" do + proxy = ExampleProxy.new(:ignore, {:these => :options}) + proxy.options.should == {:these => :options} + end + end + + describe "#backtrace (DEPRECATED - use #location)" do + before(:each) do + Spec.stub!(:deprecate) + end + + it "is deprecated" do + Spec.should_receive(:deprecate) + proxy = ExampleProxy.new(:ignore, {}, "path/to/location:37") + proxy.backtrace + end + + it "provides the location of the declaration of this group" do + proxy = ExampleProxy.new(:ignore, {}, "path/to/location:37") + proxy.backtrace.should == "path/to/location:37" + end + end + + describe "#location" do + it "provides the location of the declaration of this group" do + proxy = ExampleProxy.new(:ignore, {}, "path/to/location:37") + proxy.location.should == "path/to/location:37" + end + end + + end + + end +end diff --git a/vendor/plugins/rspec/spec/spec/example/helper_method_spec.rb b/vendor/plugins/rspec/spec/spec/example/helper_method_spec.rb new file mode 100644 index 000000000..3653aec71 --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/example/helper_method_spec.rb @@ -0,0 +1,24 @@ +require 'spec_helper' + +# This was added to prove that http://rspec.lighthouseapp.com/projects/5645/tickets/211 +# was fixed in ruby 1.9.1 + +module HelperMethodExample + describe "a helper method" do + def helper_method + "received call" + end + + it "is available to examples in the same group" do + helper_method.should == "received call" + end + + describe "from a nested group" do + it "is available to examples in a nested group" do + helper_method.should == "received call" + end + end + + end +end + diff --git a/vendor/plugins/rspec/spec/spec/example/subject_spec.rb b/vendor/plugins/rspec/spec/spec/example/subject_spec.rb new file mode 100644 index 000000000..c0e4fd800 --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/example/subject_spec.rb @@ -0,0 +1,103 @@ +require 'spec_helper' + +module Spec + module Example + describe "implicit subject" do + describe "with a class" do + it "returns an instance of the class" do + group = Class.new(ExampleGroupDouble).describe(Array) + example = group.new(ExampleProxy.new) + example.subject.should == [] + end + end + + describe "with a Module" do + it "returns the Module" do + group = Class.new(ExampleGroupDouble).describe(Enumerable) + example = group.new(ExampleProxy.new) + example.subject.should == Enumerable + end + end + + describe "with a string" do + it "return the string" do + group = Class.new(ExampleGroupDouble).describe('foo') + example = group.new(ExampleProxy.new) + example.subject.should == 'foo' + end + end + + describe "with a number" do + it "returns the number" do + group = Class.new(ExampleGroupDouble).describe(15) + example = group.new(ExampleProxy.new) + example.subject.should == 15 + end + end + + end + + describe "explicit subject" do + describe "defined in a top level group" do + it "replaces the implicit subject in that group" do + group = Class.new(ExampleGroupDouble).describe(Array) + group.subject { [1,2,3] } + example = group.new(ExampleProxy.new) + example.subject.should == [1,2,3] + end + end + + describe "defined in a top level group" do + before(:each) do + @group = Class.new do + extend Spec::Example::Subject::ExampleGroupMethods + include Spec::Example::Subject::ExampleMethods + class << self + def described_class + Array + end + end + def described_class + self.class.described_class + end + + subject { + [1,2,3] + } + end + end + + it "is available in a nested group (subclass)" do + nested_group = Class.new(@group) + + example = nested_group.new + example.subject.should == [1,2,3] + end + + it "is available in a doubly nested group (subclass)" do + nested_group = Class.new(@group) + doubly_nested_group = Class.new(nested_group) + + example = doubly_nested_group.new + example.subject.should == [1,2,3] + end + end + end + + describe ".its (to access subject's attributes)" do + with_sandboxed_options do + it "passes when expectation should pass" do + group = Class.new(ExampleGroupDouble).describe(Array) + child = group.its(:length) { should == 0 } + child.run(options).should == true + end + + it "fails when expectation should fail" do + group = Class.new(ExampleGroupDouble).describe(Array) + child = group.its(:length) { should == 1 } + child.run(options).should == false + end + end + end + end +end diff --git a/vendor/plugins/rspec/spec/spec/expectations/extensions/kernel_spec.rb b/vendor/plugins/rspec/spec/spec/expectations/extensions/kernel_spec.rb new file mode 100644 index 000000000..9a0ed3ce5 --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/expectations/extensions/kernel_spec.rb @@ -0,0 +1,45 @@ +require 'spec_helper' + +describe Object, "#should" do + before(:each) do + @target = "target" + @matcher = mock("matcher") + @matcher.stub!(:matches?).and_return(true) + @matcher.stub!(:failure_message_for_should) + end + + it "accepts and interacts with a matcher" do + @matcher.should_receive(:matches?).with(@target).and_return(true) + @target.should @matcher + end + + it "asks for a failure_message_for_should when matches? returns false" do + @matcher.should_receive(:matches?).with(@target).and_return(false) + @matcher.should_receive(:failure_message_for_should).and_return("the failure message") + lambda { + @target.should @matcher + }.should fail_with("the failure message") + end +end + +describe Object, "#should_not" do + before(:each) do + @target = "target" + @matcher = mock("matcher") + end + + it "accepts and interacts with a matcher" do + @matcher.should_receive(:matches?).with(@target).and_return(false) + @matcher.stub!(:failure_message_for_should_not) + + @target.should_not @matcher + end + + it "asks for a failure_message_for_should_not when matches? returns true" do + @matcher.should_receive(:matches?).with(@target).and_return(true) + @matcher.should_receive(:failure_message_for_should_not).and_return("the failure message for should not") + lambda { + @target.should_not @matcher + }.should fail_with("the failure message for should not") + end +end diff --git a/vendor/plugins/rspec/spec/spec/expectations/handler_spec.rb b/vendor/plugins/rspec/spec/spec/expectations/handler_spec.rb new file mode 100644 index 000000000..e7d6a6ed1 --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/expectations/handler_spec.rb @@ -0,0 +1,206 @@ +require 'spec_helper' + +module ExampleExpectations + + class ArbitraryMatcher + def initialize(*args, &block) + if args.last.is_a? Hash + @expected = args.last[:expected] + end + @expected = block.call if block + @block = block + end + + def matches?(target) + @target = target + return @expected == target + end + + def with(new_value) + @expected = new_value + self + end + + def failure_message + "expected #{@expected}, got #{@target}" + end + + def negative_failure_message + "expected not #{@expected}, got #{@target}" + end + end + + class PositiveOnlyMatcher < ArbitraryMatcher + undef negative_failure_message rescue nil + end + + def arbitrary_matcher(*args, &block) + ArbitraryMatcher.new(*args, &block) + end + + def positive_only_matcher(*args, &block) + PositiveOnlyMatcher.new(*args, &block) + end + +end + +module Spec + module Expectations + describe PositiveExpectationHandler do + describe "#handle_matcher" do + it "asks the matcher if it matches" do + matcher = mock("matcher") + actual = Object.new + matcher.should_receive(:matches?).with(actual).and_return(true) + Spec::Expectations::PositiveExpectationHandler.handle_matcher(actual, matcher) + end + + it "returns the match value" do + matcher = mock("matcher") + actual = Object.new + matcher.should_receive(:matches?).with(actual).and_return(:this_value) + Spec::Expectations::PositiveExpectationHandler.handle_matcher(actual, matcher).should == :this_value + end + + it "calls failure_message_for_should if the matcher implements it" do + matcher = mock("matcher", :failure_message_for_should => "message", :matches? => false) + actual = Object.new + + ::Spec::Expectations.should_receive(:fail_with).with("message") + + Spec::Expectations::PositiveExpectationHandler.handle_matcher(actual, matcher) + end + + it "calls fail if matcher.diffable?" do + matcher = mock("matcher", + :diffable? => true, + :failure_message_for_should => "message", + :matches? => false, + :expected => [1], + :actual => 2 + ) + actual = Object.new + + ::Spec::Expectations.should_receive(:fail_with).with("message", 1, 2) + + Spec::Expectations::PositiveExpectationHandler.handle_matcher(actual, matcher) + end + + it "calls failure_message if the matcher does not implement failure_message_for_should" do + matcher = mock("matcher", :failure_message => "message", :matches? => false) + actual = Object.new + + ::Spec::Expectations.should_receive(:fail_with).with("message") + + Spec::Expectations::PositiveExpectationHandler.handle_matcher(actual, matcher) + + end + + it "appends the :or message in the options hash passed to should" do + matcher = mock("matcher", :failure_message_for_should => "message", :matches? => false) + actual = Object.new + + ::Spec::Expectations.should_receive(:fail_with).with("custom") + + Spec::Expectations::PositiveExpectationHandler.handle_matcher(actual, matcher, "custom") + end + end + end + + describe NegativeExpectationHandler do + describe "#handle_matcher" do + it "asks the matcher if it doesn't match when the matcher responds to #does_not_match?" do + matcher = mock("matcher", :does_not_match? => true, :negative_failure_message => nil) + actual = Object.new + matcher.should_receive(:does_not_match?).with(actual).and_return(true) + Spec::Expectations::NegativeExpectationHandler.handle_matcher(actual, matcher) + end + + it "asks the matcher if it matches when the matcher doesn't respond to #does_not_match?" do + matcher = mock("matcher") + actual = Object.new + matcher.stub!(:negative_failure_message) + matcher.should_receive(:matches?).with(actual).and_return(false) + Spec::Expectations::NegativeExpectationHandler.handle_matcher(actual, matcher) + end + + it "returns the match value" do + matcher = mock("matcher") + actual = Object.new + matcher.should_receive(:matches?).with(actual).and_return(false) + matcher.stub!(:negative_failure_message).and_return("ignore") + Spec::Expectations::NegativeExpectationHandler.handle_matcher(actual, matcher).should be_false + end + + + it "calls failure_message_for_should_not if the matcher implements it" do + matcher = mock("matcher", :failure_message_for_should_not => "message", :matches? => true) + actual = Object.new + + ::Spec::Expectations.should_receive(:fail_with).with("message") + + Spec::Expectations::NegativeExpectationHandler.handle_matcher(actual, matcher) + + end + + it "calls negative_failure_message if the matcher does not implement failure_message_for_should_not" do + matcher = mock("matcher", :negative_failure_message => "message", :matches? => true) + actual = Object.new + + ::Spec::Expectations.should_receive(:fail_with).with("message") + + Spec::Expectations::NegativeExpectationHandler.handle_matcher(actual, matcher) + + end + + + it "calls fail if matcher.diffable?" do + matcher = mock("matcher", + :diffable? => true, + :failure_message_for_should_not => "message", + :matches? => true, + :expected => [1], + :actual => 2 + ) + actual = Object.new + + ::Spec::Expectations.should_receive(:fail_with).with("message", 1, 2) + + Spec::Expectations::NegativeExpectationHandler.handle_matcher(actual, matcher) + end + + it "appends the :or message in the options hash passed to should" do + matcher = mock("matcher", :failure_message_for_should_not => "message", :matches? => true) + actual = Object.new + + ::Spec::Expectations.should_receive(:fail_with).with("custom") + + Spec::Expectations::NegativeExpectationHandler.handle_matcher(actual, matcher, "custom") + end + + end + end + + describe PositiveExpectationHandler do + include ExampleExpectations + + it "should handle submitted args" do + 5.should arbitrary_matcher(:expected => 5) + 5.should arbitrary_matcher(:expected => "wrong").with(5) + lambda { 5.should arbitrary_matcher(:expected => 4) }.should fail_with("expected 4, got 5") + lambda { 5.should arbitrary_matcher(:expected => 5).with(4) }.should fail_with("expected 4, got 5") + 5.should_not arbitrary_matcher(:expected => 4) + 5.should_not arbitrary_matcher(:expected => 5).with(4) + lambda { 5.should_not arbitrary_matcher(:expected => 5) }.should fail_with("expected not 5, got 5") + lambda { 5.should_not arbitrary_matcher(:expected => 4).with(5) }.should fail_with("expected not 5, got 5") + end + + it "should handle the submitted block" do + 5.should arbitrary_matcher { 5 } + 5.should arbitrary_matcher(:expected => 4) { 5 } + 5.should arbitrary_matcher(:expected => 4).with(5) { 3 } + end + + end + end +end diff --git a/vendor/plugins/rspec/spec/spec/expectations/wrap_expectation_spec.rb b/vendor/plugins/rspec/spec/spec/expectations/wrap_expectation_spec.rb new file mode 100644 index 000000000..9ef7d0075 --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/expectations/wrap_expectation_spec.rb @@ -0,0 +1,30 @@ +require 'spec_helper' + +module Spec + module Matchers + describe "wrap_expectation" do + + def stub_matcher + @_stub_matcher ||= simple_matcher do + end + end + + def failing_matcher + @_failing_matcher ||= simple_matcher do + 1.should == 2 + end + end + + it "should return true if there is no error" do + wrap_expectation stub_matcher do + end.should be_true + end + + it "should return false if there is an error" do + wrap_expectation failing_matcher do + raise "error" + end.should be_false + end + end + end +end
\ No newline at end of file diff --git a/vendor/plugins/rspec/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb b/vendor/plugins/rspec/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb new file mode 100644 index 000000000..7dc344bdd --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb @@ -0,0 +1,13 @@ +rspec_lib = File.dirname(__FILE__) + "/../../../../../../lib" +$:.unshift rspec_lib unless $:.include?(rspec_lib) +require 'spec/autorun' +require 'spec/test/unit' + +describe "options hash" do + describe "#options" do + it "should expose the options hash" do + group = describe("group", :this => 'hash') {} + group.options[:this].should == 'hash' + end + end +end
\ No newline at end of file diff --git a/vendor/plugins/rspec/spec/spec/interop/test/unit/resources/test_case_with_various_names.rb b/vendor/plugins/rspec/spec/spec/interop/test/unit/resources/test_case_with_various_names.rb new file mode 100644 index 000000000..186db49d5 --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/interop/test/unit/resources/test_case_with_various_names.rb @@ -0,0 +1,22 @@ +rspec_lib = File.dirname(__FILE__) + "/../../../../../../lib" +$:.unshift rspec_lib unless $:.include?(rspec_lib) +require 'spec/autorun' +require 'spec/test/unit' + +class TestCaseThatPasses < Test::Unit::TestCase + def test_should_allow_underscore + assert true + end + + def testShouldAllowUppercaseLetter + assert true + end + + def testshouldallowlowercaseletter + assert true + end + + define_method :"test: should allow punctuation" do + assert true + end +end diff --git a/vendor/plugins/rspec/spec/spec/matchers/be_instance_of_spec.rb b/vendor/plugins/rspec/spec/spec/matchers/be_instance_of_spec.rb new file mode 100644 index 000000000..e6abd0b16 --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/matchers/be_instance_of_spec.rb @@ -0,0 +1,36 @@ +require 'spec_helper' + +module Spec + module Matchers + [:be_an_instance_of, :be_instance_of].each do |method| + describe "actual.should #{method}(expected)" do + it "passes if actual is instance of expected class" do + 5.should send(method, Fixnum) + end + + it "fails if actual is instance of subclass of expected class" do + lambda { 5.should send(method, Numeric) }.should fail_with(%Q{expected 5 to be an instance of Numeric}) + end + + it "fails with failure message for should unless actual is instance of expected class" do + lambda { "foo".should send(method, Array) }.should fail_with(%Q{expected "foo" to be an instance of Array}) + end + + it "provides a description" do + matcher = be_an_instance_of(Fixnum) + matcher.matches?(Numeric) + matcher.description.should == "be an instance of Fixnum" + end + end + + describe "actual.should_not #{method}(expected)" do + + it "fails with failure message for should_not if actual is instance of expected class" do + lambda { "foo".should_not send(method, String) }.should fail_with(%Q{expected "foo" not to be an instance of String}) + end + + end + + end + end +end diff --git a/vendor/plugins/rspec/spec/spec/matchers/be_kind_of_spec.rb b/vendor/plugins/rspec/spec/spec/matchers/be_kind_of_spec.rb new file mode 100644 index 000000000..d3f05e806 --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/matchers/be_kind_of_spec.rb @@ -0,0 +1,33 @@ +require 'spec_helper' + +module Spec + module Matchers + [:be_a_kind_of, :be_kind_of].each do |method| + describe "actual.should #{method}(expected)" do + it "passes if actual is instance of expected class" do + 5.should send(method, Fixnum) + end + + it "passes if actual is instance of subclass of expected class" do + 5.should send(method, Numeric) + end + + it "fails with failure message for should unless actual is kind of expected class" do + lambda { "foo".should send(method, Array) }.should fail_with(%Q{expected "foo" to be a kind of Array}) + end + + it "provides a description" do + matcher = be_a_kind_of(String) + matcher.matches?("this") + matcher.description.should == "be a kind of String" + end + end + + describe "actual.should_not #{method}(expected)" do + it "fails with failure message for should_not if actual is kind of expected class" do + lambda { "foo".should_not send(method, String) }.should fail_with(%Q{expected "foo" not to be a kind of String}) + end + end + end + end +end diff --git a/vendor/plugins/rspec/spec/spec/matchers/compatibility_spec.rb b/vendor/plugins/rspec/spec/spec/matchers/compatibility_spec.rb new file mode 100644 index 000000000..3987e590f --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/matchers/compatibility_spec.rb @@ -0,0 +1,28 @@ +require 'spec_helper' + +Spec::Matchers.define :have_public_instance_method do |method| + match do |klass| + klass.public_instance_methods.any? {|m| [method, method.to_sym].include?(m)} + end +end + +(Spec::Matchers.constants.sort).each do |c| + if (Class === (klass = Spec::Matchers.const_get(c))) + describe klass do + if klass.public_instance_methods.any? {|m| ['failure_message_for_should',:failure_message_for_should].include?(m)} + describe "called with should" do + subject { klass } + it { should have_public_instance_method('failure_message_for_should')} + it { should have_public_instance_method('failure_message')} + end + end + if klass.public_instance_methods.any? {|m| ['failure_message_for_should_not',:failure_message_for_should_not].include?(m)} + describe "called with should not" do + subject { klass } + it { should have_public_instance_method('failure_message_for_should_not')} + it { should have_public_instance_method('negative_failure_message')} + end + end + end + end +end diff --git a/vendor/plugins/rspec/spec/spec/matchers/dsl_spec.rb b/vendor/plugins/rspec/spec/spec/matchers/dsl_spec.rb new file mode 100644 index 000000000..9c280e5ae --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/matchers/dsl_spec.rb @@ -0,0 +1,34 @@ +require 'spec_helper' + +module Spec + module Matchers + module DSL + describe "#create" do + it "is deprecated" do + Spec.should_receive(:deprecate) + mod = Module.new + mod.extend Spec::Matchers::DSL + mod.create(:foo) + end + end + + describe "#define" do + it "creates a method that initializes a new matcher with the submitted name and expected arg" do + # FIXME - this expects new to be called, but we need something + # more robust - that expects new to be called with a specific + # block (lambda, proc, whatever) + mod = Module.new + mod.extend Spec::Matchers::DSL + mod.define(:foo) + + obj = Object.new + obj.extend mod + + Spec::Matchers::Matcher.should_receive(:new).with(:foo, 3) + + obj.foo(3) + end + end + end + end +end diff --git a/vendor/plugins/rspec/spec/spec/matchers/match_array_spec.rb b/vendor/plugins/rspec/spec/spec/matchers/match_array_spec.rb new file mode 100644 index 000000000..be75ec16d --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/matchers/match_array_spec.rb @@ -0,0 +1,108 @@ +require 'spec_helper' + +class UnsortableObject + def initialize(id) + @id = id + end + + def inspect + @id.to_s + end + + def ==(other) + false + end +end + +describe "array.should =~ other_array" do + it "should pass if target contains all items" do + [1,2,3].should =~ [1,2,3] + end + + it "should pass if target contains all items out of order" do + [1,3,2].should =~ [1,2,3] + end + + it "should fail if target includes extra items" do + lambda { + [1,2,3,4].should =~ [1,2,3] + }.should fail_with(<<-MESSAGE) +expected collection contained: [1, 2, 3] +actual collection contained: [1, 2, 3, 4] +the extra elements were: [4] +MESSAGE + end + + it "should fail if target is missing items" do + lambda { + [1,2].should =~ [1,2,3] + }.should fail_with(<<-MESSAGE) +expected collection contained: [1, 2, 3] +actual collection contained: [1, 2] +the missing elements were: [3] +MESSAGE + end + + it "should fail if target is missing items and has extra items" do + + lambda { + [1,2,4].should =~ [1,2,3] + }.should fail_with(<<-MESSAGE) +expected collection contained: [1, 2, 3] +actual collection contained: [1, 2, 4] +the missing elements were: [3] +the extra elements were: [4] +MESSAGE + end + + it "should sort items in the error message if they all respond to <=>" do + lambda { + [6,2,1,5].should =~ [4,1,2,3] + }.should fail_with(<<-MESSAGE) +expected collection contained: [1, 2, 3, 4] +actual collection contained: [1, 2, 5, 6] +the missing elements were: [3, 4] +the extra elements were: [5, 6] +MESSAGE + end + + it "should not sort items in the error message if they don't all respond to <=>" do + lambda { + [UnsortableObject.new(2), UnsortableObject.new(1)].should =~ [UnsortableObject.new(4), UnsortableObject.new(3)] + }.should fail_with(<<-MESSAGE) +expected collection contained: [4, 3] +actual collection contained: [2, 1] +the missing elements were: [4, 3] +the extra elements were: [2, 1] +MESSAGE + end + + it "should accurately report extra elements when there are duplicates" do + lambda { + [1,1,1,5].should =~ [1,5] + }.should fail_with(<<-MESSAGE) +expected collection contained: [1, 5] +actual collection contained: [1, 1, 1, 5] +the extra elements were: [1, 1] +MESSAGE + end + + it "should accurately report missing elements when there are duplicates" do + lambda { + [1,5].should =~ [1,1,5] + }.should fail_with(<<-MESSAGE) +expected collection contained: [1, 1, 5] +actual collection contained: [1, 5] +the missing elements were: [1] +MESSAGE + end + +end + +describe "should_not =~ [:with, :multiple, :args]" do + it "should not be supported" do + lambda { + [1,2,3].should_not =~ [1,2,3] + }.should fail_with(/Matcher does not support should_not/) + end +end diff --git a/vendor/plugins/rspec/spec/spec/matchers/matcher_spec.rb b/vendor/plugins/rspec/spec/spec/matchers/matcher_spec.rb new file mode 100644 index 000000000..76b2e2602 --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/matchers/matcher_spec.rb @@ -0,0 +1,228 @@ +require 'spec_helper' + +module Spec + module Matchers + describe Matcher do + context "without overrides" do + before(:each) do + @matcher = Spec::Matchers::Matcher.new(:be_a_multiple_of, 3) do |multiple| + match do |actual| + actual % multiple == 0 + end + end + end + + it "provides a default description" do + @matcher.description.should == "be a multiple of 3" + end + + it "provides a default failure message for #should" do + @matcher.matches?(8) + @matcher.failure_message_for_should.should == "expected 8 to be a multiple of 3" + end + + it "provides a default failure message for #should_not" do + @matcher.matches?(9) + @matcher.failure_message_for_should_not.should == "expected 9 not to be a multiple of 3" + end + end + + it "is not diffable by default" do + matcher = Spec::Matchers::Matcher.new(:name) {} + matcher.should_not be_diffable + end + + it "is diffable when told to be" do + matcher = Spec::Matchers::Matcher.new(:name) { diffable } + matcher.should be_diffable + end + + it "provides expected" do + matcher = Spec::Matchers::Matcher.new(:name, 'expected string') {} + matcher.expected.should == ['expected string'] + end + + it "provides actual" do + matcher = Spec::Matchers::Matcher.new(:name, 'expected string') do + match {|actual|} + end + + matcher.matches?('actual string') + + matcher.actual.should == 'actual string' + end + + context "with overrides" do + before(:each) do + @matcher = Spec::Matchers::Matcher.new(:be_boolean, true) do |boolean| + match do |actual| + actual + end + description do + "be the boolean #{boolean}" + end + failure_message_for_should do |actual| + "expected #{actual} to be the boolean #{boolean}" + end + failure_message_for_should_not do |actual| + "expected #{actual} not to be the boolean #{boolean}" + end + end + end + + it "does not hide result of match block when true" do + @matcher.matches?(true).should be_true + end + + it "does not hide result of match block when false" do + @matcher.matches?(false).should be_false + end + + it "overrides the description" do + @matcher.description.should == "be the boolean true" + end + + it "overrides the failure message for #should" do + @matcher.matches?(false) + @matcher.failure_message_for_should.should == "expected false to be the boolean true" + end + + it "overrides the failure message for #should_not" do + @matcher.matches?(true) + @matcher.failure_message_for_should_not.should == "expected true not to be the boolean true" + end + end + + context "#new" do + it "passes matches? arg to match block" do + matcher = Spec::Matchers::Matcher.new(:ignore) do + match do |actual| + actual == 5 + end + end + matcher.matches?(5).should be_true + end + + it "exposes arg submitted through #new to matcher block" do + matcher = Spec::Matchers::Matcher.new(:ignore, 4) do |expected| + match do |actual| + actual > expected + end + end + matcher.matches?(5).should be_true + end + end + + context "with no args" do + before(:each) do + @matcher = Spec::Matchers::Matcher.new(:matcher_name) do + match do |actual| + actual == 5 + end + end + end + + it "matches" do + @matcher.matches?(5).should be_true + end + + it "describes" do + @matcher.description.should == "matcher name" + end + end + + context "with 1 arg" do + before(:each) do + @matcher = Spec::Matchers::Matcher.new(:matcher_name, 1) do |expected| + match do |actual| + actual == 5 && expected == 1 + end + end + end + + it "matches" do + @matcher.matches?(5).should be_true + end + + it "describes" do + @matcher.description.should == "matcher name 1" + end + end + + context "with multiple args" do + before(:each) do + @matcher = Spec::Matchers::Matcher.new(:matcher_name, 1, 2, 3, 4) do |a,b,c,d| + match do |sum| + a + b + c + d == sum + end + end + end + + it "matches" do + @matcher.matches?(10).should be_true + end + + it "describes" do + @matcher.description.should == "matcher name 1, 2, 3, and 4" + end + end + + it "supports helper methods" do + matcher = Spec::Matchers::Matcher.new(:be_similar_to, [1,2,3]) do |sample| + match do |actual| + similar?(sample, actual) + end + + def similar?(a, b) + a.sort == b.sort + end + end + + matcher.matches?([2,3,1]).should be_true + end + + it "supports fluent interface" do + matcher = Spec::Matchers::Matcher.new(:first_word) do + def second_word + self + end + end + + matcher.second_word.should == matcher + end + + it "treats method missing normally for undeclared methods" do + matcher = Spec::Matchers::Matcher.new(:ignore) { } + expect { matcher.non_existent_method }.to raise_error(NoMethodError) + end + + it "has access to other matchers" do + matcher = Spec::Matchers::Matcher.new(:ignore, 3) do |expected| + match do |actual| + extend Spec::Matchers + actual.should eql(5 + expected) + end + end + + matcher.matches?(8).should be_true + end + + it "lets you override the actual() in messages" do + matcher = Spec::Matchers::Matcher.new(:be_foo) do + match do |actual| + @submitted = actual + false + end + + def actual + "replaced" + end + end + + matcher.matches?("foo") + matcher.failure_message_for_should.should =~ /replaced/ + end + + end + end +end diff --git a/vendor/plugins/rspec/spec/spec/matchers/matchers_spec.rb b/vendor/plugins/rspec/spec/spec/matchers/matchers_spec.rb new file mode 100644 index 000000000..51f5efc44 --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/matchers/matchers_spec.rb @@ -0,0 +1,2 @@ +require 'spec_helper' + diff --git a/vendor/plugins/rspec/spec/spec/mocks/argument_matchers_spec.rb b/vendor/plugins/rspec/spec/spec/mocks/argument_matchers_spec.rb new file mode 100644 index 000000000..fc8165583 --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/mocks/argument_matchers_spec.rb @@ -0,0 +1,19 @@ +require 'spec_helper' + +module Spec + module Mocks + module ArgumentMatchers + describe AnyArgsMatcher do + it "represents itself nicely for failure messages" do + AnyArgsMatcher.new.description.should == "any args" + end + end + + describe AnyArgMatcher do + it "represents itself nicely for failure messages" do + AnyArgMatcher.new(nil).description.should == "anything" + end + end + end + end +end
\ No newline at end of file diff --git a/vendor/plugins/rspec/spec/spec/mocks/bug_report_496_spec.rb b/vendor/plugins/rspec/spec/spec/mocks/bug_report_496_spec.rb new file mode 100644 index 000000000..fb172a6b0 --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/mocks/bug_report_496_spec.rb @@ -0,0 +1,19 @@ +require 'spec_helper' + +module BugReport496 + class BaseClass + end + + class SubClass < BaseClass + end + + describe "a message expectation on a base class object" do + it "should correctly pick up message sent to it subclass" do + pending("fix for http://rspec.lighthouseapp.com/projects/5645/tickets/496") do + BaseClass.should_receive(:new).once + SubClass.new + end + end + end +end + diff --git a/vendor/plugins/rspec/spec/spec/mocks/bug_report_600_spec.rb b/vendor/plugins/rspec/spec/spec/mocks/bug_report_600_spec.rb new file mode 100644 index 000000000..c5c50d5a4 --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/mocks/bug_report_600_spec.rb @@ -0,0 +1,22 @@ +require 'spec_helper' + +module BugReport600 + class ExampleClass + def self.method_that_uses_define_method + define_method "defined_method" do |attributes| + load_address(address, attributes) + end + end + end + + describe "stubbing a class method" do + it "should work" do + ExampleClass.should_receive(:define_method).with("defined_method") + ExampleClass.method_that_uses_define_method + end + + it "should restore the original method" do + ExampleClass.method_that_uses_define_method + end + end +end
\ No newline at end of file diff --git a/vendor/plugins/rspec/spec/spec/mocks/bug_report_830_spec.rb b/vendor/plugins/rspec/spec/spec/mocks/bug_report_830_spec.rb new file mode 100644 index 000000000..ed16f419a --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/mocks/bug_report_830_spec.rb @@ -0,0 +1,21 @@ +require 'spec_helper' + +module Spec + module Mocks + describe 'Calling a method that catches StandardError' do + class Foo + def self.foo + bar + rescue StandardError + end + end + + it 'still reports mock failures' do + Foo.should_not_receive :bar + lambda do + Foo.foo + end.should raise_error(MockExpectationError) + end + end + end +end diff --git a/vendor/plugins/rspec/spec/spec/mocks/double_spec.rb b/vendor/plugins/rspec/spec/spec/mocks/double_spec.rb new file mode 100644 index 000000000..0d6ee982d --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/mocks/double_spec.rb @@ -0,0 +1,12 @@ +require 'spec_helper' + +describe "double" do + it "is an alias for stub and mock" do + double().should be_a(Spec::Mocks::Mock) + end + + it "uses 'Double' in failure messages" do + double = double('name') + expect {double.foo}.to raise_error(/Double "name" received/) + end +end
\ No newline at end of file diff --git a/vendor/plugins/rspec/spec/spec/mocks/failing_argument_matchers_spec.rb b/vendor/plugins/rspec/spec/spec/mocks/failing_argument_matchers_spec.rb new file mode 100644 index 000000000..30742157d --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/mocks/failing_argument_matchers_spec.rb @@ -0,0 +1,95 @@ +require 'spec_helper' + +module Spec + module Mocks + describe "failing MockArgumentMatchers" do + before(:each) do + @mock = mock("test mock") + @reporter = Mock.new("reporter", :null_object => true) + end + + after(:each) do + @mock.rspec_reset + end + + it "should reject non boolean" do + @mock.should_receive(:random_call).with(boolean()) + lambda do + @mock.random_call("false") + end.should raise_error(MockExpectationError) + end + + it "should reject non numeric" do + @mock.should_receive(:random_call).with(an_instance_of(Numeric)) + lambda do + @mock.random_call("1") + end.should raise_error(MockExpectationError) + end + + it "should reject non string" do + @mock.should_receive(:random_call).with(an_instance_of(String)) + lambda do + @mock.random_call(123) + end.should raise_error(MockExpectationError) + end + + it "should reject goose when expecting a duck" do + @mock.should_receive(:random_call).with(duck_type(:abs, :div)) + lambda { @mock.random_call("I don't respond to :abs or :div") }.should raise_error(MockExpectationError) + end + + it "should fail if regexp does not match submitted string" do + @mock.should_receive(:random_call).with(/bcd/) + lambda { @mock.random_call("abc") }.should raise_error(MockExpectationError) + end + + it "should fail if regexp does not match submitted regexp" do + @mock.should_receive(:random_call).with(/bcd/) + lambda { @mock.random_call(/bcde/) }.should raise_error(MockExpectationError) + end + + it "should fail for a hash w/ wrong values" do + @mock.should_receive(:random_call).with(:a => "b", :c => "d") + lambda do + @mock.random_call(:a => "b", :c => "e") + end.should raise_error(MockExpectationError, /Mock "test mock" received :random_call with unexpected arguments\n expected: \(\{(:a=>\"b\", :c=>\"d\"|:c=>\"d\", :a=>\"b\")\}\)\n got: \(\{(:a=>\"b\", :c=>\"e\"|:c=>\"e\", :a=>\"b\")\}\)/) + end + + it "should fail for a hash w/ wrong keys" do + @mock.should_receive(:random_call).with(:a => "b", :c => "d") + lambda do + @mock.random_call("a" => "b", "c" => "d") + end.should raise_error(MockExpectationError, /Mock "test mock" received :random_call with unexpected arguments\n expected: \(\{(:a=>\"b\", :c=>\"d\"|:c=>\"d\", :a=>\"b\")\}\)\n got: \(\{(\"a\"=>\"b\", \"c\"=>\"d\"|\"c\"=>\"d\", \"a\"=>\"b\")\}\)/) + end + + it "should match against a Matcher" do + lambda do + @mock.should_receive(:msg).with(equal(3)) + @mock.msg(37) + end.should raise_error(MockExpectationError, "Mock \"test mock\" received :msg with unexpected arguments\n expected: (equal 3)\n got: (37)") + end + + it "should fail no_args with one arg" do + lambda do + @mock.should_receive(:msg).with(no_args) + @mock.msg(37) + end.should raise_error(MockExpectationError, "Mock \"test mock\" received :msg with unexpected arguments\n expected: (no args)\n got: (37)") + end + + it "should fail hash_including with missing key" do + lambda do + @mock.should_receive(:msg).with(hash_including(:a => 1)) + @mock.msg({}) + end.should raise_error(MockExpectationError, "Mock \"test mock\" received :msg with unexpected arguments\n expected: (hash_including(:a=>1))\n got: ({})") + end + + it "should fail with block matchers" do + lambda do + @mock.should_receive(:msg).with {|arg| arg.should == :received } + @mock.msg :no_msg_for_you + end.should raise_error(Spec::Expectations::ExpectationNotMetError, /expected: :received.*\s*.*got: :no_msg_for_you/) + end + + end + end +end diff --git a/vendor/plugins/rspec/spec/spec/mocks/hash_not_including_matcher_spec.rb b/vendor/plugins/rspec/spec/spec/mocks/hash_not_including_matcher_spec.rb new file mode 100644 index 000000000..9df69fe6c --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/mocks/hash_not_including_matcher_spec.rb @@ -0,0 +1,67 @@ +require 'spec_helper' + +module Spec + module Mocks + module ArgumentMatchers + describe HashNotIncludingMatcher do + + it "should describe itself properly" do + HashNotIncludingMatcher.new(:a => 5).description.should == "hash_not_including(:a=>5)" + end + + describe "passing" do + it "should match a hash without the specified key" do + hash_not_including(:c).should == {:a => 1, :b => 2} + end + + it "should match a hash with the specified key, but different value" do + hash_not_including(:b => 3).should == {:a => 1, :b => 2} + end + + it "should match a hash without the specified key, given as anything()" do + hash_not_including(:c => anything).should == {:a => 1, :b => 2} + end + + it "should match an empty hash" do + hash_not_including(:a).should == {} + end + + it "should match a hash without any of the specified keys" do + hash_not_including(:a, :b, :c).should == { :d => 7} + end + + end + + describe "failing" do + it "should not match a non-hash" do + hash_not_including(:a => 1).should_not == 1 + end + + it "should not match a hash with a specified key" do + hash_not_including(:b).should_not == {:b => 2} + end + + it "should not match a hash with the specified key/value pair" do + hash_not_including(:b => 2).should_not == {:a => 1, :b => 2} + end + + it "should not match a hash with the specified key" do + hash_not_including(:a, :b => 3).should_not == {:a => 1, :b => 2} + end + + it "should not match a hash with one of the specified keys" do + hash_not_including(:a, :b).should_not == {:b => 2} + end + + it "should not match a hash with some of the specified keys" do + hash_not_including(:a, :b, :c).should_not == {:a => 1, :b => 2} + end + + it "should not match a hash with one key/value pair included" do + hash_not_including(:a, :b, :c, :d => 7).should_not == { :d => 7} + end + end + end + end + end +end diff --git a/vendor/plugins/rspec/spec/spec/mocks/nil_expectation_warning_spec.rb b/vendor/plugins/rspec/spec/spec/mocks/nil_expectation_warning_spec.rb new file mode 100644 index 000000000..f8f72baff --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/mocks/nil_expectation_warning_spec.rb @@ -0,0 +1,53 @@ +require 'spec_helper' + +module Spec + module Mocks + + describe "an expectation set on nil" do + + it "should issue a warning with file and line number information" do + expected_warning = %r%An expectation of :foo was set on nil. Called from #{__FILE__}:#{__LINE__+3}(:in `block \(2 levels\) in <module:Mocks>')?. Use allow_message_expectations_on_nil to disable warnings.% + Kernel.should_receive(:warn).with(expected_warning) + + nil.should_receive(:foo) + nil.foo + end + + it "should issue a warning when the expectation is negative" do + Kernel.should_receive(:warn) + + nil.should_not_receive(:foo) + end + + it "should not issue a warning when expectations are set to be allowed" do + allow_message_expectations_on_nil + Kernel.should_not_receive(:warn) + + nil.should_receive(:foo) + nil.should_not_receive(:bar) + nil.foo + end + + end + + describe "#allow_message_expectations_on_nil" do + + it "should not effect subsequent examples" do + example_group = Class.new(::Spec::Example::ExampleGroupDouble) + example_group.it("when called in one example that doesn't end up setting an expectation on nil") do + allow_message_expectations_on_nil + end + example_group.it("should not effect the next exapmle ran") do + Kernel.should_receive(:warn) + nil.should_receive(:foo) + nil.foo + end + + example_group.run(Spec::Runner.options).should be_true + + end + + end + + end +end diff --git a/vendor/plugins/rspec/spec/spec/mocks/passing_argument_matchers_spec.rb b/vendor/plugins/rspec/spec/spec/mocks/passing_argument_matchers_spec.rb new file mode 100644 index 000000000..a364df0ae --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/mocks/passing_argument_matchers_spec.rb @@ -0,0 +1,145 @@ +require 'spec_helper' + +module Spec + module Mocks + describe "mock argument matchers", :shared => true do + before(:each) do + @mock = Mock.new("test mock") + Kernel.stub!(:warn) + end + + after(:each) do + @mock.rspec_verify + end + end + + describe Methods, "handling argument matchers" do + it_should_behave_like "mock argument matchers" + + it "should accept true as boolean()" do + @mock.should_receive(:random_call).with(boolean()) + @mock.random_call(true) + end + + it "should accept false as boolean()" do + @mock.should_receive(:random_call).with(boolean()) + @mock.random_call(false) + end + + it "should accept fixnum as kind_of(Numeric)" do + @mock.should_receive(:random_call).with(kind_of(Numeric)) + @mock.random_call(1) + end + + it "should accept float as an_instance_of(Numeric)" do + @mock.should_receive(:random_call).with(kind_of(Numeric)) + @mock.random_call(1.5) + end + + it "accepts fixnum as instance_of(Fixnum)" do + @mock.should_receive(:random_call).with(instance_of(Fixnum)) + @mock.random_call(1) + end + + it "should NOT accept fixnum as instance_of(Numeric)" do + @mock.should_not_receive(:random_call).with(instance_of(Numeric)) + @mock.random_call(1) + end + + it "should NOT accept float as instance_of(Numeric)" do + @mock.should_not_receive(:random_call).with(instance_of(Numeric)) + @mock.random_call(1.5) + end + + it "should accept string as anything()" do + @mock.should_receive(:random_call).with("a", anything(), "c") + @mock.random_call("a", "whatever", "c") + end + + it "should match duck type with one method" do + @mock.should_receive(:random_call).with(duck_type(:length)) + @mock.random_call([]) + end + + it "should match duck type with two methods" do + @mock.should_receive(:random_call).with(duck_type(:abs, :div)) + @mock.random_call(1) + end + + it "should match no args against any_args()" do + @mock.should_receive(:random_call).with(any_args) + @mock.random_call() + end + + it "should match one arg against any_args()" do + @mock.should_receive(:random_call).with(any_args) + @mock.random_call("a string") + end + + it "should match no args against no_args()" do + @mock.should_receive(:random_call).with(no_args) + @mock.random_call() + end + + it "should match hash with hash_including same hash" do + @mock.should_receive(:random_call).with(hash_including(:a => 1)) + @mock.random_call(:a => 1) + end + + end + + describe Methods, "handling block matchers" do + it_should_behave_like "mock argument matchers" + + it "should match arguments against RSpec expectations" do + @mock.should_receive(:random_call).with {|arg1, arg2, arr, *rest| + arg1.should == 5 + arg2.should have_at_least(3).characters + arg2.should have_at_most(10).characters + arr.map {|i| i * 2}.should == [2,4,6] + rest.should == [:fee, "fi", 4] + } + @mock.random_call 5, "hello", [1,2,3], :fee, "fi", 4 + end + end + + describe Methods, "handling non-matcher arguments" do + + before(:each) do + @mock = Mock.new("test mock") + end + + it "should match non special symbol (can be removed when deprecated symbols are removed)" do + @mock.should_receive(:random_call).with(:some_symbol) + @mock.random_call(:some_symbol) + end + + it "should match string against regexp" do + @mock.should_receive(:random_call).with(/bcd/) + @mock.random_call("abcde") + end + + it "should match regexp against regexp" do + @mock.should_receive(:random_call).with(/bcd/) + @mock.random_call(/bcd/) + end + + it "should match against a hash submitted and received by value" do + @mock.should_receive(:random_call).with(:a => "a", :b => "b") + @mock.random_call(:a => "a", :b => "b") + end + + it "should match against a hash submitted by reference and received by value" do + opts = {:a => "a", :b => "b"} + @mock.should_receive(:random_call).with(opts) + @mock.random_call(:a => "a", :b => "b") + end + + it "should match against a hash submitted by value and received by reference" do + opts = {:a => "a", :b => "b"} + @mock.should_receive(:random_call).with(:a => "a", :b => "b") + @mock.random_call(opts) + end + end + end +end diff --git a/vendor/plugins/rspec/spec/spec/mocks/stub_chain_spec.rb b/vendor/plugins/rspec/spec/spec/mocks/stub_chain_spec.rb new file mode 100644 index 000000000..3536e1761 --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/mocks/stub_chain_spec.rb @@ -0,0 +1,42 @@ +require 'spec_helper' + +module Spec + module Mocks + describe "A chained method stub" do + before(:each) do + @subject = Object.new + end + + it "returns expected value from chaining only one method call" do + @subject.stub_chain(:msg1).and_return(:return_value) + @subject.msg1.should equal(:return_value) + end + + it "returns expected value from chaining two method calls" do + @subject.stub_chain(:msg1, :msg2).and_return(:return_value) + @subject.msg1.msg2.should equal(:return_value) + end + + it "returns expected value from chaining four method calls" do + @subject.stub_chain(:msg1, :msg2, :msg3, :msg4).and_return(:return_value) + @subject.msg1.msg2.msg3.msg4.should equal(:return_value) + end + + it "returns expected value from two chains with shared messages at the end" do + @subject.stub_chain(:msg1, :msg2, :msg3, :msg4).and_return(:first) + @subject.stub_chain(:msg5, :msg2, :msg3, :msg4).and_return(:second) + + @subject.msg1.msg2.msg3.msg4.should equal(:first) + @subject.msg5.msg2.msg3.msg4.should equal(:second) + end + + it "returns expected value from two chains with shared messages at the beginning" do + @subject.stub_chain(:msg1, :msg2, :msg3, :msg4).and_return(:first) + @subject.stub_chain(:msg1, :msg2, :msg3, :msg5).and_return(:second) + + @subject.msg1.msg2.msg3.msg4.should equal(:first) + @subject.msg1.msg2.msg3.msg5.should equal(:second) + end + end + end +end diff --git a/vendor/plugins/rspec/spec/spec/mocks/stub_implementation_spec.rb b/vendor/plugins/rspec/spec/spec/mocks/stub_implementation_spec.rb new file mode 100644 index 000000000..1487277fc --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/mocks/stub_implementation_spec.rb @@ -0,0 +1,31 @@ +require 'spec_helper' + +module Spec + module Mocks + describe "stub implementation" do + context "with no args" do + it "execs the block when called" do + obj = stub() + obj.stub(:foo) { :bar } + obj.foo.should == :bar + end + end + + context "with one arg" do + it "execs the block with that arg when called" do + obj = stub() + obj.stub(:foo) {|given| given} + obj.foo(:bar).should == :bar + end + end + + context "with variable args" do + it "execs the block when called" do + obj = stub() + obj.stub(:foo) {|*given| given.first} + obj.foo(:bar).should == :bar + end + end + end + end +end
\ No newline at end of file diff --git a/vendor/plugins/rspec/spec/spec/mocks/stubbed_message_expectations_spec.rb b/vendor/plugins/rspec/spec/spec/mocks/stubbed_message_expectations_spec.rb new file mode 100644 index 000000000..03c8fecdc --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/mocks/stubbed_message_expectations_spec.rb @@ -0,0 +1,26 @@ +require 'spec_helper' + +module Spec + module Mocks + describe "Example with stubbed and then called message" do + it "fails if the message is expected and then subsequently not called again" do + mock_obj = mock("mock", :msg => nil) + mock_obj.msg + mock_obj.should_receive(:msg) + lambda { mock_obj.rspec_verify }.should raise_error(Spec::Mocks::MockExpectationError) + end + + it "outputs arguments of all similar calls" do + m = mock('mock', :foo => true) + m.should_receive(:foo).with('first') + m.foo('second') + m.foo('third') + lambda do + m.rspec_verify + end.should raise_error(%Q|Mock "mock" received :foo with unexpected arguments\n expected: ("first")\n got: (["second"], ["third"])|) + m.rspec_reset + end + end + + end +end
\ No newline at end of file diff --git a/vendor/plugins/rspec/spec/spec/mocks/unstub_spec.rb b/vendor/plugins/rspec/spec/spec/mocks/unstub_spec.rb new file mode 100644 index 000000000..89e5ac381 --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/mocks/unstub_spec.rb @@ -0,0 +1,127 @@ +require 'spec_helper' + +module Spec + module Mocks + describe Mock do + context "unstubbing a mock object with a stub" do + it "should remove the stub" do + a_mock = mock 'an object', :foo => :bar + + a_mock.unstub! :foo + a_mock.should_not respond_to(:foo) + end + end + + context "unstubbing a real object with a stub" do + before do + @obj = Object.new + end + + it "should raise a NoMethodError if the message is called after unstubbing" do + @obj.stub!(:foo).and_return :bar + @obj.unstub!(:foo) + + lambda { + @obj.foo + }.should raise_error(NoMethodError) + end + + it "should only clear the stub specified" do + @obj.stub!(:foo).and_return :bar + @obj.stub!(:other).and_return :baz + + @obj.unstub!(:foo) + + @obj.other.should == :baz + end + + it "should no longer respond_to? the method" do + @obj.stub!(:foo).and_return :bar + @obj.unstub!(:foo) + + @obj.should_not respond_to(:foo) + end + + it "should unstub using a string (should convert the string to a symbol)" do + @obj.stub!(:foo) + + @obj.unstub!("foo") + + @obj.should_not respond_to(:foo) + end + + it "should restore a previous method definition" do + def @obj.foo + :a_result + end + + @obj.stub!(:foo).and_return :stubbed_result + @obj.unstub!(:foo) + + @obj.foo.should == :a_result + end + + it "should have unstub as an alias of unstub!" do + @obj.stub!(:foo).and_return :bar + + @obj.unstub(:foo) + + lambda { + @obj.foo + }.should raise_error(NoMethodError) + end + + it "should raise a MockExpectationError if it is not stubbed" do + lambda { + @obj.unstub!(:foo) + }.should raise_error(MockExpectationError, "The method `foo` was not stubbed or was already unstubbed") + end + + it "should raise a MockExpectationError if it was already unstubbed" do + @obj.stub!(:foo) + @obj.unstub!(:foo) + + lambda { + @obj.unstub!(:foo) + }.should raise_error(MockExpectationError, "The method `foo` was not stubbed or was already unstubbed") + end + + it "should use the correct message name in the error" do + @obj.stub!(:bar) + @obj.unstub!(:bar) + + lambda { + @obj.unstub!(:bar) + }.should raise_error(MockExpectationError, "The method `bar` was not stubbed or was already unstubbed") + end + + it "should raise a MockExpectationError if the method is defined, but not stubbed" do + def @obj.meth; end + + lambda { + @obj.unstub!(:meth) + }.should raise_error(MockExpectationError) + end + + it "should be able to restub a after unstubbing" do + @obj.stub!(:foo).and_return :bar + + @obj.unstub!(:foo) + + @obj.stub!(:foo).and_return :baz + + @obj.foo.should == :baz + end + + it "should remove only the first stub if multiple stubs have been defined" do + @obj.stub!(:foo).and_return :first + @obj.stub!(:foo).and_return :second + + @obj.unstub!(:foo) + + @obj.foo.should == :first + end + end + end + end +end diff --git a/vendor/plugins/rspec/spec/spec/rake/spectask_spec.rb b/vendor/plugins/rspec/spec/spec/rake/spectask_spec.rb new file mode 100644 index 000000000..ea834bad4 --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/rake/spectask_spec.rb @@ -0,0 +1,150 @@ +require 'spec_helper' +require 'spec/rake/spectask' + +module Spec + module Rake + + class MockTask + class << self + attr_accessor :last_instance, :last_cmd + end + + def self.tasks + @tasks ||= {} + end + + def self.reset_tasks + @tasks = {} + end + + def self.task(name) + tasks[name] + end + + def self.register_task(name, block) + tasks[name] = block + end + + def initialize(name, &block) + MockTask.register_task(name, block) + MockTask.last_instance = block + end + + def self.create_task(name, &block) + new(name, &block) + end + end + + class SpecTask + def task(name, &block) + MockTask.create_task(name, &block) + end + + def system(cmd) + MockTask.last_cmd = cmd + true + end + + def default_ruby_path + RUBY + end + end + + describe SpecTask do + + before(:each) do + MockTask.reset_tasks + end + + it "should execute rake's ruby path by default" do + task = SpecTask.new + MockTask.last_instance.call + MockTask.last_cmd.should match(/^#{task.default_ruby_path} /) + end + + it "should execute the command with system if ruby_cmd is specified" do + task = SpecTask.new {|t| t.ruby_cmd = "path_to_multiruby"} + task.should_receive(:system).and_return(true) + MockTask.last_instance.call + end + + it "should execute the ruby_cmd path if specified" do + SpecTask.new {|t| t.ruby_cmd = "path_to_multiruby"} + MockTask.last_instance.call + MockTask.last_cmd.should match(/^path_to_multiruby /) + end + + it "should produce a deprecation warning if the out option is used" do + SpecTask.new {|t| t.out = "somewhere_over_the_rainbow"} + STDERR.should_receive(:puts).with("The Spec::Rake::SpecTask#out attribute is DEPRECATED and will be removed in a future version. Use --format FORMAT:WHERE instead.") + MockTask.last_instance.call + end + + it "should produce an error if failure_message is set and the command fails" do + task = SpecTask.new {|t| t.failure_message = "oops"; t.fail_on_error = false} + STDERR.should_receive(:puts).with("oops") + task.stub(:system).and_return(false) + MockTask.last_instance.call + end + + it "should raise if fail_on_error is set and the command fails" do + task = SpecTask.new + task.stub(:system).and_return(false) + lambda {MockTask.last_instance.call}.should raise_error + end + + it "should not raise if fail_on_error is not set and the command fails" do + task = SpecTask.new {|t| t.fail_on_error = false} + task.stub(:system).and_return(false) + lambda {MockTask.last_instance.call}.should_not raise_error + end + + context "with ENV['SPEC'] set" do + before(:each) do + @orig_env_spec = ENV['SPEC'] + ENV['SPEC'] = 'foo.rb' + end + after(:each) do + ENV['SPEC'] = @orig_env_spec + end + it "should use the provided file list" do + task = SpecTask.new + task.spec_file_list.should == ["foo.rb"] + end + end + + context "with the rcov option" do + + it "should create a clobber_rcov task" do + MockTask.stub!(:create_task) + MockTask.should_receive(:create_task).with(:clobber_rcov) + SpecTask.new(:rcov) {|t| t.rcov = true} + end + + it "should setup the clobber_rcov task to remove the rcov directory" do + task = SpecTask.new(:rcov) {|t| t.rcov = true; t.rcov_dir = "path_to_rcov_directory"} + task.should_receive(:rm_r).with("path_to_rcov_directory") + MockTask.task(:clobber_rcov).call + end + + it "should make the clobber task depend on clobber_rcov" do + MockTask.stub!(:create_task) + MockTask.should_receive(:create_task).with(:clobber => [:clobber_rcov]) + SpecTask.new(:rcov) {|t| t.rcov = true} + end + + it "should make the rcov task depend on clobber_rcov" do + MockTask.stub!(:create_task) + MockTask.should_receive(:create_task).with(:rcov => :clobber_rcov) + SpecTask.new(:rcov) {|t| t.rcov = true} + end + + it "creates an rcov options list" do + MockTask.stub!(:create_task) + task = SpecTask.new(:rcov) {|t| t.rcov = true, t.rcov_opts = ['a','b']} + task.rcov_option_list.should == "a b" + end + end + end + end +end
\ No newline at end of file diff --git a/vendor/plugins/rspec/spec/spec/runner/configuration_spec.rb b/vendor/plugins/rspec/spec/spec/runner/configuration_spec.rb new file mode 100644 index 000000000..ea545d641 --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/runner/configuration_spec.rb @@ -0,0 +1,320 @@ +require 'spec_helper' + +module Spec + module Runner + describe Configuration do + with_sandboxed_options do + with_sandboxed_config do + + describe "#mock_with" do + it "should default mock framework to rspec" do + config.mock_framework.should =~ /^spec\/adapters\/mock_frameworks\/rspec$/ + end + + it "should set rspec mocking explicitly" do + config.mock_with(:rspec) + config.mock_framework.should =~ /^spec\/adapters\/mock_frameworks\/rspec$/ + end + + it "should set mocha" do + config.mock_with(:mocha) + config.mock_framework.should =~ /^spec\/adapters\/mock_frameworks\/mocha$/ + end + + it "should set flexmock" do + config.mock_with(:flexmock) + config.mock_framework.should =~ /^spec\/adapters\/mock_frameworks\/flexmock$/ + end + + it "should set rr" do + config.mock_with(:rr) + config.mock_framework.should =~ /^spec\/adapters\/mock_frameworks\/rr$/ + end + + it "should set an arbitrary adapter module" do + adapter = Module.new + config.mock_with(adapter) + config.mock_framework.should == adapter + end + end + + describe "#include" do + + before(:each) do + @example_group_class = Class.new(::Spec::Example::ExampleGroupDouble) {} + Spec::Example::ExampleGroupFactory.register(:foobar, @example_group_class) + end + + it "should include the submitted module in ExampleGroup subclasses" do + mod = Module.new + config.include mod + Class.new(@example_group_class).included_modules.should include(mod) + end + + it "should scope modules to be included for a specific type" do + mod = Module.new + config.include mod, :type => :foobar + Class.new(@example_group_class).included_modules.should include(mod) + end + + it "should not include modules in a type they are not intended for" do + mod = Module.new + @other_example_group_class = Class.new(::Spec::Example::ExampleGroupDouble) + Spec::Example::ExampleGroupFactory.register(:baz, @other_example_group_class) + + config.include mod, :type => :foobar + + Class.new(@other_example_group_class).included_modules.should_not include(mod) + end + + it "accepts an Array of types" do + mod = Module.new + @other_example_group_class = Class.new(::Spec::Example::ExampleGroupDouble) + Spec::Example::ExampleGroupFactory.register(:baz, @other_example_group_class) + + config.include mod, :type => [:foobar, :baz] + + Class.new(@example_group_class).included_modules.should include(mod) + Class.new(@other_example_group_class).included_modules.should include(mod) + end + + end + + describe "#extend" do + + before(:each) do + @example_group_class = Class.new(::Spec::Example::ExampleGroupDouble) {} + Spec::Example::ExampleGroupFactory.register(:foobar, @example_group_class) + end + + it "should extend all groups" do + mod = Module.new + ExampleGroup.should_receive(:extend).with(mod) + Spec::Runner.configuration.extend mod + end + + it "should extend specified groups" do + mod = Module.new + @example_group_class.should_receive(:extend).with(mod) + Spec::Runner.configuration.extend mod, :type => :foobar + end + + it "should not extend non-specified groups" do + @other_example_group_class = Class.new(::Spec::Example::ExampleGroupDouble) + Spec::Example::ExampleGroupFactory.register(:baz, @other_example_group_class) + + mod = Module.new + @other_example_group_class.should_not_receive(:extend) + + Spec::Runner.configuration.extend mod, :type => :foobar + end + + end + end + + describe "ordering methods: " do + + before(:each) do + @special_example_group = Class.new(::Spec::Example::ExampleGroupDouble).describe("special_example_group") + @special_child_example_group = Class.new(@special_example_group).describe("special_child_example_group") + @nonspecial_example_group = Class.new(::Spec::Example::ExampleGroupDouble).describe("nonspecial_example_group") + Spec::Example::ExampleGroupFactory.register(:special, @special_example_group) + Spec::Example::ExampleGroupFactory.register(:special_child, @special_child_example_group) + Spec::Example::ExampleGroupFactory.register(:non_special, @nonspecial_example_group) + @example_group = @special_child_example_group.describe "Special Example Group" + @unselected_example_group = Class.new(@nonspecial_example_group).describe "Non Special Example Group" + end + + describe "#prepend_before" do + it "prepends the before block on all instances of the passed in type" do + order = [] + config.prepend_before(:all) do + order << :prepend__before_all + end + config.prepend_before(:all, :type => :special) do + order << :special_prepend__before_all + end + config.prepend_before(:all, :type => :special_child) do + order << :special_child_prepend__before_all + end + config.prepend_before(:each) do + order << :prepend__before_each + end + config.prepend_before(:each, :type => :special) do + order << :special_prepend__before_each + end + config.prepend_before(:each, :type => :special_child) do + order << :special_child_prepend__before_each + end + config.prepend_before(:all, :type => :non_special) do + order << :special_prepend__before_all + end + config.prepend_before(:each, :type => :non_special) do + order << :special_prepend__before_each + end + @example_group.it "calls prepend_before" do + end + + @example_group.run(options) + order.should == [ + :prepend__before_all, + :special_prepend__before_all, + :special_child_prepend__before_all, + :prepend__before_each, + :special_prepend__before_each, + :special_child_prepend__before_each + ] + end + end + + describe "#append_before" do + + it "calls append_before on the type" do + order = [] + config.append_before(:all) do + order << :append_before_all + end + config.append_before(:all, :type => :special) do + order << :special_append_before_all + end + config.append_before(:all, :type => :special_child) do + order << :special_child_append_before_all + end + config.append_before do # default is :each + order << :append_before_each + end + config.append_before(:each, :type => :special) do + order << :special_append_before_each + end + config.append_before(:each, :type => :special_child) do + order << :special_child_append_before_each + end + config.append_before(:all, :type => :non_special) do + order << :special_append_before_all + end + config.append_before(:each, :type => :non_special) do + order << :special_append_before_each + end + @example_group.it "calls append_before" do + end + + @example_group.run(options) + order.should == [ + :append_before_all, + :special_append_before_all, + :special_child_append_before_all, + :append_before_each, + :special_append_before_each, + :special_child_append_before_each + ] + end + end + + describe "#prepend_after" do + + it "prepends the after block on all instances of the passed in type" do + order = [] + config.prepend_after(:all) do + order << :prepend__after_all + end + config.prepend_after(:all, :type => :special) do + order << :special_prepend__after_all + end + config.prepend_after(:all, :type => :special) do + order << :special_child_prepend__after_all + end + config.prepend_after(:each) do + order << :prepend__after_each + end + config.prepend_after(:each, :type => :special) do + order << :special_prepend__after_each + end + config.prepend_after(:each, :type => :special) do + order << :special_child_prepend__after_each + end + config.prepend_after(:all, :type => :non_special) do + order << :special_prepend__after_all + end + config.prepend_after(:each, :type => :non_special) do + order << :special_prepend__after_each + end + @example_group.it "calls prepend_after" do + end + + @example_group.run(options) + order.should == [ + :special_child_prepend__after_each, + :special_prepend__after_each, + :prepend__after_each, + :special_child_prepend__after_all, + :special_prepend__after_all, + :prepend__after_all + ] + end + end + + describe "#append_after" do + + it "calls append_after on the type" do + order = [] + config.append_after(:all) do + order << :append__after_all + end + config.append_after(:all, :type => :special) do + order << :special_append__after_all + end + config.append_after(:all, :type => :special_child) do + order << :special_child_append__after_all + end + config.append_after(:each) do + order << :append__after_each + end + config.append_after(:each, :type => :special) do + order << :special_append__after_each + end + config.append_after(:each, :type => :special_child) do + order << :special_child_append__after_each + end + config.append_after(:all, :type => :non_special) do + order << :non_special_append_after_all + end + config.append_after(:each, :type => :non_special) do + order << :non_special_append_after_each + end + @example_group.it "calls append_after" do + end + + @example_group.run(options) + order.should == [ + :special_child_append__after_each, + :special_append__after_each, + :append__after_each, + :special_child_append__after_all, + :special_append__after_all, + :append__after_all + ] + end + + end + + describe "#ignore_backtrace_patterns" do + it "adds patterns to ignore in backtrace" do + config.ignore_backtrace_patterns /custom_pattern/, /shoulda/, /spork/ + config.ignored_backtrace_patterns.should include(/custom_pattern/) + config.ignored_backtrace_patterns.should include(/shoulda/) + config.ignored_backtrace_patterns.should include(/spork/) + end + end + + describe "#predicate_matchers (DEPRECATED)" do + it "is deprecated" do + Spec.should_receive(:deprecate) + config.predicate_matchers[:foo] = :bar? + end + end + + end + end + end + end +end diff --git a/vendor/plugins/rspec/spec/spec/runner/example_group_runner_spec.rb b/vendor/plugins/rspec/spec/spec/runner/example_group_runner_spec.rb new file mode 100644 index 000000000..2b1601aca --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/runner/example_group_runner_spec.rb @@ -0,0 +1,26 @@ +require 'spec_helper' + +module Spec + module Runner + describe ExampleGroupRunner do + before(:each) do + err = StringIO.new('') + out = StringIO.new('') + @options = Options.new(err, out) + @runner = Spec::Runner::ExampleGroupRunner.new(@options) + end + + after(:each) do + Spec::Expectations.differ = nil + end + + describe "#load_files" do + it "should load UTF-8 encoded files" do + file = File.expand_path(File.dirname(__FILE__) + "/resources/utf8_encoded.rb") + @options.files << file + @runner.load_files(@options.files_to_load).should == @options.files_to_load + end + end + end + end +end diff --git a/vendor/plugins/rspec/spec/spec/runner/formatter/base_formatter_spec.rb b/vendor/plugins/rspec/spec/spec/runner/formatter/base_formatter_spec.rb new file mode 100644 index 000000000..a904bf380 --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/runner/formatter/base_formatter_spec.rb @@ -0,0 +1,30 @@ +require 'spec_helper' + +module Spec + module Runner + module Formatter + describe BaseFormatter do + subject { BaseFormatter.new(nil,nil) } + it {should respond_to(:start ).with(1).argument } + it {should respond_to(:example_group_started).with(1).argument } + it {should respond_to(:example_started ).with(1).argument } + # -3 indicates that one of the arguments is optional, with a default + # value assigned. This is due to deprecated_pending_location. Once + # that is removed, this should be changed to 2. + it {should respond_to(:example_pending ).with(-3).arguments} + it {should respond_to(:example_passed ).with(1).argument } + it {should respond_to(:example_failed ).with(3).arguments} + it {should respond_to(:start_dump ).with(0).arguments} + it {should respond_to(:dump_failure ).with(2).arguments} + it {should respond_to(:dump_summary ).with(4).arguments} + it {should respond_to(:dump_pending ).with(0).arguments} + it {should respond_to(:close ).with(0).arguments} + + it "deprecates add_example_group" do + Spec.should_receive(:deprecate) + subject.add_example_group(stub('example group')) + end + end + end + end +end diff --git a/vendor/plugins/rspec/spec/spec/runner/formatter/base_text_formatter_spec.rb b/vendor/plugins/rspec/spec/spec/runner/formatter/base_text_formatter_spec.rb new file mode 100644 index 000000000..e3677ad47 --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/runner/formatter/base_text_formatter_spec.rb @@ -0,0 +1,113 @@ +require 'spec_helper' +require 'spec/runner/formatter/base_text_formatter' + +module Spec + module Runner + module Formatter + describe BaseTextFormatter do + + before :all do + @sandbox = "spec/sandbox" + end + + it "should create the directory contained in WHERE if it does not exist" do + FileUtils.should_receive(:mkdir_p).with(@sandbox) + File.stub!(:open) + BaseTextFormatter.new({},"#{@sandbox}/temp.rb") + end + + context "(deprecations)" do + before(:each) do + Kernel.stub!(:warn) + @io = StringIO.new + @options = mock('options') + @options.stub!(:dry_run).and_return(false) + @options.stub!(:colour).and_return(false) + @options.stub!(:autospec).and_return(false) + @formatter = Class.new(BaseTextFormatter) do + def method_that_class_magenta(message) + magenta(message) + end + def method_that_class_colourise(message, failure) + colourise(message, failure) + end + end.new(@options, @io) + @failure = stub('failure', :pending_fixed? => false) + end + + context "#colourise" do + it "warns when subclasses call colourise" do + Spec.should_receive(:deprecate) + @formatter.method_that_class_colourise('this message', @failure) + end + + it "delegates to colorize_failure" do + @formatter.should_receive(:colorize_failure).with('this message', @failure) + @formatter.colourise('this message', @failure) + end + end + + context "#magenta" do + it "warns when subclasses call magenta" do + Spec.should_receive(:deprecate).with(/#magenta/) + @formatter.method_that_class_magenta('this message') + end + + it "delegates to red" do + @formatter.should_receive(:red).with('this message') + @formatter.method_that_class_magenta('this message') + end + end + + end + + describe "#colour (protected)" do + before(:each) do + @original_RSPEC_COLOR = ENV['RSPEC_COLOR'] + end + + it "does not colorize when output_to_file? returns true" do + out = StringIO.new + options = stub('options', :colour => true, :autospec => false) + formatter = BaseTextFormatter.new(options,out) + formatter.stub!(:output_to_tty?).and_return(true) + formatter.stub!(:output_to_file?).and_return(true) + formatter.__send__(:colour, 'foo', "\e[32m").should == "foo" + end + + it "colorizes when colour? and output_to_tty? return true" do + out = StringIO.new + options = stub('options', :colour => true, :autospec => false) + formatter = BaseTextFormatter.new(options,out) + formatter.stub!(:output_to_tty?).and_return(true) + formatter.__send__(:colour, 'foo', "\e[32m").should == "\e[32mfoo\e[0m" + end + + it "colorizes when ENV['RSPEC_COLOR'] is set even if colour? and output_to_tty? return false" do + out = StringIO.new + options = stub('options', :colour => false) + formatter = BaseTextFormatter.new(options,out) + formatter.stub!(:output_to_tty?).and_return(false) + + ENV['RSPEC_COLOR'] = 'true' + + formatter.__send__(:colour, 'foo', "\e[32m").should == "\e[32mfoo\e[0m" + end + + it "colorizes when autospec? is true even if colour? and output_to_tty? return false" do + out = StringIO.new + options = stub('options', :colour => true, :autospec => true) + formatter = BaseTextFormatter.new(options,out) + formatter.stub!(:output_to_tty?).and_return(false) + + formatter.__send__(:colour, 'foo', "\e[32m").should == "\e[32mfoo\e[0m" + end + + after(:each) do + ENV['RSPEC_COLOR'] = @original_RSPEC_COLOR + end + end + end + end + end +end diff --git a/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.7.html b/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.7.html new file mode 100644 index 000000000..5e489bba5 --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.7.html @@ -0,0 +1,377 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html + PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> + <title>RSpec results</title> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + <meta http-equiv="Expires" content="-1" /> + <meta http-equiv="Pragma" content="no-cache" /> + <style type="text/css"> + body { + margin: 0; + padding: 0; + background: #fff; + font-size: 80%; + } + </style> + <script type="text/javascript"> + // <![CDATA[ +function moveProgressBar(percentDone) { + document.getElementById("rspec-header").style.width = percentDone +"%"; +} +function makeRed(element_id) { + document.getElementById(element_id).style.background = '#C40D0D'; + document.getElementById(element_id).style.color = '#FFFFFF'; +} + +function makeYellow(element_id) { + if (element_id == "rspec-header" && document.getElementById(element_id).style.background != '#C40D0D') + { + document.getElementById(element_id).style.background = '#FAF834'; + document.getElementById(element_id).style.color = '#000000'; + } + else + { + document.getElementById(element_id).style.background = '#FAF834'; + document.getElementById(element_id).style.color = '#000000'; + } +} + + // ]]> + </script> + <style type="text/css"> +#rspec-header { + background: #65C400; color: #fff; height: 4em; +} + +.rspec-report h1 { + margin: 0px 10px 0px 10px; + padding: 10px; + font-family: "Lucida Grande", Helvetica, sans-serif; + font-size: 1.8em; + position: absolute; +} + +#summary { + margin: 0; padding: 5px 10px; + font-family: "Lucida Grande", Helvetica, sans-serif; + text-align: right; + top: 0px; + right: 0px; + float:right; +} + +#summary p { + margin: 0 0 0 2px; +} + +#summary #totals { + font-size: 1.2em; +} + +.example_group { + margin: 0 10px 5px; + background: #fff; +} + +dl { + margin: 0; padding: 0 0 5px; + font: normal 11px "Lucida Grande", Helvetica, sans-serif; +} + +dt { + padding: 3px; + background: #65C400; + color: #fff; + font-weight: bold; +} + +dd { + margin: 5px 0 5px 5px; + padding: 3px 3px 3px 18px; +} + +dd.spec.passed { + border-left: 5px solid #65C400; + border-bottom: 1px solid #65C400; + background: #DBFFB4; color: #3D7700; +} + +dd.spec.failed { + border-left: 5px solid #C20000; + border-bottom: 1px solid #C20000; + color: #C20000; background: #FFFBD3; +} + +dd.spec.not_implemented { + border-left: 5px solid #FAF834; + border-bottom: 1px solid #FAF834; + background: #FCFB98; color: #131313; +} + +dd.spec.pending_fixed { + border-left: 5px solid #0000C2; + border-bottom: 1px solid #0000C2; + color: #0000C2; background: #D3FBFF; +} + +.backtrace { + color: #000; + font-size: 12px; +} + +a { + color: #BE5C00; +} + +/* Ruby code, style similar to vibrant ink */ +.ruby { + font-size: 12px; + font-family: monospace; + color: white; + background-color: black; + padding: 0.1em 0 0.2em 0; +} + +.ruby .keyword { color: #FF6600; } +.ruby .constant { color: #339999; } +.ruby .attribute { color: white; } +.ruby .global { color: white; } +.ruby .module { color: white; } +.ruby .class { color: white; } +.ruby .string { color: #66FF00; } +.ruby .ident { color: white; } +.ruby .method { color: #FFCC00; } +.ruby .number { color: white; } +.ruby .char { color: white; } +.ruby .comment { color: #9933CC; } +.ruby .symbol { color: white; } +.ruby .regex { color: #44B4CC; } +.ruby .punct { color: white; } +.ruby .escape { color: white; } +.ruby .interp { color: white; } +.ruby .expr { color: white; } + +.ruby .offending { background-color: gray; } +.ruby .linenum { + width: 75px; + padding: 0.1em 1em 0.2em 0; + color: #000000; + background-color: #FFFBD3; +} + + </style> +</head> +<body> +<div class="rspec-report"> + +<div id="rspec-header"> + <div id="label"> + <h1>RSpec Code Examples</h1> + </div> + + <div id="summary"> + <p id="totals"> </p> + <p id="duration"> </p> + </div> +</div> + +<div class="results"> +<div class="example_group"> + <dl> + <dt id="example_group_1">Mocker</dt> + <script type="text/javascript">moveProgressBar('5.8');</script> + <dd class="spec passed"><span class="passed_spec_name">should be able to call mock()</span></dd> + <script type="text/javascript">makeRed('rspec-header');</script> + <script type="text/javascript">makeRed('example_group_1');</script> + <script type="text/javascript">moveProgressBar('11.7');</script> + <dd class="spec failed"> + <span class="failed_spec_name">should fail when expected message not received</span> + <div class="failure" id="failure_1"> + <div class="message"><pre>Mock "poke me" expected :poke with (any args) once, but received it 0 times</pre></div> + <div class="backtrace"><pre>./examples/failing/mocking_example.rb:11: +./spec/spec_helper.rb:42:in `run_with' +./spec/spec/runner/formatter/html_formatter_spec.rb:41: +./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `chdir' +./spec/spec/runner/formatter/html_formatter_spec.rb:29:</pre></div> + <pre class="ruby"><code><span class="linenum">9</span> <span class="ident">it</span> <span class="punct">"</span><span class="string">should fail when expected message not received</span><span class="punct">"</span> <span class="keyword">do</span> +<span class="linenum">10</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">("</span><span class="string">poke me</span><span class="punct">")</span> +<span class="offending"><span class="linenum">11</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:poke</span><span class="punct">)</span></span> +<span class="linenum">12</span> <span class="keyword">end</span> +<span class="linenum">13</span> </code></pre> + </div> + </dd> + <script type="text/javascript">moveProgressBar('17.6');</script> + <dd class="spec failed"> + <span class="failed_spec_name">should fail when messages are received out of order</span> + <div class="failure" id="failure_2"> + <div class="message"><pre>Mock "one two three" received :three out of order</pre></div> + <div class="backtrace"><pre>./examples/failing/mocking_example.rb:20: +./spec/spec_helper.rb:42:in `run_with' +./spec/spec/runner/formatter/html_formatter_spec.rb:41: +./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `chdir' +./spec/spec/runner/formatter/html_formatter_spec.rb:29:</pre></div> + <pre class="ruby"><code><span class="linenum">18</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:three</span><span class="punct">).</span><span class="ident">ordered</span> +<span class="linenum">19</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">one</span> +<span class="offending"><span class="linenum">20</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">three</span></span> +<span class="linenum">21</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">two</span> +<span class="linenum">22</span> <span class="keyword">end</span></code></pre> + </div> + </dd> + <script type="text/javascript">moveProgressBar('23.5');</script> + <dd class="spec failed"> + <span class="failed_spec_name">should get yelled at when sending unexpected messages</span> + <div class="failure" id="failure_3"> + <div class="message"><pre>Mock "don't talk to me" expected :any_message_at_all with (no args) 0 times, but received it once</pre></div> + <div class="backtrace"><pre>./examples/failing/mocking_example.rb:27: +./spec/spec_helper.rb:42:in `run_with' +./spec/spec/runner/formatter/html_formatter_spec.rb:41: +./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `chdir' +./spec/spec/runner/formatter/html_formatter_spec.rb:29:</pre></div> + <pre class="ruby"><code><span class="linenum">25</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">("</span><span class="string">don't talk to me</span><span class="punct">")</span> +<span class="linenum">26</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_not_receive</span><span class="punct">(</span><span class="symbol">:any_message_at_all</span><span class="punct">)</span> +<span class="offending"><span class="linenum">27</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">any_message_at_all</span></span> +<span class="linenum">28</span> <span class="keyword">end</span></code></pre> + </div> + </dd> + <script type="text/javascript">moveProgressBar('29.4');</script> + <dd class="spec pending_fixed"> + <span class="failed_spec_name">has a bug we need to fix</span> + <div class="failure" id="failure_4"> + <div class="message"><pre>Expected pending 'here is the bug' to fail. No Error was raised.</pre></div> + <div class="backtrace"><pre>./examples/failing/mocking_example.rb:31: +./spec/spec_helper.rb:42:in `run_with' +./spec/spec/runner/formatter/html_formatter_spec.rb:41: +./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `chdir' +./spec/spec/runner/formatter/html_formatter_spec.rb:29:</pre></div> + <pre class="ruby"><code><span class="linenum">29</span> +<span class="linenum">30</span> <span class="ident">it</span> <span class="punct">"</span><span class="string">has a bug we need to fix</span><span class="punct">"</span> <span class="keyword">do</span> +<span class="offending"><span class="linenum">31</span> <span class="ident">pending</span> <span class="punct">"</span><span class="string">here is the bug</span><span class="punct">"</span> <span class="keyword">do</span></span> +<span class="linenum">32</span> <span class="comment"># Actually, no. It's fixed. This will fail because it passes :-)</span> +<span class="linenum">33</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">("</span><span class="string">Bug</span><span class="punct">")</span></code></pre> + </div> + </dd> + </dl> +</div> +<div class="example_group"> + <dl> + <dt id="example_group_2">Running specs with --diff</dt> + <script type="text/javascript">makeRed('example_group_2');</script> + <script type="text/javascript">moveProgressBar('35.2');</script> + <dd class="spec failed"> + <span class="failed_spec_name">should print diff of different strings</span> + <div class="failure" id="failure_5"> + <div class="message"><pre>expected: "RSpec is a\nbehaviour driven development\nframework for Ruby\n", + got: "RSpec is a\nbehavior driven development\nframework for Ruby\n" (using ==) + + Diff: +@@ -1,4 +1,4 @@ + RSpec is a +-behaviour driven development ++behavior driven development + framework for Ruby +</pre></div> + <div class="backtrace"><pre>./examples/failing/diffing_spec.rb:13: +./spec/spec_helper.rb:42:in `run_with' +./spec/spec/runner/formatter/html_formatter_spec.rb:41: +./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `chdir' +./spec/spec/runner/formatter/html_formatter_spec.rb:29:</pre></div> + <pre class="ruby"><code><span class="linenum">11</span><span class="ident">framework</span> <span class="keyword">for</span> <span class="constant">Ruby</span> +<span class="linenum">12</span><span class="constant">EOF</span> +<span class="offending"><span class="linenum">13</span> <span class="ident">usa</span><span class="punct">.</span><span class="ident">should</span> <span class="punct">==</span> <span class="ident">uk</span></span> +<span class="linenum">14</span> <span class="keyword">end</span></code></pre> + </div> + </dd> + <script type="text/javascript">moveProgressBar('41.1');</script> + <dd class="spec failed"> + <span class="failed_spec_name">should print diff of different objects' pretty representation</span> + <div class="failure" id="failure_6"> + <div class="message"><pre> +expected <Animal +name=bob, +species=tortoise +> + + got <Animal +name=bob, +species=giraffe +> + + +(compared using eql?) +</pre></div> + <div class="backtrace"><pre>./examples/failing/diffing_spec.rb:34: +./spec/spec_helper.rb:42:in `run_with' +./spec/spec/runner/formatter/html_formatter_spec.rb:41: +./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `chdir' +./spec/spec/runner/formatter/html_formatter_spec.rb:29:</pre></div> + <pre class="ruby"><code><span class="linenum">32</span> <span class="ident">expected</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">"</span><span class="string">bob</span><span class="punct">",</span> <span class="punct">"</span><span class="string">giraffe</span><span class="punct">"</span> +<span class="linenum">33</span> <span class="ident">actual</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">"</span><span class="string">bob</span><span class="punct">",</span> <span class="punct">"</span><span class="string">tortoise</span><span class="punct">"</span> +<span class="offending"><span class="linenum">34</span> <span class="ident">expected</span><span class="punct">.</span><span class="ident">should</span> <span class="ident">eql</span><span class="punct">(</span><span class="ident">actual</span><span class="punct">)</span></span> +<span class="linenum">35</span> <span class="keyword">end</span> +<span class="linenum">36</span><span class="keyword">end</span></code></pre> + </div> + </dd> + </dl> +</div> +<div class="example_group"> + <dl> + <dt id="example_group_3">A consumer of a stub</dt> + <script type="text/javascript">moveProgressBar('47.0');</script> + <dd class="spec passed"><span class="passed_spec_name">should be able to stub methods on any Object</span></dd> + </dl> +</div> +<div class="example_group"> + <dl> + <dt id="example_group_4">A stubbed method on a class</dt> + <script type="text/javascript">moveProgressBar('52.9');</script> + <dd class="spec passed"><span class="passed_spec_name">should return the stubbed value</span></dd> + <script type="text/javascript">moveProgressBar('58.8');</script> + <dd class="spec passed"><span class="passed_spec_name">should revert to the original method after each spec</span></dd> + <script type="text/javascript">moveProgressBar('64.7');</script> + <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd> + </dl> +</div> +<div class="example_group"> + <dl> + <dt id="example_group_5">A mock</dt> + <script type="text/javascript">moveProgressBar('70.5');</script> + <dd class="spec passed"><span class="passed_spec_name">can stub!</span></dd> + <script type="text/javascript">moveProgressBar('76.4');</script> + <dd class="spec passed"><span class="passed_spec_name">can stub! and mock</span></dd> + <script type="text/javascript">moveProgressBar('82.3');</script> + <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd> + </dl> +</div> +<div class="example_group"> + <dl> + <dt id="example_group_6">pending example (using pending method)</dt> + <script type="text/javascript">makeYellow('example_group_6');</script> + <script type="text/javascript">moveProgressBar('88.2');</script> + <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as "PENDING: for some reason" (PENDING: for some reason)</span></dd> + </dl> +</div> +<div class="example_group"> + <dl> + <dt id="example_group_7">pending example (with no block)</dt> + <script type="text/javascript">makeYellow('example_group_7');</script> + <script type="text/javascript">moveProgressBar('94.1');</script> + <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as "PENDING: Not Yet Implemented" (PENDING: Not Yet Implemented)</span></dd> + </dl> +</div> +<div class="example_group"> + <dl> + <dt id="example_group_8">pending example (with block for pending)</dt> + <script type="text/javascript">makeYellow('example_group_8');</script> + <script type="text/javascript">moveProgressBar('100.0');</script> + <dd class="spec not_implemented"><span class="not_implemented_spec_name">should have a failing block, passed to pending, reported as "PENDING: for some reason" (PENDING: for some reason)</span></dd> + </dl> +</div> +<script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>x seconds</strong>";</script> +<script type="text/javascript">document.getElementById('totals').innerHTML = "17 examples, 6 failures, 3 pending";</script> +</div> +</div> +</body> +</html> diff --git a/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.9.1.html b/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.9.1.html new file mode 100644 index 000000000..5d0be3bfe --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.9.1.html @@ -0,0 +1,377 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html + PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> + <title>RSpec results</title> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + <meta http-equiv="Expires" content="-1" /> + <meta http-equiv="Pragma" content="no-cache" /> + <style type="text/css"> + body { + margin: 0; + padding: 0; + background: #fff; + font-size: 80%; + } + </style> + <script type="text/javascript"> + // <![CDATA[ +function moveProgressBar(percentDone) { + document.getElementById("rspec-header").style.width = percentDone +"%"; +} +function makeRed(element_id) { + document.getElementById(element_id).style.background = '#C40D0D'; + document.getElementById(element_id).style.color = '#FFFFFF'; +} + +function makeYellow(element_id) { + if (element_id == "rspec-header" && document.getElementById(element_id).style.background != '#C40D0D') + { + document.getElementById(element_id).style.background = '#FAF834'; + document.getElementById(element_id).style.color = '#000000'; + } + else + { + document.getElementById(element_id).style.background = '#FAF834'; + document.getElementById(element_id).style.color = '#000000'; + } +} + + // ]]> + </script> + <style type="text/css"> +#rspec-header { + background: #65C400; color: #fff; height: 4em; +} + +.rspec-report h1 { + margin: 0px 10px 0px 10px; + padding: 10px; + font-family: "Lucida Grande", Helvetica, sans-serif; + font-size: 1.8em; + position: absolute; +} + +#summary { + margin: 0; padding: 5px 10px; + font-family: "Lucida Grande", Helvetica, sans-serif; + text-align: right; + top: 0px; + right: 0px; + float:right; +} + +#summary p { + margin: 0 0 0 2px; +} + +#summary #totals { + font-size: 1.2em; +} + +.example_group { + margin: 0 10px 5px; + background: #fff; +} + +dl { + margin: 0; padding: 0 0 5px; + font: normal 11px "Lucida Grande", Helvetica, sans-serif; +} + +dt { + padding: 3px; + background: #65C400; + color: #fff; + font-weight: bold; +} + +dd { + margin: 5px 0 5px 5px; + padding: 3px 3px 3px 18px; +} + +dd.spec.passed { + border-left: 5px solid #65C400; + border-bottom: 1px solid #65C400; + background: #DBFFB4; color: #3D7700; +} + +dd.spec.failed { + border-left: 5px solid #C20000; + border-bottom: 1px solid #C20000; + color: #C20000; background: #FFFBD3; +} + +dd.spec.not_implemented { + border-left: 5px solid #FAF834; + border-bottom: 1px solid #FAF834; + background: #FCFB98; color: #131313; +} + +dd.spec.pending_fixed { + border-left: 5px solid #0000C2; + border-bottom: 1px solid #0000C2; + color: #0000C2; background: #D3FBFF; +} + +.backtrace { + color: #000; + font-size: 12px; +} + +a { + color: #BE5C00; +} + +/* Ruby code, style similar to vibrant ink */ +.ruby { + font-size: 12px; + font-family: monospace; + color: white; + background-color: black; + padding: 0.1em 0 0.2em 0; +} + +.ruby .keyword { color: #FF6600; } +.ruby .constant { color: #339999; } +.ruby .attribute { color: white; } +.ruby .global { color: white; } +.ruby .module { color: white; } +.ruby .class { color: white; } +.ruby .string { color: #66FF00; } +.ruby .ident { color: white; } +.ruby .method { color: #FFCC00; } +.ruby .number { color: white; } +.ruby .char { color: white; } +.ruby .comment { color: #9933CC; } +.ruby .symbol { color: white; } +.ruby .regex { color: #44B4CC; } +.ruby .punct { color: white; } +.ruby .escape { color: white; } +.ruby .interp { color: white; } +.ruby .expr { color: white; } + +.ruby .offending { background-color: gray; } +.ruby .linenum { + width: 75px; + padding: 0.1em 1em 0.2em 0; + color: #000000; + background-color: #FFFBD3; +} + + </style> +</head> +<body> +<div class="rspec-report"> + +<div id="rspec-header"> + <div id="label"> + <h1>RSpec Code Examples</h1> + </div> + + <div id="summary"> + <p id="totals"> </p> + <p id="duration"> </p> + </div> +</div> + +<div class="results"> +<div class="example_group"> + <dl> + <dt id="example_group_1">Mocker</dt> + <script type="text/javascript">moveProgressBar('5.8');</script> + <dd class="spec passed"><span class="passed_spec_name">should be able to call mock()</span></dd> + <script type="text/javascript">makeRed('rspec-header');</script> + <script type="text/javascript">makeRed('example_group_1');</script> + <script type="text/javascript">moveProgressBar('11.7');</script> + <dd class="spec failed"> + <span class="failed_spec_name">should fail when expected message not received</span> + <div class="failure" id="failure_1"> + <div class="message"><pre>Mock "poke me" expected :poke with (any args) once, but received it 0 times</pre></div> + <div class="backtrace"><pre>./examples/failing/mocking_example.rb:11:in `block (2 levels) in <top (required)>' +./spec/spec_helper.rb:42:in `run_with' +./spec/spec/runner/formatter/html_formatter_spec.rb:41:in `block (4 levels) in <module:Formatter>' +./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `chdir' +./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `block (3 levels) in <module:Formatter>'</pre></div> + <pre class="ruby"><code><span class="linenum">9</span> <span class="ident">it</span> <span class="punct">"</span><span class="string">should fail when expected message not received</span><span class="punct">"</span> <span class="keyword">do</span> +<span class="linenum">10</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">("</span><span class="string">poke me</span><span class="punct">")</span> +<span class="offending"><span class="linenum">11</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:poke</span><span class="punct">)</span></span> +<span class="linenum">12</span> <span class="keyword">end</span> +<span class="linenum">13</span> </code></pre> + </div> + </dd> + <script type="text/javascript">moveProgressBar('17.6');</script> + <dd class="spec failed"> + <span class="failed_spec_name">should fail when messages are received out of order</span> + <div class="failure" id="failure_2"> + <div class="message"><pre>Mock "one two three" received :three out of order</pre></div> + <div class="backtrace"><pre>./examples/failing/mocking_example.rb:20:in `block (2 levels) in <top (required)>' +./spec/spec_helper.rb:42:in `run_with' +./spec/spec/runner/formatter/html_formatter_spec.rb:41:in `block (4 levels) in <module:Formatter>' +./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `chdir' +./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `block (3 levels) in <module:Formatter>'</pre></div> + <pre class="ruby"><code><span class="linenum">18</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:three</span><span class="punct">).</span><span class="ident">ordered</span> +<span class="linenum">19</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">one</span> +<span class="offending"><span class="linenum">20</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">three</span></span> +<span class="linenum">21</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">two</span> +<span class="linenum">22</span> <span class="keyword">end</span></code></pre> + </div> + </dd> + <script type="text/javascript">moveProgressBar('23.5');</script> + <dd class="spec failed"> + <span class="failed_spec_name">should get yelled at when sending unexpected messages</span> + <div class="failure" id="failure_3"> + <div class="message"><pre>Mock "don't talk to me" expected :any_message_at_all with (no args) 0 times, but received it once</pre></div> + <div class="backtrace"><pre>./examples/failing/mocking_example.rb:27:in `block (2 levels) in <top (required)>' +./spec/spec_helper.rb:42:in `run_with' +./spec/spec/runner/formatter/html_formatter_spec.rb:41:in `block (4 levels) in <module:Formatter>' +./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `chdir' +./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `block (3 levels) in <module:Formatter>'</pre></div> + <pre class="ruby"><code><span class="linenum">25</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">("</span><span class="string">don't talk to me</span><span class="punct">")</span> +<span class="linenum">26</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_not_receive</span><span class="punct">(</span><span class="symbol">:any_message_at_all</span><span class="punct">)</span> +<span class="offending"><span class="linenum">27</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">any_message_at_all</span></span> +<span class="linenum">28</span> <span class="keyword">end</span></code></pre> + </div> + </dd> + <script type="text/javascript">moveProgressBar('29.4');</script> + <dd class="spec pending_fixed"> + <span class="failed_spec_name">has a bug we need to fix</span> + <div class="failure" id="failure_4"> + <div class="message"><pre>Expected pending 'here is the bug' to fail. No Error was raised.</pre></div> + <div class="backtrace"><pre>./examples/failing/mocking_example.rb:31:in `block (2 levels) in <top (required)>' +./spec/spec_helper.rb:42:in `run_with' +./spec/spec/runner/formatter/html_formatter_spec.rb:41:in `block (4 levels) in <module:Formatter>' +./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `chdir' +./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `block (3 levels) in <module:Formatter>'</pre></div> + <pre class="ruby"><code><span class="linenum">29</span> +<span class="linenum">30</span> <span class="ident">it</span> <span class="punct">"</span><span class="string">has a bug we need to fix</span><span class="punct">"</span> <span class="keyword">do</span> +<span class="offending"><span class="linenum">31</span> <span class="ident">pending</span> <span class="punct">"</span><span class="string">here is the bug</span><span class="punct">"</span> <span class="keyword">do</span></span> +<span class="linenum">32</span> <span class="comment"># Actually, no. It's fixed. This will fail because it passes :-)</span> +<span class="linenum">33</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">("</span><span class="string">Bug</span><span class="punct">")</span></code></pre> + </div> + </dd> + </dl> +</div> +<div class="example_group"> + <dl> + <dt id="example_group_2">Running specs with --diff</dt> + <script type="text/javascript">makeRed('example_group_2');</script> + <script type="text/javascript">moveProgressBar('35.2');</script> + <dd class="spec failed"> + <span class="failed_spec_name">should print diff of different strings</span> + <div class="failure" id="failure_5"> + <div class="message"><pre>expected: "RSpec is a\nbehaviour driven development\nframework for Ruby\n", + got: "RSpec is a\nbehavior driven development\nframework for Ruby\n" (using ==) + + Diff: +@@ -1,4 +1,4 @@ + RSpec is a +-behaviour driven development ++behavior driven development + framework for Ruby +</pre></div> + <div class="backtrace"><pre>./examples/failing/diffing_spec.rb:13:in `block (2 levels) in <top (required)>' +./spec/spec_helper.rb:42:in `run_with' +./spec/spec/runner/formatter/html_formatter_spec.rb:41:in `block (4 levels) in <module:Formatter>' +./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `chdir' +./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `block (3 levels) in <module:Formatter>'</pre></div> + <pre class="ruby"><code><span class="linenum">11</span><span class="ident">framework</span> <span class="keyword">for</span> <span class="constant">Ruby</span> +<span class="linenum">12</span><span class="constant">EOF</span> +<span class="offending"><span class="linenum">13</span> <span class="ident">usa</span><span class="punct">.</span><span class="ident">should</span> <span class="punct">==</span> <span class="ident">uk</span></span> +<span class="linenum">14</span> <span class="keyword">end</span></code></pre> + </div> + </dd> + <script type="text/javascript">moveProgressBar('41.1');</script> + <dd class="spec failed"> + <span class="failed_spec_name">should print diff of different objects' pretty representation</span> + <div class="failure" id="failure_6"> + <div class="message"><pre> +expected <Animal +name=bob, +species=tortoise +> + + got <Animal +name=bob, +species=giraffe +> + + +(compared using eql?) +</pre></div> + <div class="backtrace"><pre>./examples/failing/diffing_spec.rb:34:in `block (2 levels) in <top (required)>' +./spec/spec_helper.rb:42:in `run_with' +./spec/spec/runner/formatter/html_formatter_spec.rb:41:in `block (4 levels) in <module:Formatter>' +./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `chdir' +./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `block (3 levels) in <module:Formatter>'</pre></div> + <pre class="ruby"><code><span class="linenum">32</span> <span class="ident">expected</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">"</span><span class="string">bob</span><span class="punct">",</span> <span class="punct">"</span><span class="string">giraffe</span><span class="punct">"</span> +<span class="linenum">33</span> <span class="ident">actual</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">"</span><span class="string">bob</span><span class="punct">",</span> <span class="punct">"</span><span class="string">tortoise</span><span class="punct">"</span> +<span class="offending"><span class="linenum">34</span> <span class="ident">expected</span><span class="punct">.</span><span class="ident">should</span> <span class="ident">eql</span><span class="punct">(</span><span class="ident">actual</span><span class="punct">)</span></span> +<span class="linenum">35</span> <span class="keyword">end</span> +<span class="linenum">36</span><span class="keyword">end</span></code></pre> + </div> + </dd> + </dl> +</div> +<div class="example_group"> + <dl> + <dt id="example_group_3">A consumer of a stub</dt> + <script type="text/javascript">moveProgressBar('47.0');</script> + <dd class="spec passed"><span class="passed_spec_name">should be able to stub methods on any Object</span></dd> + </dl> +</div> +<div class="example_group"> + <dl> + <dt id="example_group_4">A stubbed method on a class</dt> + <script type="text/javascript">moveProgressBar('52.9');</script> + <dd class="spec passed"><span class="passed_spec_name">should return the stubbed value</span></dd> + <script type="text/javascript">moveProgressBar('58.8');</script> + <dd class="spec passed"><span class="passed_spec_name">should revert to the original method after each spec</span></dd> + <script type="text/javascript">moveProgressBar('64.7');</script> + <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd> + </dl> +</div> +<div class="example_group"> + <dl> + <dt id="example_group_5">A mock</dt> + <script type="text/javascript">moveProgressBar('70.5');</script> + <dd class="spec passed"><span class="passed_spec_name">can stub!</span></dd> + <script type="text/javascript">moveProgressBar('76.4');</script> + <dd class="spec passed"><span class="passed_spec_name">can stub! and mock</span></dd> + <script type="text/javascript">moveProgressBar('82.3');</script> + <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd> + </dl> +</div> +<div class="example_group"> + <dl> + <dt id="example_group_6">pending example (using pending method)</dt> + <script type="text/javascript">makeYellow('example_group_6');</script> + <script type="text/javascript">moveProgressBar('88.2');</script> + <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as "PENDING: for some reason" (PENDING: for some reason)</span></dd> + </dl> +</div> +<div class="example_group"> + <dl> + <dt id="example_group_7">pending example (with no block)</dt> + <script type="text/javascript">makeYellow('example_group_7');</script> + <script type="text/javascript">moveProgressBar('94.1');</script> + <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as "PENDING: Not Yet Implemented" (PENDING: Not Yet Implemented)</span></dd> + </dl> +</div> +<div class="example_group"> + <dl> + <dt id="example_group_8">pending example (with block for pending)</dt> + <script type="text/javascript">makeYellow('example_group_8');</script> + <script type="text/javascript">moveProgressBar('100.0');</script> + <dd class="spec not_implemented"><span class="not_implemented_spec_name">should have a failing block, passed to pending, reported as "PENDING: for some reason" (PENDING: for some reason)</span></dd> + </dl> +</div> +<script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>x seconds</strong>";</script> +<script type="text/javascript">document.getElementById('totals').innerHTML = "17 examples, 6 failures, 3 pending";</script> +</div> +</div> +</body> +</html> diff --git a/vendor/plugins/rspec/spec/spec/runner/formatter/text_mate_formatted-1.8.6-jruby.html b/vendor/plugins/rspec/spec/spec/runner/formatter/text_mate_formatted-1.8.6-jruby.html new file mode 100644 index 000000000..bbef5eb8b --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/runner/formatter/text_mate_formatted-1.8.6-jruby.html @@ -0,0 +1,371 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html + PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> + <title>RSpec results</title> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + <meta http-equiv="Expires" content="-1" /> + <meta http-equiv="Pragma" content="no-cache" /> + <style type="text/css"> + body { + margin: 0; + padding: 0; + background: #fff; + font-size: 80%; + } + </style> + <script type="text/javascript"> + // <![CDATA[ +function moveProgressBar(percentDone) { + document.getElementById("rspec-header").style.width = percentDone +"%"; +} +function makeRed(element_id) { + document.getElementById(element_id).style.background = '#C40D0D'; + document.getElementById(element_id).style.color = '#FFFFFF'; +} + +function makeYellow(element_id) { + if (element_id == "rspec-header" && document.getElementById(element_id).style.background != '#C40D0D') + { + document.getElementById(element_id).style.background = '#FAF834'; + document.getElementById(element_id).style.color = '#000000'; + } + else + { + document.getElementById(element_id).style.background = '#FAF834'; + document.getElementById(element_id).style.color = '#000000'; + } +} + + // ]]> + </script> + <style type="text/css"> +#rspec-header { + background: #65C400; color: #fff; height: 4em; +} + +.rspec-report h1 { + margin: 0px 10px 0px 10px; + padding: 10px; + font-family: "Lucida Grande", Helvetica, sans-serif; + font-size: 1.8em; + position: absolute; +} + +#summary { + margin: 0; padding: 5px 10px; + font-family: "Lucida Grande", Helvetica, sans-serif; + text-align: right; + top: 0px; + right: 0px; + float:right; +} + +#summary p { + margin: 0 0 0 2px; +} + +#summary #totals { + font-size: 1.2em; +} + +.example_group { + margin: 0 10px 5px; + background: #fff; +} + +dl { + margin: 0; padding: 0 0 5px; + font: normal 11px "Lucida Grande", Helvetica, sans-serif; +} + +dt { + padding: 3px; + background: #65C400; + color: #fff; + font-weight: bold; +} + +dd { + margin: 5px 0 5px 5px; + padding: 3px 3px 3px 18px; +} + +dd.spec.passed { + border-left: 5px solid #65C400; + border-bottom: 1px solid #65C400; + background: #DBFFB4; color: #3D7700; +} + +dd.spec.failed { + border-left: 5px solid #C20000; + border-bottom: 1px solid #C20000; + color: #C20000; background: #FFFBD3; +} + +dd.spec.not_implemented { + border-left: 5px solid #FAF834; + border-bottom: 1px solid #FAF834; + background: #FCFB98; color: #131313; +} + +dd.spec.pending_fixed { + border-left: 5px solid #0000C2; + border-bottom: 1px solid #0000C2; + color: #0000C2; background: #D3FBFF; +} + +.backtrace { + color: #000; + font-size: 12px; +} + +a { + color: #BE5C00; +} + +/* Ruby code, style similar to vibrant ink */ +.ruby { + font-size: 12px; + font-family: monospace; + color: white; + background-color: black; + padding: 0.1em 0 0.2em 0; +} + +.ruby .keyword { color: #FF6600; } +.ruby .constant { color: #339999; } +.ruby .attribute { color: white; } +.ruby .global { color: white; } +.ruby .module { color: white; } +.ruby .class { color: white; } +.ruby .string { color: #66FF00; } +.ruby .ident { color: white; } +.ruby .method { color: #FFCC00; } +.ruby .number { color: white; } +.ruby .char { color: white; } +.ruby .comment { color: #9933CC; } +.ruby .symbol { color: white; } +.ruby .regex { color: #44B4CC; } +.ruby .punct { color: white; } +.ruby .escape { color: white; } +.ruby .interp { color: white; } +.ruby .expr { color: white; } + +.ruby .offending { background-color: gray; } +.ruby .linenum { + width: 75px; + padding: 0.1em 1em 0.2em 0; + color: #000000; + background-color: #FFFBD3; +} + + </style> +</head> +<body> +<div class="rspec-report"> + +<div id="rspec-header"> + <div id="label"> + <h1>RSpec Code Examples</h1> + </div> + + <div id="summary"> + <p id="totals"> </p> + <p id="duration"> </p> + </div> +</div> + +<div class="results"> +<div class="example_group"> + <dl> + <dt id="example_group_1">Mocker</dt> + <script type="text/javascript">moveProgressBar('5.8');</script> + <dd class="spec passed"><span class="passed_spec_name">should be able to call mock()</span></dd> + <script type="text/javascript">makeRed('rspec-header');</script> + <script type="text/javascript">makeRed('example_group_1');</script> + <script type="text/javascript">moveProgressBar('11.7');</script> + <dd class="spec failed"> + <span class="failed_spec_name">should fail when expected message not received</span> + <div class="failure" id="failure_1"> + <div class="message"><pre>Mock "poke me" expected :poke with (any args) once, but received it 0 times</pre></div> + <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/mocking_example.rb&line=11">examples/failing/mocking_example.rb:11</a> +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a> +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir' +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> </pre></div> + <pre class="ruby"><code><span class="linenum">9</span> <span class="ident">it</span> <span class="punct">"</span><span class="string">should fail when expected message not received</span><span class="punct">"</span> <span class="keyword">do</span> +<span class="linenum">10</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">("</span><span class="string">poke me</span><span class="punct">")</span> +<span class="offending"><span class="linenum">11</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:poke</span><span class="punct">)</span></span> +<span class="linenum">12</span> <span class="keyword">end</span> +<span class="linenum">13</span> </code></pre> + </div> + </dd> + <script type="text/javascript">moveProgressBar('17.6');</script> + <dd class="spec failed"> + <span class="failed_spec_name">should fail when messages are received out of order</span> + <div class="failure" id="failure_2"> + <div class="message"><pre>Mock "one two three" received :three out of order</pre></div> + <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/mocking_example.rb&line=20">examples/failing/mocking_example.rb:20</a> +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a> +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir' +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> </pre></div> + <pre class="ruby"><code><span class="linenum">18</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:three</span><span class="punct">).</span><span class="ident">ordered</span> +<span class="linenum">19</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">one</span> +<span class="offending"><span class="linenum">20</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">three</span></span> +<span class="linenum">21</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">two</span> +<span class="linenum">22</span> <span class="keyword">end</span></code></pre> + </div> + </dd> + <script type="text/javascript">moveProgressBar('23.5');</script> + <dd class="spec failed"> + <span class="failed_spec_name">should get yelled at when sending unexpected messages</span> + <div class="failure" id="failure_3"> + <div class="message"><pre>Mock "don't talk to me" expected :any_message_at_all with (no args) 0 times, but received it once</pre></div> + <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/mocking_example.rb&line=27">examples/failing/mocking_example.rb:27</a> +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a> +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir' +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> </pre></div> + <pre class="ruby"><code><span class="linenum">25</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">("</span><span class="string">don't talk to me</span><span class="punct">")</span> +<span class="linenum">26</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_not_receive</span><span class="punct">(</span><span class="symbol">:any_message_at_all</span><span class="punct">)</span> +<span class="offending"><span class="linenum">27</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">any_message_at_all</span></span> +<span class="linenum">28</span> <span class="keyword">end</span></code></pre> + </div> + </dd> + <script type="text/javascript">moveProgressBar('29.4');</script> + <dd class="spec pending_fixed"> + <span class="failed_spec_name">has a bug we need to fix</span> + <div class="failure" id="failure_4"> + <div class="message"><pre>Expected pending 'here is the bug' to fail. No Error was raised.</pre></div> + <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/mocking_example.rb&line=31">examples/failing/mocking_example.rb:31</a> +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a> +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir' +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> </pre></div> + <pre class="ruby"><code><span class="linenum">29</span> +<span class="linenum">30</span> <span class="ident">it</span> <span class="punct">"</span><span class="string">has a bug we need to fix</span><span class="punct">"</span> <span class="keyword">do</span> +<span class="offending"><span class="linenum">31</span> <span class="ident">pending</span> <span class="punct">"</span><span class="string">here is the bug</span><span class="punct">"</span> <span class="keyword">do</span></span> +<span class="linenum">32</span> <span class="comment"># Actually, no. It's fixed. This will fail because it passes :-)</span> +<span class="linenum">33</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">("</span><span class="string">Bug</span><span class="punct">")</span></code></pre> + </div> + </dd> + </dl> +</div> +<div class="example_group"> + <dl> + <dt id="example_group_2">Running specs with --diff</dt> + <script type="text/javascript">makeRed('example_group_2');</script> + <script type="text/javascript">moveProgressBar('35.2');</script> + <dd class="spec failed"> + <span class="failed_spec_name">should print diff of different strings</span> + <div class="failure" id="failure_5"> + <div class="message"><pre>expected: "RSpec is a\nbehaviour driven development\nframework for Ruby\n", + got: "RSpec is a\nbehavior driven development\nframework for Ruby\n" (using ==) + + Diff: +@@ -1,4 +1,4 @@ + RSpec is a +-behaviour driven development ++behavior driven development + framework for Ruby +</pre></div> + <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/diffing_spec.rb&line=13">examples/failing/diffing_spec.rb:13</a> +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a> +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir' +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> </pre></div> + <pre class="ruby"><code><span class="linenum">11</span><span class="ident">framework</span> <span class="keyword">for</span> <span class="constant">Ruby</span> +<span class="linenum">12</span><span class="constant">EOF</span> +<span class="offending"><span class="linenum">13</span> <span class="ident">usa</span><span class="punct">.</span><span class="ident">should</span> <span class="punct">==</span> <span class="ident">uk</span></span> +<span class="linenum">14</span> <span class="keyword">end</span></code></pre> + </div> + </dd> + <script type="text/javascript">moveProgressBar('41.1');</script> + <dd class="spec failed"> + <span class="failed_spec_name">should print diff of different objects' pretty representation</span> + <div class="failure" id="failure_6"> + <div class="message"><pre> +expected <Animal +name=bob, +species=tortoise +> + + got <Animal +name=bob, +species=giraffe +> + + +(compared using eql?) +</pre></div> + <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/diffing_spec.rb&line=34">examples/failing/diffing_spec.rb:34</a> +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a> +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir' +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> </pre></div> + <pre class="ruby"><code><span class="linenum">32</span> <span class="ident">expected</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">"</span><span class="string">bob</span><span class="punct">",</span> <span class="punct">"</span><span class="string">giraffe</span><span class="punct">"</span> +<span class="linenum">33</span> <span class="ident">actual</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">"</span><span class="string">bob</span><span class="punct">",</span> <span class="punct">"</span><span class="string">tortoise</span><span class="punct">"</span> +<span class="offending"><span class="linenum">34</span> <span class="ident">expected</span><span class="punct">.</span><span class="ident">should</span> <span class="ident">eql</span><span class="punct">(</span><span class="ident">actual</span><span class="punct">)</span></span> +<span class="linenum">35</span> <span class="keyword">end</span> +<span class="linenum">36</span><span class="keyword">end</span></code></pre> + </div> + </dd> + </dl> +</div> +<div class="example_group"> + <dl> + <dt id="example_group_3">A consumer of a stub</dt> + <script type="text/javascript">moveProgressBar('47.0');</script> + <dd class="spec passed"><span class="passed_spec_name">should be able to stub methods on any Object</span></dd> + </dl> +</div> +<div class="example_group"> + <dl> + <dt id="example_group_4">A stubbed method on a class</dt> + <script type="text/javascript">moveProgressBar('52.9');</script> + <dd class="spec passed"><span class="passed_spec_name">should return the stubbed value</span></dd> + <script type="text/javascript">moveProgressBar('58.8');</script> + <dd class="spec passed"><span class="passed_spec_name">should revert to the original method after each spec</span></dd> + <script type="text/javascript">moveProgressBar('64.7');</script> + <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd> + </dl> +</div> +<div class="example_group"> + <dl> + <dt id="example_group_5">A mock</dt> + <script type="text/javascript">moveProgressBar('70.5');</script> + <dd class="spec passed"><span class="passed_spec_name">can stub!</span></dd> + <script type="text/javascript">moveProgressBar('76.4');</script> + <dd class="spec passed"><span class="passed_spec_name">can stub! and mock</span></dd> + <script type="text/javascript">moveProgressBar('82.3');</script> + <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd> + </dl> +</div> +<div class="example_group"> + <dl> + <dt id="example_group_6">pending example (using pending method)</dt> + <script type="text/javascript">makeYellow('example_group_6');</script> + <script type="text/javascript">moveProgressBar('88.2');</script> + <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as "PENDING: for some reason" (PENDING: for some reason)</span></dd> + </dl> +</div> +<div class="example_group"> + <dl> + <dt id="example_group_7">pending example (with no block)</dt> + <script type="text/javascript">makeYellow('example_group_7');</script> + <script type="text/javascript">moveProgressBar('94.1');</script> + <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as "PENDING: Not Yet Implemented" (PENDING: Not Yet Implemented)</span></dd> + </dl> +</div> +<div class="example_group"> + <dl> + <dt id="example_group_8">pending example (with block for pending)</dt> + <script type="text/javascript">makeYellow('example_group_8');</script> + <script type="text/javascript">moveProgressBar('100.0');</script> + <dd class="spec not_implemented"><span class="not_implemented_spec_name">should have a failing block, passed to pending, reported as "PENDING: for some reason" (PENDING: for some reason)</span></dd> + </dl> +</div> +<script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>x seconds</strong>";</script> +<script type="text/javascript">document.getElementById('totals').innerHTML = "17 examples, 6 failures, 3 pending";</script> +</div> +</div> +</body> +</html> diff --git a/vendor/plugins/rspec/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html b/vendor/plugins/rspec/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html new file mode 100644 index 000000000..54d761901 --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html @@ -0,0 +1,371 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html + PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> + <title>RSpec results</title> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + <meta http-equiv="Expires" content="-1" /> + <meta http-equiv="Pragma" content="no-cache" /> + <style type="text/css"> + body { + margin: 0; + padding: 0; + background: #fff; + font-size: 80%; + } + </style> + <script type="text/javascript"> + // <![CDATA[ +function moveProgressBar(percentDone) { + document.getElementById("rspec-header").style.width = percentDone +"%"; +} +function makeRed(element_id) { + document.getElementById(element_id).style.background = '#C40D0D'; + document.getElementById(element_id).style.color = '#FFFFFF'; +} + +function makeYellow(element_id) { + if (element_id == "rspec-header" && document.getElementById(element_id).style.background != '#C40D0D') + { + document.getElementById(element_id).style.background = '#FAF834'; + document.getElementById(element_id).style.color = '#000000'; + } + else + { + document.getElementById(element_id).style.background = '#FAF834'; + document.getElementById(element_id).style.color = '#000000'; + } +} + + // ]]> + </script> + <style type="text/css"> +#rspec-header { + background: #65C400; color: #fff; height: 4em; +} + +.rspec-report h1 { + margin: 0px 10px 0px 10px; + padding: 10px; + font-family: "Lucida Grande", Helvetica, sans-serif; + font-size: 1.8em; + position: absolute; +} + +#summary { + margin: 0; padding: 5px 10px; + font-family: "Lucida Grande", Helvetica, sans-serif; + text-align: right; + top: 0px; + right: 0px; + float:right; +} + +#summary p { + margin: 0 0 0 2px; +} + +#summary #totals { + font-size: 1.2em; +} + +.example_group { + margin: 0 10px 5px; + background: #fff; +} + +dl { + margin: 0; padding: 0 0 5px; + font: normal 11px "Lucida Grande", Helvetica, sans-serif; +} + +dt { + padding: 3px; + background: #65C400; + color: #fff; + font-weight: bold; +} + +dd { + margin: 5px 0 5px 5px; + padding: 3px 3px 3px 18px; +} + +dd.spec.passed { + border-left: 5px solid #65C400; + border-bottom: 1px solid #65C400; + background: #DBFFB4; color: #3D7700; +} + +dd.spec.failed { + border-left: 5px solid #C20000; + border-bottom: 1px solid #C20000; + color: #C20000; background: #FFFBD3; +} + +dd.spec.not_implemented { + border-left: 5px solid #FAF834; + border-bottom: 1px solid #FAF834; + background: #FCFB98; color: #131313; +} + +dd.spec.pending_fixed { + border-left: 5px solid #0000C2; + border-bottom: 1px solid #0000C2; + color: #0000C2; background: #D3FBFF; +} + +.backtrace { + color: #000; + font-size: 12px; +} + +a { + color: #BE5C00; +} + +/* Ruby code, style similar to vibrant ink */ +.ruby { + font-size: 12px; + font-family: monospace; + color: white; + background-color: black; + padding: 0.1em 0 0.2em 0; +} + +.ruby .keyword { color: #FF6600; } +.ruby .constant { color: #339999; } +.ruby .attribute { color: white; } +.ruby .global { color: white; } +.ruby .module { color: white; } +.ruby .class { color: white; } +.ruby .string { color: #66FF00; } +.ruby .ident { color: white; } +.ruby .method { color: #FFCC00; } +.ruby .number { color: white; } +.ruby .char { color: white; } +.ruby .comment { color: #9933CC; } +.ruby .symbol { color: white; } +.ruby .regex { color: #44B4CC; } +.ruby .punct { color: white; } +.ruby .escape { color: white; } +.ruby .interp { color: white; } +.ruby .expr { color: white; } + +.ruby .offending { background-color: gray; } +.ruby .linenum { + width: 75px; + padding: 0.1em 1em 0.2em 0; + color: #000000; + background-color: #FFFBD3; +} + + </style> +</head> +<body> +<div class="rspec-report"> + +<div id="rspec-header"> + <div id="label"> + <h1>RSpec Code Examples</h1> + </div> + + <div id="summary"> + <p id="totals"> </p> + <p id="duration"> </p> + </div> +</div> + +<div class="results"> +<div class="example_group"> + <dl> + <dt id="example_group_1">Mocker</dt> + <script type="text/javascript">moveProgressBar('5.8');</script> + <dd class="spec passed"><span class="passed_spec_name">should be able to call mock()</span></dd> + <script type="text/javascript">makeRed('rspec-header');</script> + <script type="text/javascript">makeRed('example_group_1');</script> + <script type="text/javascript">moveProgressBar('11.7');</script> + <dd class="spec failed"> + <span class="failed_spec_name">should fail when expected message not received</span> + <div class="failure" id="failure_1"> + <div class="message"><pre>Mock "poke me" expected :poke with (any args) once, but received it 0 times</pre></div> + <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/mocking_example.rb&line=11">./examples/failing/mocking_example.rb:11</a> +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a> +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir' +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> </pre></div> + <pre class="ruby"><code><span class="linenum">9</span> <span class="ident">it</span> <span class="punct">"</span><span class="string">should fail when expected message not received</span><span class="punct">"</span> <span class="keyword">do</span> +<span class="linenum">10</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">("</span><span class="string">poke me</span><span class="punct">")</span> +<span class="offending"><span class="linenum">11</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:poke</span><span class="punct">)</span></span> +<span class="linenum">12</span> <span class="keyword">end</span> +<span class="linenum">13</span> </code></pre> + </div> + </dd> + <script type="text/javascript">moveProgressBar('17.6');</script> + <dd class="spec failed"> + <span class="failed_spec_name">should fail when messages are received out of order</span> + <div class="failure" id="failure_2"> + <div class="message"><pre>Mock "one two three" received :three out of order</pre></div> + <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/mocking_example.rb&line=20">./examples/failing/mocking_example.rb:20</a> +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a> +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir' +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> </pre></div> + <pre class="ruby"><code><span class="linenum">18</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:three</span><span class="punct">).</span><span class="ident">ordered</span> +<span class="linenum">19</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">one</span> +<span class="offending"><span class="linenum">20</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">three</span></span> +<span class="linenum">21</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">two</span> +<span class="linenum">22</span> <span class="keyword">end</span></code></pre> + </div> + </dd> + <script type="text/javascript">moveProgressBar('23.5');</script> + <dd class="spec failed"> + <span class="failed_spec_name">should get yelled at when sending unexpected messages</span> + <div class="failure" id="failure_3"> + <div class="message"><pre>Mock "don't talk to me" expected :any_message_at_all with (no args) 0 times, but received it once</pre></div> + <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/mocking_example.rb&line=27">./examples/failing/mocking_example.rb:27</a> +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a> +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir' +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> </pre></div> + <pre class="ruby"><code><span class="linenum">25</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">("</span><span class="string">don't talk to me</span><span class="punct">")</span> +<span class="linenum">26</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_not_receive</span><span class="punct">(</span><span class="symbol">:any_message_at_all</span><span class="punct">)</span> +<span class="offending"><span class="linenum">27</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">any_message_at_all</span></span> +<span class="linenum">28</span> <span class="keyword">end</span></code></pre> + </div> + </dd> + <script type="text/javascript">moveProgressBar('29.4');</script> + <dd class="spec pending_fixed"> + <span class="failed_spec_name">has a bug we need to fix</span> + <div class="failure" id="failure_4"> + <div class="message"><pre>Expected pending 'here is the bug' to fail. No Error was raised.</pre></div> + <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/mocking_example.rb&line=31">./examples/failing/mocking_example.rb:31</a> +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a> +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir' +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> </pre></div> + <pre class="ruby"><code><span class="linenum">29</span> +<span class="linenum">30</span> <span class="ident">it</span> <span class="punct">"</span><span class="string">has a bug we need to fix</span><span class="punct">"</span> <span class="keyword">do</span> +<span class="offending"><span class="linenum">31</span> <span class="ident">pending</span> <span class="punct">"</span><span class="string">here is the bug</span><span class="punct">"</span> <span class="keyword">do</span></span> +<span class="linenum">32</span> <span class="comment"># Actually, no. It's fixed. This will fail because it passes :-)</span> +<span class="linenum">33</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">("</span><span class="string">Bug</span><span class="punct">")</span></code></pre> + </div> + </dd> + </dl> +</div> +<div class="example_group"> + <dl> + <dt id="example_group_2">Running specs with --diff</dt> + <script type="text/javascript">makeRed('example_group_2');</script> + <script type="text/javascript">moveProgressBar('35.2');</script> + <dd class="spec failed"> + <span class="failed_spec_name">should print diff of different strings</span> + <div class="failure" id="failure_5"> + <div class="message"><pre>expected: "RSpec is a\nbehaviour driven development\nframework for Ruby\n", + got: "RSpec is a\nbehavior driven development\nframework for Ruby\n" (using ==) + + Diff: +@@ -1,4 +1,4 @@ + RSpec is a +-behaviour driven development ++behavior driven development + framework for Ruby +</pre></div> + <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/diffing_spec.rb&line=13">./examples/failing/diffing_spec.rb:13</a> +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a> +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir' +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> </pre></div> + <pre class="ruby"><code><span class="linenum">11</span><span class="ident">framework</span> <span class="keyword">for</span> <span class="constant">Ruby</span> +<span class="linenum">12</span><span class="constant">EOF</span> +<span class="offending"><span class="linenum">13</span> <span class="ident">usa</span><span class="punct">.</span><span class="ident">should</span> <span class="punct">==</span> <span class="ident">uk</span></span> +<span class="linenum">14</span> <span class="keyword">end</span></code></pre> + </div> + </dd> + <script type="text/javascript">moveProgressBar('41.1');</script> + <dd class="spec failed"> + <span class="failed_spec_name">should print diff of different objects' pretty representation</span> + <div class="failure" id="failure_6"> + <div class="message"><pre> +expected <Animal +name=bob, +species=tortoise +> + + got <Animal +name=bob, +species=giraffe +> + + +(compared using eql?) +</pre></div> + <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/diffing_spec.rb&line=34">./examples/failing/diffing_spec.rb:34</a> +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a> +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir' +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> </pre></div> + <pre class="ruby"><code><span class="linenum">32</span> <span class="ident">expected</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">"</span><span class="string">bob</span><span class="punct">",</span> <span class="punct">"</span><span class="string">giraffe</span><span class="punct">"</span> +<span class="linenum">33</span> <span class="ident">actual</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">"</span><span class="string">bob</span><span class="punct">",</span> <span class="punct">"</span><span class="string">tortoise</span><span class="punct">"</span> +<span class="offending"><span class="linenum">34</span> <span class="ident">expected</span><span class="punct">.</span><span class="ident">should</span> <span class="ident">eql</span><span class="punct">(</span><span class="ident">actual</span><span class="punct">)</span></span> +<span class="linenum">35</span> <span class="keyword">end</span> +<span class="linenum">36</span><span class="keyword">end</span></code></pre> + </div> + </dd> + </dl> +</div> +<div class="example_group"> + <dl> + <dt id="example_group_3">A consumer of a stub</dt> + <script type="text/javascript">moveProgressBar('47.0');</script> + <dd class="spec passed"><span class="passed_spec_name">should be able to stub methods on any Object</span></dd> + </dl> +</div> +<div class="example_group"> + <dl> + <dt id="example_group_4">A stubbed method on a class</dt> + <script type="text/javascript">moveProgressBar('52.9');</script> + <dd class="spec passed"><span class="passed_spec_name">should return the stubbed value</span></dd> + <script type="text/javascript">moveProgressBar('58.8');</script> + <dd class="spec passed"><span class="passed_spec_name">should revert to the original method after each spec</span></dd> + <script type="text/javascript">moveProgressBar('64.7');</script> + <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd> + </dl> +</div> +<div class="example_group"> + <dl> + <dt id="example_group_5">A mock</dt> + <script type="text/javascript">moveProgressBar('70.5');</script> + <dd class="spec passed"><span class="passed_spec_name">can stub!</span></dd> + <script type="text/javascript">moveProgressBar('76.4');</script> + <dd class="spec passed"><span class="passed_spec_name">can stub! and mock</span></dd> + <script type="text/javascript">moveProgressBar('82.3');</script> + <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd> + </dl> +</div> +<div class="example_group"> + <dl> + <dt id="example_group_6">pending example (using pending method)</dt> + <script type="text/javascript">makeYellow('example_group_6');</script> + <script type="text/javascript">moveProgressBar('88.2');</script> + <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as "PENDING: for some reason" (PENDING: for some reason)</span></dd> + </dl> +</div> +<div class="example_group"> + <dl> + <dt id="example_group_7">pending example (with no block)</dt> + <script type="text/javascript">makeYellow('example_group_7');</script> + <script type="text/javascript">moveProgressBar('94.1');</script> + <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as "PENDING: Not Yet Implemented" (PENDING: Not Yet Implemented)</span></dd> + </dl> +</div> +<div class="example_group"> + <dl> + <dt id="example_group_8">pending example (with block for pending)</dt> + <script type="text/javascript">makeYellow('example_group_8');</script> + <script type="text/javascript">moveProgressBar('100.0');</script> + <dd class="spec not_implemented"><span class="not_implemented_spec_name">should have a failing block, passed to pending, reported as "PENDING: for some reason" (PENDING: for some reason)</span></dd> + </dl> +</div> +<script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>x seconds</strong>";</script> +<script type="text/javascript">document.getElementById('totals').innerHTML = "17 examples, 6 failures, 3 pending";</script> +</div> +</div> +</body> +</html> diff --git a/vendor/plugins/rspec/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html b/vendor/plugins/rspec/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html new file mode 100644 index 000000000..24c98046b --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html @@ -0,0 +1,371 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html + PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> + <title>RSpec results</title> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + <meta http-equiv="Expires" content="-1" /> + <meta http-equiv="Pragma" content="no-cache" /> + <style type="text/css"> + body { + margin: 0; + padding: 0; + background: #fff; + font-size: 80%; + } + </style> + <script type="text/javascript"> + // <![CDATA[ +function moveProgressBar(percentDone) { + document.getElementById("rspec-header").style.width = percentDone +"%"; +} +function makeRed(element_id) { + document.getElementById(element_id).style.background = '#C40D0D'; + document.getElementById(element_id).style.color = '#FFFFFF'; +} + +function makeYellow(element_id) { + if (element_id == "rspec-header" && document.getElementById(element_id).style.background != '#C40D0D') + { + document.getElementById(element_id).style.background = '#FAF834'; + document.getElementById(element_id).style.color = '#000000'; + } + else + { + document.getElementById(element_id).style.background = '#FAF834'; + document.getElementById(element_id).style.color = '#000000'; + } +} + + // ]]> + </script> + <style type="text/css"> +#rspec-header { + background: #65C400; color: #fff; height: 4em; +} + +.rspec-report h1 { + margin: 0px 10px 0px 10px; + padding: 10px; + font-family: "Lucida Grande", Helvetica, sans-serif; + font-size: 1.8em; + position: absolute; +} + +#summary { + margin: 0; padding: 5px 10px; + font-family: "Lucida Grande", Helvetica, sans-serif; + text-align: right; + top: 0px; + right: 0px; + float:right; +} + +#summary p { + margin: 0 0 0 2px; +} + +#summary #totals { + font-size: 1.2em; +} + +.example_group { + margin: 0 10px 5px; + background: #fff; +} + +dl { + margin: 0; padding: 0 0 5px; + font: normal 11px "Lucida Grande", Helvetica, sans-serif; +} + +dt { + padding: 3px; + background: #65C400; + color: #fff; + font-weight: bold; +} + +dd { + margin: 5px 0 5px 5px; + padding: 3px 3px 3px 18px; +} + +dd.spec.passed { + border-left: 5px solid #65C400; + border-bottom: 1px solid #65C400; + background: #DBFFB4; color: #3D7700; +} + +dd.spec.failed { + border-left: 5px solid #C20000; + border-bottom: 1px solid #C20000; + color: #C20000; background: #FFFBD3; +} + +dd.spec.not_implemented { + border-left: 5px solid #FAF834; + border-bottom: 1px solid #FAF834; + background: #FCFB98; color: #131313; +} + +dd.spec.pending_fixed { + border-left: 5px solid #0000C2; + border-bottom: 1px solid #0000C2; + color: #0000C2; background: #D3FBFF; +} + +.backtrace { + color: #000; + font-size: 12px; +} + +a { + color: #BE5C00; +} + +/* Ruby code, style similar to vibrant ink */ +.ruby { + font-size: 12px; + font-family: monospace; + color: white; + background-color: black; + padding: 0.1em 0 0.2em 0; +} + +.ruby .keyword { color: #FF6600; } +.ruby .constant { color: #339999; } +.ruby .attribute { color: white; } +.ruby .global { color: white; } +.ruby .module { color: white; } +.ruby .class { color: white; } +.ruby .string { color: #66FF00; } +.ruby .ident { color: white; } +.ruby .method { color: #FFCC00; } +.ruby .number { color: white; } +.ruby .char { color: white; } +.ruby .comment { color: #9933CC; } +.ruby .symbol { color: white; } +.ruby .regex { color: #44B4CC; } +.ruby .punct { color: white; } +.ruby .escape { color: white; } +.ruby .interp { color: white; } +.ruby .expr { color: white; } + +.ruby .offending { background-color: gray; } +.ruby .linenum { + width: 75px; + padding: 0.1em 1em 0.2em 0; + color: #000000; + background-color: #FFFBD3; +} + + </style> +</head> +<body> +<div class="rspec-report"> + +<div id="rspec-header"> + <div id="label"> + <h1>RSpec Code Examples</h1> + </div> + + <div id="summary"> + <p id="totals"> </p> + <p id="duration"> </p> + </div> +</div> + +<div class="results"> +<div class="example_group"> + <dl> + <dt id="example_group_1">Mocker</dt> + <script type="text/javascript">moveProgressBar('5.8');</script> + <dd class="spec passed"><span class="passed_spec_name">should be able to call mock()</span></dd> + <script type="text/javascript">makeRed('rspec-header');</script> + <script type="text/javascript">makeRed('example_group_1');</script> + <script type="text/javascript">moveProgressBar('11.7');</script> + <dd class="spec failed"> + <span class="failed_spec_name">should fail when expected message not received</span> + <div class="failure" id="failure_1"> + <div class="message"><pre>Mock "poke me" expected :poke with (any args) once, but received it 0 times</pre></div> + <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/mocking_example.rb&line=11">./examples/failing/mocking_example.rb:11</a> :in `block (2 levels) in <top (required)>' +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a> :in `block (4 levels) in <module:Formatter>' +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir' +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `block (3 levels) in <module:Formatter>'</pre></div> + <pre class="ruby"><code><span class="linenum">9</span> <span class="ident">it</span> <span class="punct">"</span><span class="string">should fail when expected message not received</span><span class="punct">"</span> <span class="keyword">do</span> +<span class="linenum">10</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">("</span><span class="string">poke me</span><span class="punct">")</span> +<span class="offending"><span class="linenum">11</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:poke</span><span class="punct">)</span></span> +<span class="linenum">12</span> <span class="keyword">end</span> +<span class="linenum">13</span> </code></pre> + </div> + </dd> + <script type="text/javascript">moveProgressBar('17.6');</script> + <dd class="spec failed"> + <span class="failed_spec_name">should fail when messages are received out of order</span> + <div class="failure" id="failure_2"> + <div class="message"><pre>Mock "one two three" received :three out of order</pre></div> + <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/mocking_example.rb&line=20">./examples/failing/mocking_example.rb:20</a> :in `block (2 levels) in <top (required)>' +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a> :in `block (4 levels) in <module:Formatter>' +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir' +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `block (3 levels) in <module:Formatter>'</pre></div> + <pre class="ruby"><code><span class="linenum">18</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:three</span><span class="punct">).</span><span class="ident">ordered</span> +<span class="linenum">19</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">one</span> +<span class="offending"><span class="linenum">20</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">three</span></span> +<span class="linenum">21</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">two</span> +<span class="linenum">22</span> <span class="keyword">end</span></code></pre> + </div> + </dd> + <script type="text/javascript">moveProgressBar('23.5');</script> + <dd class="spec failed"> + <span class="failed_spec_name">should get yelled at when sending unexpected messages</span> + <div class="failure" id="failure_3"> + <div class="message"><pre>Mock "don't talk to me" expected :any_message_at_all with (no args) 0 times, but received it once</pre></div> + <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/mocking_example.rb&line=27">./examples/failing/mocking_example.rb:27</a> :in `block (2 levels) in <top (required)>' +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a> :in `block (4 levels) in <module:Formatter>' +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir' +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `block (3 levels) in <module:Formatter>'</pre></div> + <pre class="ruby"><code><span class="linenum">25</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">("</span><span class="string">don't talk to me</span><span class="punct">")</span> +<span class="linenum">26</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_not_receive</span><span class="punct">(</span><span class="symbol">:any_message_at_all</span><span class="punct">)</span> +<span class="offending"><span class="linenum">27</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">any_message_at_all</span></span> +<span class="linenum">28</span> <span class="keyword">end</span></code></pre> + </div> + </dd> + <script type="text/javascript">moveProgressBar('29.4');</script> + <dd class="spec pending_fixed"> + <span class="failed_spec_name">has a bug we need to fix</span> + <div class="failure" id="failure_4"> + <div class="message"><pre>Expected pending 'here is the bug' to fail. No Error was raised.</pre></div> + <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/mocking_example.rb&line=31">./examples/failing/mocking_example.rb:31</a> :in `block (2 levels) in <top (required)>' +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a> :in `block (4 levels) in <module:Formatter>' +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir' +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `block (3 levels) in <module:Formatter>'</pre></div> + <pre class="ruby"><code><span class="linenum">29</span> +<span class="linenum">30</span> <span class="ident">it</span> <span class="punct">"</span><span class="string">has a bug we need to fix</span><span class="punct">"</span> <span class="keyword">do</span> +<span class="offending"><span class="linenum">31</span> <span class="ident">pending</span> <span class="punct">"</span><span class="string">here is the bug</span><span class="punct">"</span> <span class="keyword">do</span></span> +<span class="linenum">32</span> <span class="comment"># Actually, no. It's fixed. This will fail because it passes :-)</span> +<span class="linenum">33</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">("</span><span class="string">Bug</span><span class="punct">")</span></code></pre> + </div> + </dd> + </dl> +</div> +<div class="example_group"> + <dl> + <dt id="example_group_2">Running specs with --diff</dt> + <script type="text/javascript">makeRed('example_group_2');</script> + <script type="text/javascript">moveProgressBar('35.2');</script> + <dd class="spec failed"> + <span class="failed_spec_name">should print diff of different strings</span> + <div class="failure" id="failure_5"> + <div class="message"><pre>expected: "RSpec is a\nbehaviour driven development\nframework for Ruby\n", + got: "RSpec is a\nbehavior driven development\nframework for Ruby\n" (using ==) + + Diff: +@@ -1,4 +1,4 @@ + RSpec is a +-behaviour driven development ++behavior driven development + framework for Ruby +</pre></div> + <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/diffing_spec.rb&line=13">./examples/failing/diffing_spec.rb:13</a> :in `block (2 levels) in <top (required)>' +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a> :in `block (4 levels) in <module:Formatter>' +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir' +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `block (3 levels) in <module:Formatter>'</pre></div> + <pre class="ruby"><code><span class="linenum">11</span><span class="ident">framework</span> <span class="keyword">for</span> <span class="constant">Ruby</span> +<span class="linenum">12</span><span class="constant">EOF</span> +<span class="offending"><span class="linenum">13</span> <span class="ident">usa</span><span class="punct">.</span><span class="ident">should</span> <span class="punct">==</span> <span class="ident">uk</span></span> +<span class="linenum">14</span> <span class="keyword">end</span></code></pre> + </div> + </dd> + <script type="text/javascript">moveProgressBar('41.1');</script> + <dd class="spec failed"> + <span class="failed_spec_name">should print diff of different objects' pretty representation</span> + <div class="failure" id="failure_6"> + <div class="message"><pre> +expected <Animal +name=bob, +species=tortoise +> + + got <Animal +name=bob, +species=giraffe +> + + +(compared using eql?) +</pre></div> + <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/diffing_spec.rb&line=34">./examples/failing/diffing_spec.rb:34</a> :in `block (2 levels) in <top (required)>' +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a> :in `block (4 levels) in <module:Formatter>' +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir' +<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `block (3 levels) in <module:Formatter>'</pre></div> + <pre class="ruby"><code><span class="linenum">32</span> <span class="ident">expected</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">"</span><span class="string">bob</span><span class="punct">",</span> <span class="punct">"</span><span class="string">giraffe</span><span class="punct">"</span> +<span class="linenum">33</span> <span class="ident">actual</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">"</span><span class="string">bob</span><span class="punct">",</span> <span class="punct">"</span><span class="string">tortoise</span><span class="punct">"</span> +<span class="offending"><span class="linenum">34</span> <span class="ident">expected</span><span class="punct">.</span><span class="ident">should</span> <span class="ident">eql</span><span class="punct">(</span><span class="ident">actual</span><span class="punct">)</span></span> +<span class="linenum">35</span> <span class="keyword">end</span> +<span class="linenum">36</span><span class="keyword">end</span></code></pre> + </div> + </dd> + </dl> +</div> +<div class="example_group"> + <dl> + <dt id="example_group_3">A consumer of a stub</dt> + <script type="text/javascript">moveProgressBar('47.0');</script> + <dd class="spec passed"><span class="passed_spec_name">should be able to stub methods on any Object</span></dd> + </dl> +</div> +<div class="example_group"> + <dl> + <dt id="example_group_4">A stubbed method on a class</dt> + <script type="text/javascript">moveProgressBar('52.9');</script> + <dd class="spec passed"><span class="passed_spec_name">should return the stubbed value</span></dd> + <script type="text/javascript">moveProgressBar('58.8');</script> + <dd class="spec passed"><span class="passed_spec_name">should revert to the original method after each spec</span></dd> + <script type="text/javascript">moveProgressBar('64.7');</script> + <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd> + </dl> +</div> +<div class="example_group"> + <dl> + <dt id="example_group_5">A mock</dt> + <script type="text/javascript">moveProgressBar('70.5');</script> + <dd class="spec passed"><span class="passed_spec_name">can stub!</span></dd> + <script type="text/javascript">moveProgressBar('76.4');</script> + <dd class="spec passed"><span class="passed_spec_name">can stub! and mock</span></dd> + <script type="text/javascript">moveProgressBar('82.3');</script> + <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd> + </dl> +</div> +<div class="example_group"> + <dl> + <dt id="example_group_6">pending example (using pending method)</dt> + <script type="text/javascript">makeYellow('example_group_6');</script> + <script type="text/javascript">moveProgressBar('88.2');</script> + <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as "PENDING: for some reason" (PENDING: for some reason)</span></dd> + </dl> +</div> +<div class="example_group"> + <dl> + <dt id="example_group_7">pending example (with no block)</dt> + <script type="text/javascript">makeYellow('example_group_7');</script> + <script type="text/javascript">moveProgressBar('94.1');</script> + <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as "PENDING: Not Yet Implemented" (PENDING: Not Yet Implemented)</span></dd> + </dl> +</div> +<div class="example_group"> + <dl> + <dt id="example_group_8">pending example (with block for pending)</dt> + <script type="text/javascript">makeYellow('example_group_8');</script> + <script type="text/javascript">moveProgressBar('100.0');</script> + <dd class="spec not_implemented"><span class="not_implemented_spec_name">should have a failing block, passed to pending, reported as "PENDING: for some reason" (PENDING: for some reason)</span></dd> + </dl> +</div> +<script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>x seconds</strong>";</script> +<script type="text/javascript">document.getElementById('totals').innerHTML = "17 examples, 6 failures, 3 pending";</script> +</div> +</div> +</body> +</html> diff --git a/vendor/plugins/rspec/spec/spec/runner/formatter/text_mate_formatter_spec.rb b/vendor/plugins/rspec/spec/spec/runner/formatter/text_mate_formatter_spec.rb new file mode 100644 index 000000000..a35ad89f5 --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/runner/formatter/text_mate_formatter_spec.rb @@ -0,0 +1,106 @@ +require 'spec_helper' + +begin # See rescue all the way at the bottom + +require 'nokogiri' # Needed to compare generated with wanted HTML +require 'spec/runner/formatter/text_mate_formatter' + +module Spec + module Runner + module Formatter + describe TextMateFormatter do + attr_reader :root, :suffix, :expected_file + before do + @root = File.expand_path(File.dirname(__FILE__) + '/../../../..') + @suffix = jruby? ? '-jruby' : '' + @expected_file = File.dirname(__FILE__) + "/text_mate_formatted-#{::RUBY_VERSION}#{suffix}.html" + end + + def produces_html_identical_to_manually_designed_document(opt) + root = File.expand_path(File.dirname(__FILE__) + '/../../../..') + + Dir.chdir(root) do + args = [ + 'examples/failing/mocking_example.rb', + 'examples/failing/diffing_spec.rb', + 'examples/passing/stubbing_example.rb', + 'examples/passing/pending_example.rb', + '--format', + 'textmate', + opt + ] + err = StringIO.new + out = StringIO.new + + run_with ::Spec::Runner::OptionParser.parse(args, err, out) + + yield(out.string) + end + end + + # Uncomment this spec temporarily in order to overwrite the expected with actual. + # Use with care!!! + # describe "functional spec file generator" do + # it "generates a new comparison file" do + # Dir.chdir(root) do + # args = ['examples/failing/mocking_example.rb', 'examples/failing/diffing_spec.rb', 'examples/passing/stubbing_example.rb', 'examples/passing/pending_example.rb', '--format', 'textmate', '--diff'] + # err = StringIO.new + # out = StringIO.new + # Spec::Runner::CommandLine.run( + # ::Spec::Runner::OptionParser.parse(args, err, out) + # ) + # + # seconds = /\d+\.\d+ seconds/ + # html = out.string.gsub seconds, 'x seconds' + # + # File.open(expected_file, 'w') {|io| io.write(html)} + # end + # end + # end + + describe "functional spec using --diff" do + it "should produce HTML identical to the one we designed manually with --diff" do + produces_html_identical_to_manually_designed_document("--diff") do |html| + suffix = jruby? ? '-jruby' : '' + expected_file = File.dirname(__FILE__) + "/text_mate_formatted-#{::RUBY_VERSION}#{suffix}.html" + unless File.file?(expected_file) + raise "There is no HTML file with expected content for this platform: #{expected_file}" + end + expected_html = File.read(expected_file) + + seconds = /\d+\.\d+ seconds/ + html.gsub! seconds, 'x seconds' + expected_html.gsub! seconds, 'x seconds' + + doc = Nokogiri::HTML(html) + backtraces = doc.search("div.backtrace a") + doc.search("div.backtrace").remove + + expected_doc = Nokogiri::HTML(expected_html) + expected_doc.search("div.backtrace").remove + + doc.inner_html.should == expected_doc.inner_html + + backtraces.each do |backtrace_link| + backtrace_link['href'].should include("txmt://open?url=") + end + end + end + + end + + describe "functional spec using --dry-run" do + it "should produce HTML identical to the one we designed manually with --dry-run" do + produces_html_identical_to_manually_designed_document("--dry-run") do |html, expected_html| + html.should =~ /This was a dry-run/m + end + end + end + end + end + end +end + +rescue LoadError + warn "nokogiri not loaded -- skipping TextMateFormatter specs" +end diff --git a/vendor/plugins/rspec/spec/spec/runner/line_number_query/line_number_query_fixture.rb b/vendor/plugins/rspec/spec/spec/runner/line_number_query/line_number_query_fixture.rb new file mode 100644 index 000000000..82a257d3b --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/runner/line_number_query/line_number_query_fixture.rb @@ -0,0 +1,70 @@ +require 'spec_helper' + +describe "c" do + + it "1" do + end + + it "2" do + end + +end + +describe "d" do + + it "3" do + end + + it "4" do + end + +end + +class LineNumberQuerySubject +end + +describe LineNumberQuerySubject do + + it "5" do + end + +end + +describe LineNumberQuerySubject, "described" do + + it "6" do + end + +end + +describe LineNumberQuerySubject, "described", :something => :something_else do + + it "7" do + end + +end + +describe "described", :something => :something_else do + + it "8" do + end + +end + +describe "e" do + + it "9" do + end + + it "10" do + end + + describe "f" do + it "11" do + end + + it "12" do + end + end + +end diff --git a/vendor/plugins/rspec/spec/spec/runner/line_number_query_spec.rb b/vendor/plugins/rspec/spec/spec/runner/line_number_query_spec.rb new file mode 100644 index 000000000..e4e11050d --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/runner/line_number_query_spec.rb @@ -0,0 +1,129 @@ +require 'spec_helper' + +describe "LineNumberQuery" do + with_sandboxed_options do + attr_reader :parser, :file + + before do + @parser = Spec::Runner::LineNumberQuery.new(options) + @file = "#{File.dirname(__FILE__)}/line_number_query/line_number_query_fixture.rb" + load file + end + + it "should find spec name for 'specify' at same line" do + parser.spec_name_for(file, 5).should == "c 1" + end + + it "should find spec name for 'specify' at end of spec line" do + parser.spec_name_for(file, 6).should == "c 1" + end + + it "should find context for 'context' above all specs" do + parser.spec_name_for(file, 4).should == "c" + end + + it "should find spec name for 'it' at same line" do + parser.spec_name_for(file, 15).should == "d 3" + end + + it "should find spec name for 'it' at end of spec line" do + parser.spec_name_for(file, 16).should == "d 3" + end + + it "should find context for 'describe' above all specs" do + parser.spec_name_for(file, 14).should == "d" + end + + it "should find nearest example name between examples" do + parser.spec_name_for(file, 7).should == "c 1" + end + + it "should find nothing outside a context" do + parser.spec_name_for(file, 2).should be_nil + end + + it "should find context name for type" do + parser.spec_name_for(file, 26).should == "LineNumberQuerySubject" + end + + it "should find context and spec name for type" do + parser.spec_name_for(file, 28).should == "LineNumberQuerySubject 5" + end + + it "should find context and description for type" do + parser.spec_name_for(file, 33).should == "LineNumberQuerySubject described" + end + + it "should find context and description and example for type" do + parser.spec_name_for(file, 36).should == "LineNumberQuerySubject described 6" + end + + it "should find context and description for type with modifications" do + parser.spec_name_for(file, 40).should == "LineNumberQuerySubject described" + end + + it "should find context and described and example for type with modifications" do + parser.spec_name_for(file, 43).should == "LineNumberQuerySubject described 7" + end + + it "should find example group" do + parser.spec_name_for(file, 47).should == "described" + end + + it "should find example" do + parser.spec_name_for(file, 50).should == "described 8" + end + + it "should find nested example" do + parser.spec_name_for(file, 63).should == "e f 11" + end + + it "should handle paths which contain colons" do + fixture = + { "c:/somepath/somefile.rb:999:in 'method'" => "c:/somepath/somefile.rb", + "./somepath/somefile:999" => "./somepath/somefile" } + fixture.each_pair do |input, expected| + parser.send(:parse_location, input ).should == [expected, 999] + end + end + + it "should handle paths which contain colons and backslashes" do + fixture = + { "c:\\somepath\\somefile.rb:999:in 'method'" => "c:\\somepath\\somefile.rb", + ".\\somepath\\somefile:999" => ".\\somepath\\somefile" } + fixture.each_pair do |input, expected| + parser.send(:parse_location, input ).should == [expected, 999] + end + end + + it "ignores example group base classes which have no location" do + options = stub('options', :example_groups => [ + stub('example_group', :location => nil) + ]) + parser = Spec::Runner::LineNumberQuery.new(options) + parser.spec_name_for('foo',37).should == nil + end + + describe "#example_line_for" do + it "should find example declared on same line" do + parser.example_line_for(file, 5).should == 5 + end + + it "should find example declared on the line above, while still inside the example" do + parser.example_line_for(file, 6).should == 5 + end + + it "should find example declared from empty line below the example" do + parser.example_line_for(file, 7).should == 5 + end + + it "should find the group declared on the same line" do + parser.example_line_for(file, 3).should == 3 + end + + it "should find the group declared above the first example" do + parser.example_line_for(file, 4).should == 3 + end + end + end +end diff --git a/vendor/plugins/rspec/spec/spec/runner/resources/custom_example_group_runner.rb b/vendor/plugins/rspec/spec/spec/runner/resources/custom_example_group_runner.rb new file mode 100644 index 000000000..edcf54e96 --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/runner/resources/custom_example_group_runner.rb @@ -0,0 +1,14 @@ +module Custom + class ExampleGroupRunner + attr_reader :options, :arg + def initialize(options, arg) + @options, @arg = options, arg + end + + def load_files(files) + end + + def run + end + end +end diff --git a/vendor/plugins/rspec/spec/spec/runner/resources/utf8_encoded.rb b/vendor/plugins/rspec/spec/spec/runner/resources/utf8_encoded.rb new file mode 100644 index 000000000..7cbdd6908 --- /dev/null +++ b/vendor/plugins/rspec/spec/spec/runner/resources/utf8_encoded.rb @@ -0,0 +1,8 @@ +# encoding: utf-8 +module Custom + class ExampleUTF8ClassNameVarietà + def self.è + così = :però + end + end +end diff --git a/vendor/plugins/rspec/spec/support/macros.rb b/vendor/plugins/rspec/spec/support/macros.rb new file mode 100644 index 000000000..6322060b0 --- /dev/null +++ b/vendor/plugins/rspec/spec/support/macros.rb @@ -0,0 +1,29 @@ +module Macros + def treats_method_missing_as_private(options = {:noop => true, :subject => nil}) + it "should have method_missing as private" do + with_ruby 1.8 do + described_class.private_instance_methods.should include("method_missing") + end + with_ruby 1.9 do + described_class.private_instance_methods.should include(:method_missing) + end + end + + it "should not respond_to? method_missing (because it's private)" do + formatter = options[:subject] || described_class.new({ }, StringIO.new) + formatter.should_not respond_to(:method_missing) + end + + if options[:noop] + it "should respond_to? all messages" do + formatter = described_class.new({ }, StringIO.new) + formatter.should respond_to(:just_about_anything) + end + + it "should respond_to? anything, when given the private flag" do + formatter = described_class.new({ }, StringIO.new) + formatter.respond_to?(:method_missing, true).should be_true + end + end + end +end diff --git a/vendor/plugins/rspec/spec/support/spec_classes.rb b/vendor/plugins/rspec/spec/support/spec_classes.rb new file mode 100644 index 000000000..c8900a789 --- /dev/null +++ b/vendor/plugins/rspec/spec/support/spec_classes.rb @@ -0,0 +1,133 @@ +# This file contains various classes used by the specs. +module Spec + module Expectations + class Person + attr_reader :name + def initialize name + @name = name + end + def == other + return @name == other.name + end + end + + class ClassWithMultiWordPredicate + def multi_word_predicate? + true + end + end + + module Helper + class CollectionWithSizeMethod + def initialize; @list = []; end + def size; @list.size; end + def push(item); @list.push(item); end + end + + class CollectionWithLengthMethod + def initialize; @list = []; end + def length; @list.size; end + def push(item); @list.push(item); end + end + + class CollectionOwner + attr_reader :items_in_collection_with_size_method, :items_in_collection_with_length_method + + def initialize + @items_in_collection_with_size_method = CollectionWithSizeMethod.new + @items_in_collection_with_length_method = CollectionWithLengthMethod.new + end + + def add_to_collection_with_size_method(item) + @items_in_collection_with_size_method.push(item) + end + + def add_to_collection_with_length_method(item) + @items_in_collection_with_length_method.push(item) + end + + def items_for(arg) + return [1, 2, 3] if arg == 'a' + [1] + end + + def items + @items_in_collection_with_size_method + end + end + + class HandCodedMock + include Spec::Matchers + def initialize(return_val) + @return_val = return_val + @funny_called = false + end + + def funny? + @funny_called = true + @return_val + end + + def hungry?(a, b, c) + a.should equal(1) + b.should equal(2) + c.should equal(3) + @funny_called = true + @return_val + end + + def exists? + @return_val + end + + def multi_word_predicate? + @return_val + end + + def rspec_verify + @funny_called.should be_true + end + end + class ClassWithUnqueriedPredicate + attr_accessor :foo + def initialize(foo) + @foo = foo + end + end + end + end +end + +module Custom + require 'spec/runner/formatter/base_text_formatter' + class Formatter < Spec::Runner::Formatter::BaseTextFormatter + attr_reader :options, :where + + def initialize(options, where) + @options = options + @where = where + end + end + + class BadFormatter < Spec::Runner::Formatter::BaseTextFormatter + attr_reader :where + + def initialize(options, where) + bad_method + end + end + + class Differ + attr_reader :options + def initialize(options) + @options = options + end + + def diff_as_object(target, expected) + "" + end + end +end + +class FakeReporter < Spec::Runner::Reporter +end |