rspec-expectations 3.0.0.beta2 → 3.0.0.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +2 -2
- data/.yardopts +0 -1
- data/Changelog.md +115 -35
- data/README.md +2 -2
- data/lib/rspec/expectations.rb +13 -8
- data/lib/rspec/{matchers → expectations}/configuration.rb +38 -13
- data/lib/rspec/expectations/expectation_target.rb +72 -8
- data/lib/rspec/expectations/fail_with.rb +10 -52
- data/lib/rspec/expectations/handler.rb +9 -11
- data/lib/rspec/expectations/syntax.rb +37 -35
- data/lib/rspec/expectations/version.rb +1 -1
- data/lib/rspec/matchers.rb +60 -9
- data/lib/rspec/matchers/aliased_matcher.rb +6 -0
- data/lib/rspec/matchers/built_in.rb +9 -1
- data/lib/rspec/matchers/built_in/all.rb +78 -0
- data/lib/rspec/matchers/built_in/base_matcher.rb +39 -1
- data/lib/rspec/matchers/built_in/be.rb +117 -42
- data/lib/rspec/matchers/built_in/be_between.rb +22 -0
- data/lib/rspec/matchers/built_in/be_instance_of.rb +11 -3
- data/lib/rspec/matchers/built_in/be_kind_of.rb +5 -0
- data/lib/rspec/matchers/built_in/be_within.rb +26 -6
- data/lib/rspec/matchers/built_in/change.rb +89 -13
- data/lib/rspec/matchers/built_in/compound.rb +19 -3
- data/lib/rspec/matchers/built_in/contain_exactly.rb +17 -6
- data/lib/rspec/matchers/built_in/cover.rb +3 -0
- data/lib/rspec/matchers/built_in/eq.rb +20 -5
- data/lib/rspec/matchers/built_in/eql.rb +15 -3
- data/lib/rspec/matchers/built_in/equal.rb +23 -6
- data/lib/rspec/matchers/built_in/exist.rb +74 -10
- data/lib/rspec/matchers/built_in/has.rb +58 -3
- data/lib/rspec/matchers/built_in/include.rb +16 -1
- data/lib/rspec/matchers/built_in/match.rb +14 -4
- data/lib/rspec/matchers/built_in/operators.rb +16 -0
- data/lib/rspec/matchers/built_in/output.rb +47 -5
- data/lib/rspec/matchers/built_in/raise_error.rb +40 -23
- data/lib/rspec/matchers/built_in/respond_to.rb +37 -16
- data/lib/rspec/matchers/built_in/satisfy.rb +15 -0
- data/lib/rspec/matchers/built_in/start_and_end_with.rb +29 -14
- data/lib/rspec/matchers/built_in/throw_symbol.rb +32 -3
- data/lib/rspec/matchers/built_in/yield.rb +148 -44
- data/lib/rspec/matchers/composable.rb +48 -7
- data/lib/rspec/matchers/dsl.rb +45 -17
- data/lib/rspec/matchers/generated_descriptions.rb +7 -0
- data/lib/rspec/matchers/matcher_delegator.rb +6 -2
- data/lib/rspec/matchers/pretty.rb +15 -19
- metadata +33 -236
- metadata.gz.sig +0 -0
- data/features/README.md +0 -48
- data/features/Upgrade.md +0 -53
- data/features/built_in_matchers/README.md +0 -96
- data/features/built_in_matchers/be.feature +0 -175
- data/features/built_in_matchers/be_within.feature +0 -48
- data/features/built_in_matchers/comparisons.feature +0 -97
- data/features/built_in_matchers/contain_exactly.feature +0 -46
- data/features/built_in_matchers/cover.feature +0 -47
- data/features/built_in_matchers/end_with.feature +0 -48
- data/features/built_in_matchers/equality.feature +0 -136
- data/features/built_in_matchers/exist.feature +0 -45
- data/features/built_in_matchers/expect_change.feature +0 -59
- data/features/built_in_matchers/expect_error.feature +0 -144
- data/features/built_in_matchers/include.feature +0 -126
- data/features/built_in_matchers/match.feature +0 -51
- data/features/built_in_matchers/output.feature +0 -70
- data/features/built_in_matchers/predicates.feature +0 -161
- data/features/built_in_matchers/respond_to.feature +0 -84
- data/features/built_in_matchers/satisfy.feature +0 -33
- data/features/built_in_matchers/start_with.feature +0 -48
- data/features/built_in_matchers/throw_symbol.feature +0 -91
- data/features/built_in_matchers/types.feature +0 -116
- data/features/built_in_matchers/yield.feature +0 -161
- data/features/composing_matchers.feature +0 -250
- data/features/compound_expectations.feature +0 -45
- data/features/custom_matchers/access_running_example.feature +0 -53
- data/features/custom_matchers/define_diffable_matcher.feature +0 -27
- data/features/custom_matchers/define_matcher.feature +0 -340
- data/features/custom_matchers/define_matcher_outside_rspec.feature +0 -34
- data/features/custom_matchers/define_matcher_with_fluent_interface.feature +0 -24
- data/features/customized_message.feature +0 -39
- data/features/diffing.feature +0 -85
- data/features/implicit_docstrings.feature +0 -52
- data/features/step_definitions/additional_cli_steps.rb +0 -22
- data/features/support/env.rb +0 -21
- data/features/support/rubinius.rb +0 -6
- data/features/syntax_configuration.feature +0 -71
- data/features/test_frameworks/minitest.feature +0 -44
- data/lib/rspec-expectations.rb +0 -1
- data/lib/rspec/expectations/diff_presenter.rb +0 -141
- data/lib/rspec/expectations/differ.rb +0 -44
- data/lib/rspec/expectations/encoded_string.rb +0 -56
- data/spec/rspec/expectations/diff_presenter_spec.rb +0 -249
- data/spec/rspec/expectations/encoded_string_spec.rb +0 -74
- data/spec/rspec/expectations/expectation_target_spec.rb +0 -82
- data/spec/rspec/expectations/extensions/kernel_spec.rb +0 -67
- data/spec/rspec/expectations/fail_with_spec.rb +0 -114
- data/spec/rspec/expectations/handler_spec.rb +0 -205
- data/spec/rspec/expectations/minitest_integration_spec.rb +0 -27
- data/spec/rspec/expectations/syntax_spec.rb +0 -89
- data/spec/rspec/expectations_spec.rb +0 -12
- data/spec/rspec/matchers/aliased_matcher_spec.rb +0 -48
- data/spec/rspec/matchers/aliases_spec.rb +0 -449
- data/spec/rspec/matchers/built_in/base_matcher_spec.rb +0 -83
- data/spec/rspec/matchers/built_in/be_between_spec.rb +0 -159
- data/spec/rspec/matchers/built_in/be_instance_of_spec.rb +0 -63
- data/spec/rspec/matchers/built_in/be_kind_of_spec.rb +0 -41
- data/spec/rspec/matchers/built_in/be_spec.rb +0 -592
- data/spec/rspec/matchers/built_in/be_within_spec.rb +0 -141
- data/spec/rspec/matchers/built_in/change_spec.rb +0 -808
- data/spec/rspec/matchers/built_in/compound_spec.rb +0 -292
- data/spec/rspec/matchers/built_in/contain_exactly_spec.rb +0 -441
- data/spec/rspec/matchers/built_in/cover_spec.rb +0 -69
- data/spec/rspec/matchers/built_in/eq_spec.rb +0 -156
- data/spec/rspec/matchers/built_in/eql_spec.rb +0 -41
- data/spec/rspec/matchers/built_in/equal_spec.rb +0 -106
- data/spec/rspec/matchers/built_in/exist_spec.rb +0 -124
- data/spec/rspec/matchers/built_in/has_spec.rb +0 -161
- data/spec/rspec/matchers/built_in/include_spec.rb +0 -540
- data/spec/rspec/matchers/built_in/match_spec.rb +0 -102
- data/spec/rspec/matchers/built_in/operators_spec.rb +0 -252
- data/spec/rspec/matchers/built_in/output_spec.rb +0 -165
- data/spec/rspec/matchers/built_in/raise_error_spec.rb +0 -461
- data/spec/rspec/matchers/built_in/respond_to_spec.rb +0 -292
- data/spec/rspec/matchers/built_in/satisfy_spec.rb +0 -44
- data/spec/rspec/matchers/built_in/start_and_end_with_spec.rb +0 -253
- data/spec/rspec/matchers/built_in/throw_symbol_spec.rb +0 -135
- data/spec/rspec/matchers/built_in/yield_spec.rb +0 -627
- data/spec/rspec/matchers/configuration_spec.rb +0 -213
- data/spec/rspec/matchers/description_generation_spec.rb +0 -191
- data/spec/rspec/matchers/dsl_spec.rb +0 -895
- data/spec/rspec/matchers/legacy_spec.rb +0 -101
- data/spec/rspec/matchers_spec.rb +0 -74
- data/spec/spec_helper.rb +0 -85
- data/spec/support/matchers.rb +0 -22
- data/spec/support/shared_examples.rb +0 -35
@@ -1,67 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Object, "#should" do
|
4
|
-
before(:each) do
|
5
|
-
@target = "target"
|
6
|
-
@matcher = double("matcher")
|
7
|
-
allow(@matcher).to receive(:matches?).and_return(true)
|
8
|
-
allow(@matcher).to receive(:failure_message)
|
9
|
-
end
|
10
|
-
|
11
|
-
it "accepts and interacts with a matcher" do
|
12
|
-
expect(@matcher).to receive(:matches?).with(@target).and_return(true)
|
13
|
-
expect(@target).to @matcher
|
14
|
-
end
|
15
|
-
|
16
|
-
it "asks for a failure_message when matches? returns false" do
|
17
|
-
expect(@matcher).to receive(:matches?).with(@target).and_return(false)
|
18
|
-
expect(@matcher).to receive(:failure_message).and_return("the failure message")
|
19
|
-
expect {
|
20
|
-
expect(@target).to @matcher
|
21
|
-
}.to fail_with("the failure message")
|
22
|
-
end
|
23
|
-
|
24
|
-
context "on interpretters that have BasicObject", :if => defined?(BasicObject) do
|
25
|
-
let(:proxy_class) do
|
26
|
-
Class.new(BasicObject) do
|
27
|
-
def initialize(target)
|
28
|
-
@target = target
|
29
|
-
end
|
30
|
-
|
31
|
-
def proxied?
|
32
|
-
true
|
33
|
-
end
|
34
|
-
|
35
|
-
def method_missing(name, *args)
|
36
|
-
@target.send(name, *args)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
it 'works properly on BasicObject-subclassed proxy objects' do
|
42
|
-
expect(proxy_class.new(Object.new)).to be_proxied
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
describe Object, "#should_not" do
|
48
|
-
before(:each) do
|
49
|
-
@target = "target"
|
50
|
-
@matcher = double("matcher")
|
51
|
-
end
|
52
|
-
|
53
|
-
it "accepts and interacts with a matcher" do
|
54
|
-
expect(@matcher).to receive(:matches?).with(@target).and_return(false)
|
55
|
-
allow(@matcher).to receive(:failure_message_when_negated)
|
56
|
-
|
57
|
-
expect(@target).not_to @matcher
|
58
|
-
end
|
59
|
-
|
60
|
-
it "asks for a failure_message_when_negated when matches? returns true" do
|
61
|
-
expect(@matcher).to receive(:matches?).with(@target).and_return(true)
|
62
|
-
expect(@matcher).to receive(:failure_message_when_negated).and_return("the failure message for should not")
|
63
|
-
expect {
|
64
|
-
expect(@target).not_to @matcher
|
65
|
-
}.to fail_with("the failure message for should not")
|
66
|
-
end
|
67
|
-
end
|
@@ -1,114 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require 'spec_helper'
|
3
|
-
|
4
|
-
|
5
|
-
describe RSpec::Expectations, "#fail_with with diff of arrays" do
|
6
|
-
before { allow(RSpec::Matchers.configuration).to receive_messages(:color? => false) }
|
7
|
-
|
8
|
-
it "splits items with newlines" do
|
9
|
-
expected_diff = "\nDiff:\n@@ -1 +1,3 @@\n+a\\nb\n+c\\nd\n"
|
10
|
-
expect {
|
11
|
-
RSpec::Expectations.fail_with("", [], ["a\nb", "c\nd"])
|
12
|
-
}.to fail_with(expected_diff)
|
13
|
-
end
|
14
|
-
|
15
|
-
it "shows inner arrays on a single line" do
|
16
|
-
expected_diff = "\nDiff:\n@@ -1 +1,3 @@\n+a\\nb\n+[\"c\\nd\"]\n"
|
17
|
-
expect {
|
18
|
-
RSpec::Expectations.fail_with("", [], ["a\nb", ["c\nd"]])
|
19
|
-
}.to fail_with(expected_diff)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
describe RSpec::Expectations, "#fail_with with diff" do
|
24
|
-
let(:differ) { double("differ") }
|
25
|
-
|
26
|
-
before(:each) do
|
27
|
-
allow(RSpec::Expectations).to receive(:differ) { differ }
|
28
|
-
end
|
29
|
-
|
30
|
-
it "calls differ if expected/actual are not strings (or numbers or procs)" do
|
31
|
-
expect(differ).to receive(:diff_as_object).and_return("diff")
|
32
|
-
expect {
|
33
|
-
RSpec::Expectations.fail_with "the message", Object.new, Object.new
|
34
|
-
}.to fail_with("the message\nDiff:diff")
|
35
|
-
end
|
36
|
-
|
37
|
-
context "with two strings" do
|
38
|
-
context "and actual is multiline" do
|
39
|
-
it "calls differ" do
|
40
|
-
expect(differ).to receive(:diff_as_string).and_return("diff")
|
41
|
-
expect {
|
42
|
-
RSpec::Expectations.fail_with "the message", "expected\nthis", "actual"
|
43
|
-
}.to fail_with("the message\nDiff:diff")
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
context "and expected is multiline" do
|
48
|
-
it "calls differ" do
|
49
|
-
expect(differ).to receive(:diff_as_string).and_return("diff")
|
50
|
-
expect {
|
51
|
-
RSpec::Expectations.fail_with "the message", "expected", "actual\nthat"
|
52
|
-
}.to fail_with("the message\nDiff:diff")
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
context "and both are single line strings" do
|
57
|
-
it "does not call differ" do
|
58
|
-
expect(differ).not_to receive(:diff_as_string)
|
59
|
-
expect {
|
60
|
-
RSpec::Expectations.fail_with("the message", "expected", "actual")
|
61
|
-
}.to fail_with("the message")
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
context "and they are UTF-16LE encoded", :if => String.method_defined?(:encode) do
|
66
|
-
it 'does not diff when they are not multiline' do
|
67
|
-
expect(differ).not_to receive(:diff_as_string)
|
68
|
-
|
69
|
-
str_1 = "This is a pile of poo: 💩".encode("UTF-16LE")
|
70
|
-
str_2 = "This is a pile of poo: 💩".encode("UTF-16LE")
|
71
|
-
|
72
|
-
expect {
|
73
|
-
RSpec::Expectations.fail_with("the message", str_1, str_2)
|
74
|
-
}.to fail_with("the message")
|
75
|
-
end
|
76
|
-
|
77
|
-
it 'diffs when they are multiline' do
|
78
|
-
expect(differ).to receive(:diff_as_string).and_return("diff")
|
79
|
-
|
80
|
-
str_1 = "This is a pile of poo:\n💩".encode("UTF-16LE")
|
81
|
-
str_2 = "This is a pile of poo:\n💩".encode("UTF-16LE")
|
82
|
-
|
83
|
-
expect {
|
84
|
-
RSpec::Expectations.fail_with("the message", str_1, str_2)
|
85
|
-
}.to fail_with("the message\nDiff:diff")
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
it "does not call differ if no expected/actual" do
|
91
|
-
expect {
|
92
|
-
RSpec::Expectations.fail_with "the message"
|
93
|
-
}.to fail_with("the message")
|
94
|
-
end
|
95
|
-
|
96
|
-
it "does not call differ expected is Numeric" do
|
97
|
-
expect {
|
98
|
-
RSpec::Expectations.fail_with "the message", 1, "1"
|
99
|
-
}.to fail_with("the message")
|
100
|
-
end
|
101
|
-
|
102
|
-
it "does not call differ when actual is Numeric" do
|
103
|
-
expect {
|
104
|
-
RSpec::Expectations.fail_with "the message", "1", 1
|
105
|
-
}.to fail_with("the message")
|
106
|
-
end
|
107
|
-
|
108
|
-
it "does not call differ if expected or actual are procs" do
|
109
|
-
expect {
|
110
|
-
RSpec::Expectations.fail_with "the message", lambda {}, lambda {}
|
111
|
-
}.to fail_with("the message")
|
112
|
-
end
|
113
|
-
end
|
114
|
-
|
@@ -1,205 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
module ExampleExpectations
|
4
|
-
|
5
|
-
class ArbitraryMatcher
|
6
|
-
def initialize(*args, &block)
|
7
|
-
if args.last.is_a? Hash
|
8
|
-
@expected = args.last[:expected]
|
9
|
-
end
|
10
|
-
@expected = block.call if block
|
11
|
-
@block = block
|
12
|
-
end
|
13
|
-
|
14
|
-
def matches?(target)
|
15
|
-
@target = target
|
16
|
-
return @expected == target
|
17
|
-
end
|
18
|
-
|
19
|
-
def with(new_value)
|
20
|
-
@expected = new_value
|
21
|
-
self
|
22
|
-
end
|
23
|
-
|
24
|
-
def failure_message
|
25
|
-
"expected #{@expected}, got #{@target}"
|
26
|
-
end
|
27
|
-
|
28
|
-
def failure_message_when_negated
|
29
|
-
"expected not #{@expected}, got #{@target}"
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
class PositiveOnlyMatcher < ArbitraryMatcher
|
34
|
-
undef failure_message_when_negated rescue nil
|
35
|
-
end
|
36
|
-
|
37
|
-
def arbitrary_matcher(*args, &block)
|
38
|
-
ArbitraryMatcher.new(*args, &block)
|
39
|
-
end
|
40
|
-
|
41
|
-
def positive_only_matcher(*args, &block)
|
42
|
-
PositiveOnlyMatcher.new(*args, &block)
|
43
|
-
end
|
44
|
-
|
45
|
-
end
|
46
|
-
|
47
|
-
module RSpec
|
48
|
-
module Expectations
|
49
|
-
describe PositiveExpectationHandler do
|
50
|
-
describe "#handle_matcher" do
|
51
|
-
it "asks the matcher if it matches" do
|
52
|
-
matcher = double("matcher")
|
53
|
-
actual = Object.new
|
54
|
-
expect(matcher).to receive(:matches?).with(actual).and_return(true)
|
55
|
-
RSpec::Expectations::PositiveExpectationHandler.handle_matcher(actual, matcher)
|
56
|
-
end
|
57
|
-
|
58
|
-
it "returns the match value" do
|
59
|
-
matcher = double("matcher")
|
60
|
-
actual = Object.new
|
61
|
-
expect(matcher).to receive(:matches?).with(actual).and_return(:this_value)
|
62
|
-
expect(RSpec::Expectations::PositiveExpectationHandler.handle_matcher(actual, matcher)).to eq :this_value
|
63
|
-
end
|
64
|
-
|
65
|
-
it "calls failure_message if the matcher implements it" do
|
66
|
-
matcher = double("matcher", :failure_message => "message", :matches? => false)
|
67
|
-
actual = Object.new
|
68
|
-
|
69
|
-
expect(::RSpec::Expectations).to receive(:fail_with).with("message")
|
70
|
-
|
71
|
-
RSpec::Expectations::PositiveExpectationHandler.handle_matcher(actual, matcher)
|
72
|
-
end
|
73
|
-
|
74
|
-
it "calls fail if matcher.diffable?" do
|
75
|
-
matcher = double("matcher",
|
76
|
-
:diffable? => true,
|
77
|
-
:failure_message => "message",
|
78
|
-
:matches? => false,
|
79
|
-
:expected => 1,
|
80
|
-
:actual => 2
|
81
|
-
)
|
82
|
-
actual = Object.new
|
83
|
-
|
84
|
-
expect(::RSpec::Expectations).to receive(:fail_with).with("message", 1, 2)
|
85
|
-
|
86
|
-
RSpec::Expectations::PositiveExpectationHandler.handle_matcher(actual, matcher)
|
87
|
-
end
|
88
|
-
|
89
|
-
it "calls failure_message if the matcher does not implement failure_message" do
|
90
|
-
matcher = double("matcher", :failure_message => "message", :matches? => false)
|
91
|
-
actual = Object.new
|
92
|
-
|
93
|
-
expect(::RSpec::Expectations).to receive(:fail_with).with("message")
|
94
|
-
|
95
|
-
RSpec::Expectations::PositiveExpectationHandler.handle_matcher(actual, matcher)
|
96
|
-
|
97
|
-
end
|
98
|
-
|
99
|
-
it "uses the custom failure message when one is provided" do
|
100
|
-
matcher = double("matcher", :failure_message => "message", :matches? => false)
|
101
|
-
actual = Object.new
|
102
|
-
|
103
|
-
expect(::RSpec::Expectations).to receive(:fail_with).with("custom")
|
104
|
-
|
105
|
-
RSpec::Expectations::PositiveExpectationHandler.handle_matcher(actual, matcher, "custom")
|
106
|
-
end
|
107
|
-
|
108
|
-
it "uses the custom failure message when one is provided as a callable object" do
|
109
|
-
matcher = double("matcher", :failure_message => "message", :matches? => false)
|
110
|
-
actual = Object.new
|
111
|
-
|
112
|
-
failure_message = double("failure message", :call => "custom")
|
113
|
-
|
114
|
-
expect(::RSpec::Expectations).to receive(:fail_with).with("custom")
|
115
|
-
|
116
|
-
RSpec::Expectations::PositiveExpectationHandler.handle_matcher(actual, matcher, failure_message)
|
117
|
-
end
|
118
|
-
end
|
119
|
-
end
|
120
|
-
|
121
|
-
describe NegativeExpectationHandler do
|
122
|
-
describe "#handle_matcher" do
|
123
|
-
it "asks the matcher if it doesn't match when the matcher responds to #does_not_match?" do
|
124
|
-
matcher = double("matcher", :does_not_match? => true, :failure_message_when_negated => nil)
|
125
|
-
actual = Object.new
|
126
|
-
expect(matcher).to receive(:does_not_match?).with(actual).and_return(true)
|
127
|
-
RSpec::Expectations::NegativeExpectationHandler.handle_matcher(actual, matcher)
|
128
|
-
end
|
129
|
-
|
130
|
-
it "asks the matcher if it matches when the matcher doesn't respond to #does_not_match?" do
|
131
|
-
matcher = double("matcher")
|
132
|
-
actual = Object.new
|
133
|
-
allow(matcher).to receive(:failure_message_when_negated)
|
134
|
-
expect(matcher).to receive(:matches?).with(actual).and_return(false)
|
135
|
-
RSpec::Expectations::NegativeExpectationHandler.handle_matcher(actual, matcher)
|
136
|
-
end
|
137
|
-
|
138
|
-
it "returns the match value" do
|
139
|
-
matcher = double("matcher")
|
140
|
-
actual = Object.new
|
141
|
-
expect(matcher).to receive(:matches?).with(actual).and_return(false)
|
142
|
-
allow(matcher).to receive(:failure_message_when_negated).and_return("ignore")
|
143
|
-
expect(RSpec::Expectations::NegativeExpectationHandler.handle_matcher(actual, matcher)).to be_falsey
|
144
|
-
end
|
145
|
-
|
146
|
-
it "calls fail if matcher.diffable?" do
|
147
|
-
matcher = double("matcher",
|
148
|
-
:diffable? => true,
|
149
|
-
:failure_message_when_negated => "message",
|
150
|
-
:matches? => true,
|
151
|
-
:expected => 1,
|
152
|
-
:actual => 2
|
153
|
-
)
|
154
|
-
actual = Object.new
|
155
|
-
|
156
|
-
expect(::RSpec::Expectations).to receive(:fail_with).with("message", 1, 2)
|
157
|
-
|
158
|
-
RSpec::Expectations::NegativeExpectationHandler.handle_matcher(actual, matcher)
|
159
|
-
end
|
160
|
-
|
161
|
-
it "uses the custom failure message when one is provided" do
|
162
|
-
matcher = double("matcher", :failure_message_when_negated => "message", :matches? => true)
|
163
|
-
actual = Object.new
|
164
|
-
|
165
|
-
expect(::RSpec::Expectations).to receive(:fail_with).with("custom")
|
166
|
-
|
167
|
-
RSpec::Expectations::NegativeExpectationHandler.handle_matcher(actual, matcher, "custom")
|
168
|
-
end
|
169
|
-
|
170
|
-
it "uses the custom failure message when one is provided as a callable object" do
|
171
|
-
matcher = double("matcher", :failure_message_when_negated => "message", :matches? => true)
|
172
|
-
actual = Object.new
|
173
|
-
|
174
|
-
failure_message = double("failure message", :call => "custom")
|
175
|
-
|
176
|
-
expect(::RSpec::Expectations).to receive(:fail_with).with("custom")
|
177
|
-
|
178
|
-
RSpec::Expectations::NegativeExpectationHandler.handle_matcher(actual, matcher, failure_message)
|
179
|
-
end
|
180
|
-
end
|
181
|
-
end
|
182
|
-
|
183
|
-
describe PositiveExpectationHandler do
|
184
|
-
include ExampleExpectations
|
185
|
-
|
186
|
-
it "handles submitted args" do
|
187
|
-
expect(5).to arbitrary_matcher(:expected => 5)
|
188
|
-
expect(5).to arbitrary_matcher(:expected => "wrong").with(5)
|
189
|
-
expect { expect(5).to arbitrary_matcher(:expected => 4) }.to fail_with("expected 4, got 5")
|
190
|
-
expect { expect(5).to arbitrary_matcher(:expected => 5).with(4) }.to fail_with("expected 4, got 5")
|
191
|
-
expect(5).not_to arbitrary_matcher(:expected => 4)
|
192
|
-
expect(5).not_to arbitrary_matcher(:expected => 5).with(4)
|
193
|
-
expect { expect(5).not_to arbitrary_matcher(:expected => 5) }.to fail_with("expected not 5, got 5")
|
194
|
-
expect { expect(5).not_to arbitrary_matcher(:expected => 4).with(5) }.to fail_with("expected not 5, got 5")
|
195
|
-
end
|
196
|
-
|
197
|
-
it "handles the submitted block" do
|
198
|
-
expect(5).to arbitrary_matcher { 5 }
|
199
|
-
expect(5).to arbitrary_matcher(:expected => 4) { 5 }
|
200
|
-
expect(5).to arbitrary_matcher(:expected => 4).with(5) { 3 }
|
201
|
-
end
|
202
|
-
|
203
|
-
end
|
204
|
-
end
|
205
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
module RSpec
|
4
|
-
describe Matchers do
|
5
|
-
|
6
|
-
let(:sample_matchers) do
|
7
|
-
[:be,
|
8
|
-
:be_instance_of,
|
9
|
-
:be_kind_of]
|
10
|
-
end
|
11
|
-
|
12
|
-
context "once required" do
|
13
|
-
include MinitestIntegration
|
14
|
-
|
15
|
-
it "includes itself in Minitest::Test" do
|
16
|
-
with_minitest_loaded do
|
17
|
-
minitest_case = MiniTest::Test.allocate
|
18
|
-
sample_matchers.each do |sample_matcher|
|
19
|
-
expect(minitest_case).to respond_to(sample_matcher)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
27
|
-
end
|
@@ -1,89 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
module RSpec
|
4
|
-
module Expectations
|
5
|
-
describe Syntax do
|
6
|
-
context "when passing a message to an expectation" do
|
7
|
-
let(:warner) { ::Kernel }
|
8
|
-
|
9
|
-
let(:string_like_object) do
|
10
|
-
Struct.new(:to_str, :to_s).new(*(["Ceci n'est pas une Chaine."]*2))
|
11
|
-
end
|
12
|
-
|
13
|
-
let(:insufficiently_string_like_object) do
|
14
|
-
Struct.new(:to_s).new("Ceci n'est pas une Chaine.")
|
15
|
-
end
|
16
|
-
|
17
|
-
let(:callable_object) do
|
18
|
-
Struct.new(:call).new("Ceci n'est pas une Chaine.")
|
19
|
-
end
|
20
|
-
|
21
|
-
describe "expect(...).to" do
|
22
|
-
it "prints a warning when the message object isn't a String" do
|
23
|
-
expect(warner).to receive(:warn).with(/ignoring.*message/)
|
24
|
-
expect(3).to eq(3), :not_a_string
|
25
|
-
end
|
26
|
-
|
27
|
-
it "doesn't print a warning when message is a String" do
|
28
|
-
expect(warner).not_to receive(:warn)
|
29
|
-
expect(3).to eq(3), "a string"
|
30
|
-
end
|
31
|
-
|
32
|
-
it "doesn't print a warning when message responds to to_str" do
|
33
|
-
expect(warner).not_to receive(:warn)
|
34
|
-
expect(3).to eq(3), string_like_object
|
35
|
-
end
|
36
|
-
|
37
|
-
it "prints a warning when the message object handles to_s but not to_str" do
|
38
|
-
expect(warner).to receive(:warn).with(/ignoring.*message/)
|
39
|
-
expect(3).to eq(3), insufficiently_string_like_object
|
40
|
-
end
|
41
|
-
|
42
|
-
it "doesn't print a warning when message responds to call" do
|
43
|
-
expect(warner).not_to receive(:warn)
|
44
|
-
expect(3).to eq(3), callable_object
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
describe "expect(...).not_to" do
|
49
|
-
it "prints a warning when the message object isn't a String" do
|
50
|
-
expect(warner).to receive(:warn).with(/ignoring.*message/)
|
51
|
-
expect(3).not_to eq(4), :not_a_string
|
52
|
-
end
|
53
|
-
|
54
|
-
it "doesn't print a warning when message is a String" do
|
55
|
-
expect(warner).not_to receive(:warn)
|
56
|
-
expect(3).not_to eq(4), "a string"
|
57
|
-
end
|
58
|
-
|
59
|
-
it "doesn't print a warning when message responds to to_str" do
|
60
|
-
expect(warner).not_to receive(:warn)
|
61
|
-
expect(3).not_to eq(4), string_like_object
|
62
|
-
end
|
63
|
-
|
64
|
-
it "prints a warning when the message object handles to_s but not to_str" do
|
65
|
-
expect(warner).to receive(:warn).with(/ignoring.*message/)
|
66
|
-
expect(3).not_to eq(4), insufficiently_string_like_object
|
67
|
-
end
|
68
|
-
|
69
|
-
it "doesn't print a warning when message responds to call" do
|
70
|
-
expect(warner).not_to receive(:warn)
|
71
|
-
expect(3).not_to eq(4), callable_object
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
describe "enabling the should syntax on something other than the default syntax host" do
|
77
|
-
include_context "with the default expectation syntax"
|
78
|
-
|
79
|
-
it "continues to warn about the should syntax" do
|
80
|
-
my_host = Class.new
|
81
|
-
expect(RSpec).to receive(:deprecate)
|
82
|
-
Syntax.enable_should(my_host)
|
83
|
-
|
84
|
-
3.should eq 3
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|