rr 1.1.2 → 1.2.0
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 +4 -4
- data/Appraisals +3 -43
- data/CHANGES.md +46 -0
- data/CREDITS.md +5 -0
- data/Gemfile +3 -12
- data/README.md +25 -24
- data/Rakefile +16 -38
- data/doc/02_syntax_comparison.md +1 -0
- data/lib/rr/core_ext/array.rb +2 -0
- data/lib/rr/core_ext/hash.rb +2 -0
- data/lib/rr/deprecations.rb +97 -0
- data/lib/rr/double_definitions/double_injections/any_instance_of.rb +1 -1
- data/lib/rr/double_definitions/double_injections/instance.rb +2 -2
- data/lib/rr/dsl.rb +152 -0
- data/lib/rr/injections/method_missing_injection.rb +6 -2
- data/lib/rr/integrations/minitest_4.rb +1 -1
- data/lib/rr/integrations/minitest_4_active_support.rb +1 -1
- data/lib/rr/integrations/rspec/invocation_matcher.rb +0 -8
- data/lib/rr/integrations/rspec_2.rb +20 -2
- data/lib/rr/recorded_call.rb +29 -0
- data/lib/rr/recorded_calls.rb +8 -4
- data/lib/rr/space.rb +1 -1
- data/lib/rr/spy_verification.rb +13 -5
- data/lib/rr/version.rb +1 -1
- data/lib/rr/wildcard_matchers.rb +10 -10
- data/lib/rr/without_autohook.rb +5 -13
- data/rr.gemspec +3 -3
- data/spec/defines_spec_suite_tasks.rb +12 -0
- data/spec/global_helper.rb +5 -0
- data/spec/spec_suite_configuration.rb +1 -7
- data/spec/suites.yml +1 -1
- data/spec/suites/rspec_2/functional/any_instance_of_spec.rb +133 -33
- data/spec/suites/rspec_2/functional/dont_allow_spec.rb +13 -8
- data/spec/suites/rspec_2/functional/mock_bang_spec.rb +20 -0
- data/spec/suites/rspec_2/functional/mock_instance_of_spec.rb +14 -0
- data/spec/suites/rspec_2/functional/mock_instance_of_strong_spec.rb +15 -0
- data/spec/suites/rspec_2/functional/mock_proxy_instance_of_spec.rb +15 -0
- data/spec/suites/rspec_2/functional/mock_proxy_spec.rb +14 -0
- data/spec/suites/rspec_2/functional/mock_spec.rb +8 -232
- data/spec/suites/rspec_2/functional/mock_strong_spec.rb +14 -0
- data/spec/suites/rspec_2/functional/received_spec.rb +16 -0
- data/spec/suites/rspec_2/functional/spy_spec.rb +89 -28
- data/spec/suites/rspec_2/functional/stub_bang_spec.rb +20 -0
- data/spec/suites/rspec_2/functional/stub_instance_of_spec.rb +15 -0
- data/spec/suites/rspec_2/functional/stub_instance_of_strong_spec.rb +15 -0
- data/spec/suites/rspec_2/functional/stub_proxy_instance_of_spec.rb +16 -0
- data/spec/suites/rspec_2/functional/stub_proxy_spec.rb +45 -0
- data/spec/suites/rspec_2/functional/stub_spec.rb +42 -161
- data/spec/suites/rspec_2/functional/stub_strong_spec.rb +15 -0
- data/spec/suites/rspec_2/helper.rb +2 -2
- data/spec/suites/rspec_2/support/mixins/double_definition_creator_helpers.rb +173 -0
- data/spec/suites/rspec_2/support/mixins/mock_definition_creator_helpers.rb +45 -0
- data/spec/suites/rspec_2/support/mixins/proxy_definition_creator_helpers.rb +33 -0
- data/spec/suites/rspec_2/support/mixins/stub_creator_helpers.rb +43 -0
- data/spec/suites/rspec_2/support/mixins/stub_definition_creator_helpers.rb +45 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/argument_expectations_with_never_called_qualifier.rb +39 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/argument_expectations_with_times_called_qualifier.rb +50 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/argument_expectations_without_qualifiers.rb +131 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/dont_allow.rb +148 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mock_instance_of.rb +26 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mock_instance_of_strong.rb +28 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mock_proxy.rb +11 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mock_strong.rb +37 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mocking.rb +107 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stub_instance_of.rb +32 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stub_instance_of_strong.rb +39 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stub_proxy.rb +11 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stub_strong.rb +37 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stubbing.rb +57 -0
- data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/array_flatten_bug.rb +35 -0
- data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/block_form.rb +31 -0
- data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/comparing_arity.rb +63 -0
- data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/object_is_proxy.rb +43 -0
- data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/sequential_invocations.rb +26 -0
- data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/setting_implementation.rb +51 -0
- data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/yields.rb +81 -0
- data/spec/suites/rspec_2/unit/core_ext/enumerable_spec.rb +0 -28
- data/spec/suites/rspec_2/unit/deprecations_spec.rb +27 -0
- data/spec/suites/rspec_2/unit/dsl/double_creators_spec.rb +133 -0
- data/spec/suites/rspec_2/unit/dsl/space_spec.rb +99 -0
- data/spec/suites/rspec_2/unit/dsl/wildcard_matchers_spec.rb +67 -0
- data/spec/suites/rspec_2/unit/integrations/rspec_spec.rb +4 -19
- data/spec/suites/rspec_2/unit/space_spec.rb +5 -3
- data/spec/suites/rspec_2/unit/spy_verification_spec.rb +1 -1
- data/spec/support/adapter.rb +1 -1
- data/spec/support/adapter_tests/rspec.rb +19 -15
- data/spec/support/project/generator.rb +0 -4
- metadata +55 -48
- data/gemfiles/ruby_18_rspec_1.gemfile +0 -14
- data/gemfiles/ruby_18_rspec_1.gemfile.lock +0 -38
- data/gemfiles/ruby_18_rspec_1_rails_2.gemfile +0 -18
- data/gemfiles/ruby_18_rspec_1_rails_2.gemfile.lock +0 -64
- data/gemfiles/ruby_19_rspec_2_rails_3.gemfile +0 -15
- data/gemfiles/ruby_19_rspec_2_rails_3.gemfile.lock +0 -123
- data/lib/rr/adapters.rb +0 -34
- data/lib/rr/adapters/rr_methods.rb +0 -142
- data/lib/rr/integrations/rspec_1.rb +0 -46
- data/lib/rr/integrations/test_unit_1.rb +0 -63
- data/lib/rr/integrations/test_unit_2.rb +0 -17
- data/lib/rr/integrations/test_unit_200.rb +0 -27
- data/lib/rr/integrations/test_unit_200_active_support.rb +0 -25
- data/lib/rr/integrations/test_unit_2_active_support.rb +0 -38
- data/spec/suites/rspec_1/helper.rb +0 -24
- data/spec/suites/rspec_1/integration/rspec_1_spec.rb +0 -93
- data/spec/suites/rspec_1/integration/test_unit_1_spec.rb +0 -102
- data/spec/suites/rspec_1/integration/test_unit_2_spec.rb +0 -109
- data/spec/suites/rspec_1/spec_helper.rb +0 -3
- data/spec/suites/rspec_1_rails_2/integration/astc_rails_2_spec.rb +0 -141
- data/spec/suites/rspec_1_rails_2/integration/rspec_1_rails_2_spec.rb +0 -132
- data/spec/suites/rspec_1_rails_2/integration/test_unit_1_rails_2_spec.rb +0 -141
- data/spec/suites/rspec_1_rails_2/integration/test_unit_2_rails_2_spec.rb +0 -148
- data/spec/suites/rspec_1_rails_2/spec_helper.rb +0 -3
- data/spec/suites/rspec_2/functional/dsl_spec.rb +0 -13
- data/spec/suites/rspec_2/functional/instance_of_spec.rb +0 -14
- data/spec/suites/rspec_2/functional/proxy_spec.rb +0 -136
- data/spec/suites/rspec_2/functional/strong_spec.rb +0 -79
- data/spec/suites/rspec_2/integration/test_unit_200_spec.rb +0 -102
- data/spec/suites/rspec_2/integration/test_unit_2_spec.rb +0 -109
- data/spec/suites/rspec_2/unit/adapters/rr_methods/double_creators_spec.rb +0 -135
- data/spec/suites/rspec_2/unit/adapters/rr_methods/space_spec.rb +0 -101
- data/spec/suites/rspec_2/unit/adapters/rr_methods/wildcard_matchers_spec.rb +0 -69
- data/spec/suites/rspec_2_rails_3/integration/astc_rails_3_spec.rb +0 -141
- data/spec/suites/rspec_2_rails_3/integration/minitest_4_rails_3_spec.rb +0 -148
- data/spec/suites/rspec_2_rails_3/integration/rspec_2_rails_3_spec.rb +0 -172
- data/spec/suites/rspec_2_rails_3/integration/test_unit_200_rails_3_spec.rb +0 -141
- data/spec/suites/rspec_2_rails_3/integration/test_unit_2_rails_3_spec.rb +0 -148
- data/spec/suites/rspec_2_rails_3/spec_helper.rb +0 -3
- data/spec/suites/rspec_2_rails_4/integration/test_unit_200_rails_4_spec.rb +0 -142
- data/spec/suites/rspec_2_rails_4/integration/test_unit_2_rails_4_spec.rb +0 -149
data/lib/rr/adapters.rb
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
module RR
|
|
2
|
-
module Adapters
|
|
3
|
-
class << self
|
|
4
|
-
DEPRECATED_ADAPTERS = [
|
|
5
|
-
:MiniTest,
|
|
6
|
-
:TestUnit,
|
|
7
|
-
:RSpec2
|
|
8
|
-
]
|
|
9
|
-
|
|
10
|
-
def const_missing(adapter_const_name)
|
|
11
|
-
unless DEPRECATED_ADAPTERS.include?(adapter_const_name)
|
|
12
|
-
super
|
|
13
|
-
return
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
show_warning_for(adapter_const_name)
|
|
17
|
-
RR.autohook
|
|
18
|
-
|
|
19
|
-
Module.new
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
private
|
|
23
|
-
|
|
24
|
-
def show_warning_for(adapter_const_name)
|
|
25
|
-
warn <<EOT
|
|
26
|
-
--------------------------------------------------------------------------------
|
|
27
|
-
RR deprecation warning: RR now has an autohook system. You don't need to
|
|
28
|
-
`include RR::Adapters::*` in your test framework's base class anymore.
|
|
29
|
-
--------------------------------------------------------------------------------
|
|
30
|
-
EOT
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
module RR
|
|
2
|
-
module Adapters
|
|
3
|
-
module RRMethods
|
|
4
|
-
include ::RR::DoubleDefinitions::Strategies::StrategyMethods
|
|
5
|
-
|
|
6
|
-
def mock(subject=DoubleDefinitions::DoubleDefinitionCreate::NO_SUBJECT, method_name=nil, &definition_eval_block)
|
|
7
|
-
double_definition_create = DoubleDefinitions::DoubleDefinitionCreate.new
|
|
8
|
-
double_definition_create.mock(subject, method_name, &definition_eval_block)
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def stub(subject=DoubleDefinitions::DoubleDefinitionCreate::NO_SUBJECT, method_name=nil, &definition_eval_block)
|
|
12
|
-
double_definition_create = DoubleDefinitions::DoubleDefinitionCreate.new
|
|
13
|
-
double_definition_create.stub(subject, method_name, &definition_eval_block)
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def dont_allow(subject=DoubleDefinitions::DoubleDefinitionCreate::NO_SUBJECT, method_name=nil, &definition_eval_block)
|
|
17
|
-
double_definition_create = DoubleDefinitions::DoubleDefinitionCreate.new
|
|
18
|
-
double_definition_create.dont_allow(subject, method_name, &definition_eval_block)
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def proxy(subject=DoubleDefinitions::DoubleDefinitionCreate::NO_SUBJECT, method_name=nil, &definition_eval_block)
|
|
22
|
-
double_definition_create = DoubleDefinitions::DoubleDefinitionCreate.new
|
|
23
|
-
double_definition_create.proxy(subject, method_name, &definition_eval_block)
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def strong(subject=DoubleDefinitions::DoubleDefinitionCreate::NO_SUBJECT, method_name=nil, &definition_eval_block)
|
|
27
|
-
double_definition_create = DoubleDefinitions::DoubleDefinitionCreate.new
|
|
28
|
-
double_definition_create.strong(subject, method_name, &definition_eval_block)
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def instance_of(subject=DoubleDefinitions::DoubleDefinitionCreate::NO_SUBJECT, method_name=nil, &definition_eval_block)
|
|
32
|
-
double_definition_create = DoubleDefinitions::DoubleDefinitionCreate.new
|
|
33
|
-
double_definition_create.instance_of(subject, method_name, &definition_eval_block)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def any_instance_of(*args, &block)
|
|
37
|
-
RR::DoubleDefinitions::DoubleInjections::AnyInstanceOf.call(*args, &block)
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
# Verifies all the DoubleInjection objects have met their
|
|
41
|
-
# TimesCalledExpectations.
|
|
42
|
-
def verify
|
|
43
|
-
RR::Space.instance.verify_doubles
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
# Resets the registered Doubles and ordered Doubles
|
|
47
|
-
def reset
|
|
48
|
-
RR::Space.instance.reset
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
# Returns a AnyTimesMatcher. This is meant to be passed in as an argument
|
|
52
|
-
# to Double#times.
|
|
53
|
-
#
|
|
54
|
-
# mock(object).method_name(anything).times(any_times) {return_value}
|
|
55
|
-
def any_times
|
|
56
|
-
TimesCalledMatchers::AnyTimesMatcher.new
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
# Sets up an Anything wildcard ArgumentEqualityExpectation
|
|
60
|
-
# that succeeds when passed any argument.
|
|
61
|
-
# mock(object).method_name(anything) {return_value}
|
|
62
|
-
# object.method_name("an arbitrary value") # passes
|
|
63
|
-
def anything
|
|
64
|
-
RR::WildcardMatchers::Anything.new
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
# Sets up an IsA wildcard ArgumentEqualityExpectation
|
|
68
|
-
# that succeeds when passed an argument of a certain type.
|
|
69
|
-
# mock(object).method_name(is_a(String)) {return_value}
|
|
70
|
-
# object.method_name("A String") # passes
|
|
71
|
-
def is_a(klass)
|
|
72
|
-
RR::WildcardMatchers::IsA.new(klass)
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
# Sets up an Numeric wildcard ArgumentEqualityExpectation
|
|
76
|
-
# that succeeds when passed an argument that is ::Numeric.
|
|
77
|
-
# mock(object).method_name(numeric) {return_value}
|
|
78
|
-
# object.method_name(99) # passes
|
|
79
|
-
def numeric
|
|
80
|
-
RR::WildcardMatchers::Numeric.new
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
# Sets up an Boolean wildcard ArgumentEqualityExpectation
|
|
84
|
-
# that succeeds when passed an argument that is a ::Boolean.
|
|
85
|
-
# mock(object).method_name(boolean) {return_value}
|
|
86
|
-
# object.method_name(false) # passes
|
|
87
|
-
def boolean
|
|
88
|
-
RR::WildcardMatchers::Boolean.new
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
# Sets up a DuckType wildcard ArgumentEqualityExpectation
|
|
92
|
-
# that succeeds when the passed argument implements the methods.
|
|
93
|
-
# arg = Object.new
|
|
94
|
-
# def arg.foo; end
|
|
95
|
-
# def arg.bar; end
|
|
96
|
-
# mock(object).method_name(duck_type(:foo, :bar)) {return_value}
|
|
97
|
-
# object.method_name(arg) # passes
|
|
98
|
-
def duck_type(*args)
|
|
99
|
-
RR::WildcardMatchers::DuckType.new(*args)
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
# Sets up a HashIncluding wildcard ArgumentEqualityExpectation
|
|
103
|
-
# that succeeds when the passed argument contains at least those keys
|
|
104
|
-
# and values of the expectation.
|
|
105
|
-
# mock(object).method_name(hash_including(:foo => 1)) {return_value}
|
|
106
|
-
# object.method_name({:foo => 1, :bar => 2) # passes
|
|
107
|
-
def hash_including(expected_hash)
|
|
108
|
-
RR::WildcardMatchers::HashIncluding.new(expected_hash)
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
# Sets up a Satisfy wildcard ArgumentEqualityExpectation
|
|
112
|
-
# that succeeds when the passed argument causes the expectation's
|
|
113
|
-
# proc to return true.
|
|
114
|
-
# mock(object).method_name(satisfy {|arg| arg == :foo}) {return_value}
|
|
115
|
-
# object.method_name(:foo) # passes
|
|
116
|
-
def satisfy(expectation_proc=nil, &block)
|
|
117
|
-
expectation_proc ||= block
|
|
118
|
-
RR::WildcardMatchers::Satisfy.new(expectation_proc)
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
def spy(subject)
|
|
122
|
-
methods_to_stub = subject.public_methods.map {|method_name| method_name.to_sym} -
|
|
123
|
-
[:methods, :==, :__send__, :__id__, :object_id, :class]
|
|
124
|
-
methods_to_stub.each do |method|
|
|
125
|
-
stub.proxy(subject, method)
|
|
126
|
-
end
|
|
127
|
-
end
|
|
128
|
-
|
|
129
|
-
def received(subject)
|
|
130
|
-
RR::SpyVerificationProxy.new(subject)
|
|
131
|
-
end
|
|
132
|
-
|
|
133
|
-
instance_methods.each do |name|
|
|
134
|
-
alias_method "rr_#{name}", name
|
|
135
|
-
end
|
|
136
|
-
end
|
|
137
|
-
end
|
|
138
|
-
|
|
139
|
-
module Extensions
|
|
140
|
-
InstanceMethods = Adapters::RRMethods
|
|
141
|
-
end
|
|
142
|
-
end
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
module RR
|
|
2
|
-
module Integrations
|
|
3
|
-
class RSpec1
|
|
4
|
-
module Mixin
|
|
5
|
-
def setup_mocks_for_rspec
|
|
6
|
-
RR.reset
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
def verify_mocks_for_rspec
|
|
10
|
-
RR.verify
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def teardown_mocks_for_rspec
|
|
14
|
-
RR.reset
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def have_received(method = nil)
|
|
18
|
-
RSpec::InvocationMatcher.new(method)
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def name
|
|
23
|
-
'RSpec 1'
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def applies?
|
|
27
|
-
defined?(::Spec) &&
|
|
28
|
-
defined?(::Spec::VERSION::STRING) &&
|
|
29
|
-
::Spec::VERSION::STRING =~ /^1/
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def hook
|
|
33
|
-
::Spec::Runner.configure do |config|
|
|
34
|
-
config.mock_with Mixin
|
|
35
|
-
config.include RR::Adapters::RRMethods
|
|
36
|
-
end
|
|
37
|
-
patterns = ::Spec::Runner::QuietBacktraceTweaker::IGNORE_PATTERNS
|
|
38
|
-
unless patterns.include?(RR::Errors::BACKTRACE_IDENTIFIER)
|
|
39
|
-
patterns.push(RR::Errors::BACKTRACE_IDENTIFIER)
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
RR.register_adapter RSpec1
|
|
45
|
-
end
|
|
46
|
-
end
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
module RR
|
|
2
|
-
module Integrations
|
|
3
|
-
class TestUnit1
|
|
4
|
-
module Mixin
|
|
5
|
-
def assert_received(subject, &block)
|
|
6
|
-
block.call(received(subject)).call
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def name
|
|
11
|
-
'Test::Unit 1'
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def applies?
|
|
15
|
-
defined?(::Test::Unit) &&
|
|
16
|
-
defined?(::Test::Unit::TestCase) &&
|
|
17
|
-
!has_test_unit_version? &&
|
|
18
|
-
!test_unit_just_wraps_minitest?
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def hook
|
|
22
|
-
::Test::Unit::TestCase.class_eval do
|
|
23
|
-
include RR::Adapters::RRMethods
|
|
24
|
-
include Mixin
|
|
25
|
-
|
|
26
|
-
unless instance_methods.detect {|method_name| method_name.to_sym == :setup_with_rr }
|
|
27
|
-
alias_method :setup_without_rr, :setup
|
|
28
|
-
def setup_with_rr
|
|
29
|
-
setup_without_rr
|
|
30
|
-
RR.reset
|
|
31
|
-
RR.trim_backtrace = true
|
|
32
|
-
RR.overridden_error_class = ::Test::Unit::AssertionFailedError
|
|
33
|
-
end
|
|
34
|
-
alias_method :setup, :setup_with_rr
|
|
35
|
-
|
|
36
|
-
alias_method :teardown_without_rr, :teardown
|
|
37
|
-
def teardown_with_rr
|
|
38
|
-
RR.verify
|
|
39
|
-
ensure
|
|
40
|
-
teardown_without_rr
|
|
41
|
-
end
|
|
42
|
-
alias_method :teardown, :teardown_with_rr
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def test_unit_just_wraps_minitest?
|
|
48
|
-
defined?(::Test::Unit::TestCase) &&
|
|
49
|
-
defined?(::MiniTest::Unit::TestCase) &&
|
|
50
|
-
::Test::Unit::TestCase < ::MiniTest::Unit::TestCase
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
def has_test_unit_version?
|
|
54
|
-
require 'test/unit/version'
|
|
55
|
-
true
|
|
56
|
-
rescue LoadError
|
|
57
|
-
false
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
RR.register_adapter TestUnit1
|
|
62
|
-
end
|
|
63
|
-
end
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
module RR
|
|
2
|
-
module Integrations
|
|
3
|
-
class TestUnit2 < TestUnit1
|
|
4
|
-
def name
|
|
5
|
-
RR.ruby_18? ? 'Test::Unit 2.4.x' : 'Test::Unit >= 2.5'
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
def applies?
|
|
9
|
-
defined?(::Test::Unit) &&
|
|
10
|
-
defined?(::Test::Unit::TestCase) &&
|
|
11
|
-
has_test_unit_version?
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
RR.register_adapter TestUnit2
|
|
16
|
-
end
|
|
17
|
-
end
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
module RR
|
|
2
|
-
module Integrations
|
|
3
|
-
class TestUnit200
|
|
4
|
-
def initialize
|
|
5
|
-
@mt4_adapter = RR.adapters_by_name[:MiniTest4]
|
|
6
|
-
@tu_adapter = RR.adapters_by_name[:TestUnit1]
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
def name
|
|
10
|
-
'Test::Unit 2.0.0'
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def applies?
|
|
14
|
-
@mt4_adapter.applies? &&
|
|
15
|
-
defined?(::Test::Unit) &&
|
|
16
|
-
!@tu_adapter.has_test_unit_version? &&
|
|
17
|
-
@tu_adapter.test_unit_just_wraps_minitest?
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def hook
|
|
21
|
-
@mt4_adapter.hook
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
RR.register_adapter TestUnit200
|
|
26
|
-
end
|
|
27
|
-
end
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
module RR
|
|
2
|
-
module Integrations
|
|
3
|
-
class TestUnit200ActiveSupport
|
|
4
|
-
def initialize
|
|
5
|
-
@mt4as_adapter = RR.adapters_by_name[:MiniTest4ActiveSupport]
|
|
6
|
-
@tu200_adapter = RR.adapters_by_name[:TestUnit200]
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
def name
|
|
10
|
-
"#{@tu200_adapter.name} + ActiveSupport"
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def applies?
|
|
14
|
-
@tu200_adapter.applies? && defined?(::ActiveSupport::TestCase)
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def hook
|
|
18
|
-
@mt4as_adapter.hook
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
RR.register_adapter TestUnit200ActiveSupport
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
module RR
|
|
2
|
-
module Integrations
|
|
3
|
-
class TestUnit2ActiveSupport
|
|
4
|
-
def initialize
|
|
5
|
-
@tu2_adapter = RR.adapters_by_name[:TestUnit2]
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
def name
|
|
9
|
-
"#{@tu2_adapter.name} + ActiveSupport"
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def applies?
|
|
13
|
-
@tu2_adapter.applies? &&
|
|
14
|
-
defined?(::ActiveSupport::TestCase)
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def hook
|
|
18
|
-
RR.trim_backtrace = true
|
|
19
|
-
RR.overridden_error_class = ::Test::Unit::AssertionFailedError
|
|
20
|
-
|
|
21
|
-
::ActiveSupport::TestCase.class_eval do
|
|
22
|
-
include RR::Adapters::RRMethods
|
|
23
|
-
include TestUnit1::Mixin
|
|
24
|
-
|
|
25
|
-
setup do
|
|
26
|
-
RR.reset
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
teardown do
|
|
30
|
-
RR.verify
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
RR.register_adapter TestUnit2ActiveSupport
|
|
37
|
-
end
|
|
38
|
-
end
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
require 'spec/autorun'
|
|
2
|
-
|
|
3
|
-
require 'rr'
|
|
4
|
-
|
|
5
|
-
module ExampleMethods
|
|
6
|
-
def eigen(object)
|
|
7
|
-
class << object; self; end
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
module ExampleGroupMethods
|
|
12
|
-
def macro(name, &implementation)
|
|
13
|
-
(class << self; self; end).class_eval do
|
|
14
|
-
define_method(name, &implementation)
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
Spec::Runner.configure do |c|
|
|
20
|
-
c.include ExampleMethods
|
|
21
|
-
c.extend ExampleGroupMethods
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
Dir[ File.expand_path('../shared/*.rb', __FILE__) ].each {|fn| require fn }
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
require File.expand_path('../../spec_helper', __FILE__)
|
|
2
|
-
|
|
3
|
-
describe 'Integration with RSpec 1' do
|
|
4
|
-
include IntegrationTests::RubyRSpec
|
|
5
|
-
|
|
6
|
-
def configure_project_generator(project_generator)
|
|
7
|
-
super
|
|
8
|
-
project_generator.configure do |project|
|
|
9
|
-
project.rspec_version = 1
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def self.including_the_adapter_manually_works
|
|
14
|
-
specify "including the adapter manually works" do
|
|
15
|
-
project = generate_project do |project|
|
|
16
|
-
project.add_to_prelude <<-EOT
|
|
17
|
-
Spec::Runner.configure do |c|
|
|
18
|
-
c.mock_with :rr
|
|
19
|
-
end
|
|
20
|
-
EOT
|
|
21
|
-
end
|
|
22
|
-
project.add_test_file do |file|
|
|
23
|
-
file.add_working_test_case_with_adapter_tests do |test_case|
|
|
24
|
-
test_case.add_to_body <<-EOT
|
|
25
|
-
it 'loads the correct adapters' do
|
|
26
|
-
assert_adapters_loaded #{adapters_that_should_be_loaded.inspect}
|
|
27
|
-
end
|
|
28
|
-
EOT
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
result = project.run_tests
|
|
32
|
-
result.should be_success
|
|
33
|
-
result.should_not have_errors_or_failures
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def self.rr_hooks_into_the_test_framework_automatically
|
|
38
|
-
specify "RR hooks into the test framework automatically" do
|
|
39
|
-
project = generate_project
|
|
40
|
-
project.add_test_file do |file|
|
|
41
|
-
file.add_working_test_case
|
|
42
|
-
end
|
|
43
|
-
result = project.run_tests
|
|
44
|
-
result.should be_success
|
|
45
|
-
result.should_not have_errors_or_failures
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
context 'when Bundler is autorequiring RR' do
|
|
50
|
-
def configure_project_generator(project_generator)
|
|
51
|
-
super
|
|
52
|
-
project_generator.configure do |project|
|
|
53
|
-
project.autorequire_gems = true
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
def adapters_that_should_be_loaded
|
|
58
|
-
[:RSpec1]
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
including_the_adapter_manually_works
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
context 'when RR is being required manually' do
|
|
65
|
-
def configure_project_generator(project_generator)
|
|
66
|
-
super
|
|
67
|
-
project_generator.configure do |project|
|
|
68
|
-
project.autorequire_gems = false
|
|
69
|
-
end
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
def adapters_that_should_be_loaded
|
|
73
|
-
[:RSpec1]
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
rr_hooks_into_the_test_framework_automatically
|
|
77
|
-
including_the_adapter_manually_works
|
|
78
|
-
|
|
79
|
-
specify "when RR raises an error it raises a failure not an exception" do
|
|
80
|
-
project = generate_project
|
|
81
|
-
project.add_test_file do |file|
|
|
82
|
-
file.add_test_case do |test_case|
|
|
83
|
-
test_case.add_test <<-EOT
|
|
84
|
-
object = Object.new
|
|
85
|
-
mock(object).foo
|
|
86
|
-
EOT
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
result = project.run_tests
|
|
90
|
-
result.should fail_with_output(/1 failure/)
|
|
91
|
-
end
|
|
92
|
-
end
|
|
93
|
-
end
|