aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/plugins/rspec/lib/spec/expectations
diff options
context:
space:
mode:
authorFrancis Irving <francis@mysociety.org>2009-12-02 17:56:17 +0000
committerFrancis Irving <francis@mysociety.org>2009-12-02 17:56:17 +0000
commit1bbb3f950f8bee92bf8a39e6f18c3278f1bab11d (patch)
tree5d0312d5d00446cd1454a5e1c799cd89d57b10d6 /vendor/plugins/rspec/lib/spec/expectations
parent5f3139b538d1ff58b719a72d7c7cf05a5b6136b5 (diff)
Changing rspec / rspec_on_rails version
Diffstat (limited to 'vendor/plugins/rspec/lib/spec/expectations')
-rw-r--r--vendor/plugins/rspec/lib/spec/expectations/differs/default.rb66
-rw-r--r--vendor/plugins/rspec/lib/spec/expectations/extensions.rb3
-rw-r--r--vendor/plugins/rspec/lib/spec/expectations/extensions/object.rb63
-rw-r--r--vendor/plugins/rspec/lib/spec/expectations/extensions/string_and_symbol.rb17
-rw-r--r--vendor/plugins/rspec/lib/spec/expectations/handler.rb78
5 files changed, 35 insertions, 192 deletions
diff --git a/vendor/plugins/rspec/lib/spec/expectations/differs/default.rb b/vendor/plugins/rspec/lib/spec/expectations/differs/default.rb
deleted file mode 100644
index 74b59bbe3..000000000
--- a/vendor/plugins/rspec/lib/spec/expectations/differs/default.rb
+++ /dev/null
@@ -1,66 +0,0 @@
-begin
- require 'rubygems'
- require 'diff/lcs' #necessary due to loading bug on some machines - not sure why - DaC
- require 'diff/lcs/hunk'
-rescue LoadError ; raise "You must gem install diff-lcs to use diffing" ; end
-
-require 'pp'
-
-module Spec
- module Expectations
- module Differs
-
- # TODO add some rdoc
- class Default
- def initialize(options)
- @options = options
- end
-
- # This is snagged from diff/lcs/ldiff.rb (which is a commandline tool)
- def diff_as_string(data_new, data_old)
- data_old = data_old.split(/\n/).map! { |e| e.chomp }
- data_new = data_new.split(/\n/).map! { |e| e.chomp }
- output = ""
- diffs = Diff::LCS.diff(data_old, data_new)
- return output if diffs.empty?
- oldhunk = hunk = nil
- file_length_difference = 0
- diffs.each do |piece|
- begin
- hunk = Diff::LCS::Hunk.new(data_old, data_new, piece, context_lines,
- file_length_difference)
- file_length_difference = hunk.file_length_difference
- next unless oldhunk
- # Hunks may overlap, which is why we need to be careful when our
- # diff includes lines of context. Otherwise, we might print
- # redundant lines.
- if (context_lines > 0) and hunk.overlaps?(oldhunk)
- hunk.unshift(oldhunk)
- else
- output << oldhunk.diff(format)
- end
- ensure
- oldhunk = hunk
- output << "\n"
- end
- end
- #Handle the last remaining hunk
- output << oldhunk.diff(format) << "\n"
- end
-
- def diff_as_object(target,expected)
- diff_as_string(PP.pp(target,""), PP.pp(expected,""))
- end
-
- protected
- def format
- @options.diff_format
- end
-
- def context_lines
- @options.context_lines
- end
- end
- end
- end
-end
diff --git a/vendor/plugins/rspec/lib/spec/expectations/extensions.rb b/vendor/plugins/rspec/lib/spec/expectations/extensions.rb
index 60c9b9e7d..d68212e42 100644
--- a/vendor/plugins/rspec/lib/spec/expectations/extensions.rb
+++ b/vendor/plugins/rspec/lib/spec/expectations/extensions.rb
@@ -1,2 +1 @@
-require 'spec/expectations/extensions/object'
-require 'spec/expectations/extensions/string_and_symbol'
+require 'spec/expectations/extensions/kernel'
diff --git a/vendor/plugins/rspec/lib/spec/expectations/extensions/object.rb b/vendor/plugins/rspec/lib/spec/expectations/extensions/object.rb
deleted file mode 100644
index 2091c2947..000000000
--- a/vendor/plugins/rspec/lib/spec/expectations/extensions/object.rb
+++ /dev/null
@@ -1,63 +0,0 @@
-module Spec
- module Expectations
- # rspec adds #should and #should_not to every Object (and,
- # implicitly, every Class).
- module ObjectExpectations
- # :call-seq:
- # should(matcher)
- # should == expected
- # should === expected
- # should =~ expected
- #
- # receiver.should(matcher)
- # => Passes if matcher.matches?(receiver)
- #
- # receiver.should == expected #any value
- # => Passes if (receiver == expected)
- #
- # receiver.should === expected #any value
- # => Passes if (receiver === expected)
- #
- # receiver.should =~ regexp
- # => Passes if (receiver =~ regexp)
- #
- # See Spec::Matchers for more information about matchers
- #
- # == Warning
- #
- # NOTE that this does NOT support receiver.should != expected.
- # Instead, use receiver.should_not == expected
- def should(matcher=:use_operator_matcher, &block)
- ExpectationMatcherHandler.handle_matcher(self, matcher, &block)
- end
-
- # :call-seq:
- # should_not(matcher)
- # should_not == expected
- # should_not === expected
- # should_not =~ expected
- #
- # receiver.should_not(matcher)
- # => Passes unless matcher.matches?(receiver)
- #
- # receiver.should_not == expected
- # => Passes unless (receiver == expected)
- #
- # receiver.should_not === expected
- # => Passes unless (receiver === expected)
- #
- # receiver.should_not =~ regexp
- # => Passes unless (receiver =~ regexp)
- #
- # See Spec::Matchers for more information about matchers
- def should_not(matcher=:use_operator_matcher, &block)
- NegativeExpectationMatcherHandler.handle_matcher(self, matcher, &block)
- end
-
- end
- end
-end
-
-class Object
- include Spec::Expectations::ObjectExpectations
-end
diff --git a/vendor/plugins/rspec/lib/spec/expectations/extensions/string_and_symbol.rb b/vendor/plugins/rspec/lib/spec/expectations/extensions/string_and_symbol.rb
deleted file mode 100644
index 29cfbddfa..000000000
--- a/vendor/plugins/rspec/lib/spec/expectations/extensions/string_and_symbol.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-module Spec
- module Expectations
- module StringHelpers
- def starts_with?(prefix)
- to_s[0..(prefix.to_s.length - 1)] == prefix.to_s
- end
- end
- end
-end
-
-class String
- include Spec::Expectations::StringHelpers
-end
-
-class Symbol
- include Spec::Expectations::StringHelpers
-end
diff --git a/vendor/plugins/rspec/lib/spec/expectations/handler.rb b/vendor/plugins/rspec/lib/spec/expectations/handler.rb
index 2e5f2a621..c059637c7 100644
--- a/vendor/plugins/rspec/lib/spec/expectations/handler.rb
+++ b/vendor/plugins/rspec/lib/spec/expectations/handler.rb
@@ -2,59 +2,49 @@ module Spec
module Expectations
class InvalidMatcherError < ArgumentError; end
- module MatcherHandlerHelper
- def describe_matcher(matcher)
- matcher.respond_to?(:description) ? matcher.description : "[#{matcher.class.name} does not provide a description]"
- end
- end
-
- class ExpectationMatcherHandler
- class << self
- include MatcherHandlerHelper
- def handle_matcher(actual, matcher, &block)
- if :use_operator_matcher == matcher
- return Spec::Matchers::PositiveOperatorMatcher.new(actual)
- end
+ class PositiveExpectationHandler
+ def self.handle_matcher(actual, matcher, message=nil, &block)
+ ::Spec::Matchers.last_should = :should
+ ::Spec::Matchers.last_matcher = matcher
+ return ::Spec::Matchers::PositiveOperatorMatcher.new(actual) if matcher.nil?
- unless matcher.respond_to?(:matches?)
- raise InvalidMatcherError, "Expected a matcher, got #{matcher.inspect}."
- end
-
- match = matcher.matches?(actual, &block)
- ::Spec::Matchers.generated_description = "should #{describe_matcher(matcher)}"
- Spec::Expectations.fail_with(matcher.failure_message) unless match
+ match = matcher.matches?(actual, &block)
+ return match if match
+
+ message ||= matcher.respond_to?(:failure_message_for_should) ?
+ matcher.failure_message_for_should :
+ matcher.failure_message
+
+ if matcher.respond_to?(:diffable?) && matcher.diffable?
+ ::Spec::Expectations.fail_with message, matcher.expected.first, matcher.actual
+ else
+ ::Spec::Expectations.fail_with message
end
end
end
- class NegativeExpectationMatcherHandler
- class << self
- include MatcherHandlerHelper
- def handle_matcher(actual, matcher, &block)
- if :use_operator_matcher == matcher
- return Spec::Matchers::NegativeOperatorMatcher.new(actual)
- end
-
- unless matcher.respond_to?(:matches?)
- raise InvalidMatcherError, "Expected a matcher, got #{matcher.inspect}."
- end
+ class NegativeExpectationHandler
+ def self.handle_matcher(actual, matcher, message=nil, &block)
+ ::Spec::Matchers.last_should = :should_not
+ ::Spec::Matchers.last_matcher = matcher
+ return ::Spec::Matchers::NegativeOperatorMatcher.new(actual) if matcher.nil?
+
+ match = matcher.respond_to?(:does_not_match?) ?
+ !matcher.does_not_match?(actual, &block) :
+ matcher.matches?(actual, &block)
+ return match unless match
+
+ message ||= matcher.respond_to?(:failure_message_for_should_not) ?
+ matcher.failure_message_for_should_not :
+ matcher.negative_failure_message
- unless matcher.respond_to?(:negative_failure_message)
- Spec::Expectations.fail_with(
-<<-EOF
-Matcher does not support should_not.
-See Spec::Matchers for more information
-about matchers.
-EOF
-)
- end
- match = matcher.matches?(actual, &block)
- ::Spec::Matchers.generated_description = "should not #{describe_matcher(matcher)}"
- Spec::Expectations.fail_with(matcher.negative_failure_message) if match
+ if matcher.respond_to?(:diffable?) && matcher.diffable?
+ ::Spec::Expectations.fail_with message, matcher.expected.first, matcher.actual
+ else
+ ::Spec::Expectations.fail_with message
end
end
end
-
end
end