aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/plugins/rspec/spec
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/plugins/rspec/spec')
-rw-r--r--vendor/plugins/rspec/spec/autotest/autotest_helper.rb8
-rw-r--r--vendor/plugins/rspec/spec/autotest/autotest_matchers.rb38
-rw-r--r--vendor/plugins/rspec/spec/autotest/failed_results_re_spec.rb31
-rw-r--r--vendor/plugins/rspec/spec/spec/dsl/main_spec.rb95
-rw-r--r--vendor/plugins/rspec/spec/spec/example/example_group_proxy_spec.rb107
-rw-r--r--vendor/plugins/rspec/spec/spec/example/example_proxy_spec.rb57
-rw-r--r--vendor/plugins/rspec/spec/spec/example/helper_method_spec.rb24
-rw-r--r--vendor/plugins/rspec/spec/spec/example/subject_spec.rb103
-rw-r--r--vendor/plugins/rspec/spec/spec/expectations/extensions/kernel_spec.rb45
-rw-r--r--vendor/plugins/rspec/spec/spec/expectations/handler_spec.rb206
-rw-r--r--vendor/plugins/rspec/spec/spec/expectations/wrap_expectation_spec.rb30
-rw-r--r--vendor/plugins/rspec/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb13
-rw-r--r--vendor/plugins/rspec/spec/spec/interop/test/unit/resources/test_case_with_various_names.rb22
-rw-r--r--vendor/plugins/rspec/spec/spec/matchers/be_instance_of_spec.rb36
-rw-r--r--vendor/plugins/rspec/spec/spec/matchers/be_kind_of_spec.rb33
-rw-r--r--vendor/plugins/rspec/spec/spec/matchers/compatibility_spec.rb28
-rw-r--r--vendor/plugins/rspec/spec/spec/matchers/dsl_spec.rb34
-rw-r--r--vendor/plugins/rspec/spec/spec/matchers/match_array_spec.rb108
-rw-r--r--vendor/plugins/rspec/spec/spec/matchers/matcher_spec.rb228
-rw-r--r--vendor/plugins/rspec/spec/spec/matchers/matchers_spec.rb2
-rw-r--r--vendor/plugins/rspec/spec/spec/mocks/argument_matchers_spec.rb19
-rw-r--r--vendor/plugins/rspec/spec/spec/mocks/bug_report_496_spec.rb19
-rw-r--r--vendor/plugins/rspec/spec/spec/mocks/bug_report_600_spec.rb22
-rw-r--r--vendor/plugins/rspec/spec/spec/mocks/bug_report_830_spec.rb21
-rw-r--r--vendor/plugins/rspec/spec/spec/mocks/double_spec.rb12
-rw-r--r--vendor/plugins/rspec/spec/spec/mocks/failing_argument_matchers_spec.rb95
-rw-r--r--vendor/plugins/rspec/spec/spec/mocks/hash_not_including_matcher_spec.rb67
-rw-r--r--vendor/plugins/rspec/spec/spec/mocks/nil_expectation_warning_spec.rb53
-rw-r--r--vendor/plugins/rspec/spec/spec/mocks/passing_argument_matchers_spec.rb145
-rw-r--r--vendor/plugins/rspec/spec/spec/mocks/stub_chain_spec.rb42
-rw-r--r--vendor/plugins/rspec/spec/spec/mocks/stub_implementation_spec.rb31
-rw-r--r--vendor/plugins/rspec/spec/spec/mocks/stubbed_message_expectations_spec.rb26
-rw-r--r--vendor/plugins/rspec/spec/spec/mocks/unstub_spec.rb127
-rw-r--r--vendor/plugins/rspec/spec/spec/rake/spectask_spec.rb150
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/configuration_spec.rb320
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/example_group_runner_spec.rb26
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/formatter/base_formatter_spec.rb30
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/formatter/base_text_formatter_spec.rb113
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.7.html377
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.9.1.html377
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/formatter/text_mate_formatted-1.8.6-jruby.html371
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html371
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html371
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/formatter/text_mate_formatter_spec.rb106
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/line_number_query/line_number_query_fixture.rb70
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/line_number_query_spec.rb129
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/resources/custom_example_group_runner.rb14
-rw-r--r--vendor/plugins/rspec/spec/spec/runner/resources/utf8_encoded.rb8
-rw-r--r--vendor/plugins/rspec/spec/support/macros.rb29
-rw-r--r--vendor/plugins/rspec/spec/support/spec_classes.rb133
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">&nbsp;</p>
+ <p id="duration">&nbsp;</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 &quot;poke me&quot; 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">&quot;</span><span class="string">should fail when expected message not received</span><span class="punct">&quot;</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">(&quot;</span><span class="string">poke me</span><span class="punct">&quot;)</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 &quot;one two three&quot; 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 &quot;don't talk to me&quot; 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">(&quot;</span><span class="string">don't talk to me</span><span class="punct">&quot;)</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">&quot;</span><span class="string">has a bug we need to fix</span><span class="punct">&quot;</span> <span class="keyword">do</span>
+<span class="offending"><span class="linenum">31</span> <span class="ident">pending</span> <span class="punct">&quot;</span><span class="string">here is the bug</span><span class="punct">&quot;</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">(&quot;</span><span class="string">Bug</span><span class="punct">&quot;)</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: &quot;RSpec is a\nbehaviour driven development\nframework for Ruby\n&quot;,
+ got: &quot;RSpec is a\nbehavior driven development\nframework for Ruby\n&quot; (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 &lt;Animal
+name=bob,
+species=tortoise
+&gt;
+
+ got &lt;Animal
+name=bob,
+species=giraffe
+&gt;
+
+
+(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">&quot;</span><span class="string">bob</span><span class="punct">&quot;,</span> <span class="punct">&quot;</span><span class="string">giraffe</span><span class="punct">&quot;</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">&quot;</span><span class="string">bob</span><span class="punct">&quot;,</span> <span class="punct">&quot;</span><span class="string">tortoise</span><span class="punct">&quot;</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 &quot;PENDING: for some reason&quot; (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 &quot;PENDING: Not Yet Implemented&quot; (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 &quot;PENDING: for some reason&quot; (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">&nbsp;</p>
+ <p id="duration">&nbsp;</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 &quot;poke me&quot; 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">&quot;</span><span class="string">should fail when expected message not received</span><span class="punct">&quot;</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">(&quot;</span><span class="string">poke me</span><span class="punct">&quot;)</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 &quot;one two three&quot; 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 &quot;don't talk to me&quot; 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">(&quot;</span><span class="string">don't talk to me</span><span class="punct">&quot;)</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">&quot;</span><span class="string">has a bug we need to fix</span><span class="punct">&quot;</span> <span class="keyword">do</span>
+<span class="offending"><span class="linenum">31</span> <span class="ident">pending</span> <span class="punct">&quot;</span><span class="string">here is the bug</span><span class="punct">&quot;</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">(&quot;</span><span class="string">Bug</span><span class="punct">&quot;)</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: &quot;RSpec is a\nbehaviour driven development\nframework for Ruby\n&quot;,
+ got: &quot;RSpec is a\nbehavior driven development\nframework for Ruby\n&quot; (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 &lt;Animal
+name=bob,
+species=tortoise
+&gt;
+
+ got &lt;Animal
+name=bob,
+species=giraffe
+&gt;
+
+
+(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">&quot;</span><span class="string">bob</span><span class="punct">&quot;,</span> <span class="punct">&quot;</span><span class="string">giraffe</span><span class="punct">&quot;</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">&quot;</span><span class="string">bob</span><span class="punct">&quot;,</span> <span class="punct">&quot;</span><span class="string">tortoise</span><span class="punct">&quot;</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 &quot;PENDING: for some reason&quot; (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 &quot;PENDING: Not Yet Implemented&quot; (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 &quot;PENDING: for some reason&quot; (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">&nbsp;</p>
+ <p id="duration">&nbsp;</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 &quot;poke me&quot; 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">&quot;</span><span class="string">should fail when expected message not received</span><span class="punct">&quot;</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">(&quot;</span><span class="string">poke me</span><span class="punct">&quot;)</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 &quot;one two three&quot; 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 &quot;don't talk to me&quot; 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">(&quot;</span><span class="string">don't talk to me</span><span class="punct">&quot;)</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">&quot;</span><span class="string">has a bug we need to fix</span><span class="punct">&quot;</span> <span class="keyword">do</span>
+<span class="offending"><span class="linenum">31</span> <span class="ident">pending</span> <span class="punct">&quot;</span><span class="string">here is the bug</span><span class="punct">&quot;</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">(&quot;</span><span class="string">Bug</span><span class="punct">&quot;)</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: &quot;RSpec is a\nbehaviour driven development\nframework for Ruby\n&quot;,
+ got: &quot;RSpec is a\nbehavior driven development\nframework for Ruby\n&quot; (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 &lt;Animal
+name=bob,
+species=tortoise
+&gt;
+
+ got &lt;Animal
+name=bob,
+species=giraffe
+&gt;
+
+
+(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">&quot;</span><span class="string">bob</span><span class="punct">&quot;,</span> <span class="punct">&quot;</span><span class="string">giraffe</span><span class="punct">&quot;</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">&quot;</span><span class="string">bob</span><span class="punct">&quot;,</span> <span class="punct">&quot;</span><span class="string">tortoise</span><span class="punct">&quot;</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 &quot;PENDING: for some reason&quot; (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 &quot;PENDING: Not Yet Implemented&quot; (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 &quot;PENDING: for some reason&quot; (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">&nbsp;</p>
+ <p id="duration">&nbsp;</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 &quot;poke me&quot; 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">&quot;</span><span class="string">should fail when expected message not received</span><span class="punct">&quot;</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">(&quot;</span><span class="string">poke me</span><span class="punct">&quot;)</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 &quot;one two three&quot; 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 &quot;don't talk to me&quot; 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">(&quot;</span><span class="string">don't talk to me</span><span class="punct">&quot;)</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">&quot;</span><span class="string">has a bug we need to fix</span><span class="punct">&quot;</span> <span class="keyword">do</span>
+<span class="offending"><span class="linenum">31</span> <span class="ident">pending</span> <span class="punct">&quot;</span><span class="string">here is the bug</span><span class="punct">&quot;</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">(&quot;</span><span class="string">Bug</span><span class="punct">&quot;)</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: &quot;RSpec is a\nbehaviour driven development\nframework for Ruby\n&quot;,
+ got: &quot;RSpec is a\nbehavior driven development\nframework for Ruby\n&quot; (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 &lt;Animal
+name=bob,
+species=tortoise
+&gt;
+
+ got &lt;Animal
+name=bob,
+species=giraffe
+&gt;
+
+
+(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">&quot;</span><span class="string">bob</span><span class="punct">&quot;,</span> <span class="punct">&quot;</span><span class="string">giraffe</span><span class="punct">&quot;</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">&quot;</span><span class="string">bob</span><span class="punct">&quot;,</span> <span class="punct">&quot;</span><span class="string">tortoise</span><span class="punct">&quot;</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 &quot;PENDING: for some reason&quot; (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 &quot;PENDING: Not Yet Implemented&quot; (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 &quot;PENDING: for some reason&quot; (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">&nbsp;</p>
+ <p id="duration">&nbsp;</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 &quot;poke me&quot; 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">&quot;</span><span class="string">should fail when expected message not received</span><span class="punct">&quot;</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">(&quot;</span><span class="string">poke me</span><span class="punct">&quot;)</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 &quot;one two three&quot; 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 &quot;don't talk to me&quot; 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">(&quot;</span><span class="string">don't talk to me</span><span class="punct">&quot;)</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">&quot;</span><span class="string">has a bug we need to fix</span><span class="punct">&quot;</span> <span class="keyword">do</span>
+<span class="offending"><span class="linenum">31</span> <span class="ident">pending</span> <span class="punct">&quot;</span><span class="string">here is the bug</span><span class="punct">&quot;</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">(&quot;</span><span class="string">Bug</span><span class="punct">&quot;)</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: &quot;RSpec is a\nbehaviour driven development\nframework for Ruby\n&quot;,
+ got: &quot;RSpec is a\nbehavior driven development\nframework for Ruby\n&quot; (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 &lt;Animal
+name=bob,
+species=tortoise
+&gt;
+
+ got &lt;Animal
+name=bob,
+species=giraffe
+&gt;
+
+
+(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">&quot;</span><span class="string">bob</span><span class="punct">&quot;,</span> <span class="punct">&quot;</span><span class="string">giraffe</span><span class="punct">&quot;</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">&quot;</span><span class="string">bob</span><span class="punct">&quot;,</span> <span class="punct">&quot;</span><span class="string">tortoise</span><span class="punct">&quot;</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 &quot;PENDING: for some reason&quot; (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 &quot;PENDING: Not Yet Implemented&quot; (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 &quot;PENDING: for some reason&quot; (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