rr 1.1.2 → 3.0.2

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.
Files changed (157) hide show
  1. checksums.yaml +5 -5
  2. data/Appraisals +3 -43
  3. data/CHANGES.md +93 -0
  4. data/CREDITS.md +5 -0
  5. data/Gemfile +1 -17
  6. data/README.md +29 -32
  7. data/Rakefile +42 -40
  8. data/doc/02_syntax_comparison.md +1 -0
  9. data/lib/rr/class_instance_method_defined.rb +1 -1
  10. data/lib/rr/core_ext/array.rb +2 -0
  11. data/lib/rr/core_ext/hash.rb +2 -0
  12. data/lib/rr/deprecations.rb +97 -0
  13. data/lib/rr/double.rb +28 -10
  14. data/lib/rr/double_definitions/double_definition.rb +39 -16
  15. data/lib/rr/double_definitions/double_definition_create.rb +5 -5
  16. data/lib/rr/double_definitions/double_definition_create_blank_slate.rb +10 -4
  17. data/lib/rr/double_definitions/double_injections/any_instance_of.rb +1 -1
  18. data/lib/rr/double_definitions/double_injections/instance.rb +2 -2
  19. data/lib/rr/double_definitions/strategies/strategy.rb +27 -8
  20. data/lib/rr/double_definitions/strategies/verification/mock.rb +8 -2
  21. data/lib/rr/double_matches.rb +4 -3
  22. data/lib/rr/dsl.rb +152 -0
  23. data/lib/rr/expectations/any_argument_expectation.rb +4 -4
  24. data/lib/rr/expectations/argument_equality_expectation.rb +43 -5
  25. data/lib/rr/injections/double_injection.rb +85 -26
  26. data/lib/rr/injections/method_missing_injection.rb +37 -6
  27. data/lib/rr/integrations/minitest_4.rb +1 -1
  28. data/lib/rr/integrations/minitest_4_active_support.rb +1 -1
  29. data/lib/rr/integrations/rspec/invocation_matcher.rb +0 -8
  30. data/lib/rr/integrations/rspec_2.rb +20 -2
  31. data/lib/rr/keyword_arguments.rb +15 -0
  32. data/lib/rr/method_dispatches/base_method_dispatch.rb +22 -5
  33. data/lib/rr/method_dispatches/method_dispatch.rb +21 -10
  34. data/lib/rr/method_dispatches/method_missing_dispatch.rb +14 -5
  35. data/lib/rr/recorded_call.rb +35 -0
  36. data/lib/rr/recorded_calls.rb +23 -9
  37. data/lib/rr/space.rb +15 -5
  38. data/lib/rr/spy_verification.rb +13 -5
  39. data/lib/rr/version.rb +1 -1
  40. data/lib/rr/wildcard_matchers.rb +10 -10
  41. data/lib/rr/without_autohook.rb +7 -14
  42. data/rr.gemspec +8 -3
  43. data/spec/defines_spec_suite_tasks.rb +12 -0
  44. data/spec/global_helper.rb +5 -0
  45. data/spec/spec_suite_configuration.rb +1 -7
  46. data/spec/suites.yml +0 -14
  47. data/spec/suites/rspec_2/functional/any_instance_of_spec.rb +133 -33
  48. data/spec/suites/rspec_2/functional/dont_allow_spec.rb +13 -8
  49. data/spec/suites/rspec_2/functional/mock_bang_spec.rb +20 -0
  50. data/spec/suites/rspec_2/functional/mock_instance_of_spec.rb +14 -0
  51. data/spec/suites/rspec_2/functional/mock_instance_of_strong_spec.rb +15 -0
  52. data/spec/suites/rspec_2/functional/mock_proxy_instance_of_spec.rb +15 -0
  53. data/spec/suites/rspec_2/functional/mock_proxy_spec.rb +14 -0
  54. data/spec/suites/rspec_2/functional/mock_spec.rb +8 -232
  55. data/spec/suites/rspec_2/functional/mock_strong_spec.rb +14 -0
  56. data/spec/suites/rspec_2/functional/received_spec.rb +16 -0
  57. data/spec/suites/rspec_2/functional/spy_spec.rb +89 -28
  58. data/spec/suites/rspec_2/functional/stub_bang_spec.rb +20 -0
  59. data/spec/suites/rspec_2/functional/stub_instance_of_spec.rb +15 -0
  60. data/spec/suites/rspec_2/functional/stub_instance_of_strong_spec.rb +15 -0
  61. data/spec/suites/rspec_2/functional/stub_proxy_instance_of_spec.rb +16 -0
  62. data/spec/suites/rspec_2/functional/stub_proxy_spec.rb +45 -0
  63. data/spec/suites/rspec_2/functional/stub_spec.rb +42 -161
  64. data/spec/suites/rspec_2/functional/stub_strong_spec.rb +15 -0
  65. data/spec/suites/rspec_2/helper.rb +2 -2
  66. data/spec/suites/rspec_2/support/mixins/double_definition_creator_helpers.rb +173 -0
  67. data/spec/suites/rspec_2/support/mixins/mock_definition_creator_helpers.rb +45 -0
  68. data/spec/suites/rspec_2/support/mixins/proxy_definition_creator_helpers.rb +33 -0
  69. data/spec/suites/rspec_2/support/mixins/stub_creator_helpers.rb +43 -0
  70. data/spec/suites/rspec_2/support/mixins/stub_definition_creator_helpers.rb +45 -0
  71. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/argument_expectations_with_never_called_qualifier.rb +39 -0
  72. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/argument_expectations_with_times_called_qualifier.rb +50 -0
  73. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/argument_expectations_without_qualifiers.rb +131 -0
  74. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/dont_allow.rb +148 -0
  75. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mock_instance_of.rb +26 -0
  76. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mock_instance_of_strong.rb +28 -0
  77. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mock_proxy.rb +11 -0
  78. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mock_strong.rb +37 -0
  79. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mocking.rb +107 -0
  80. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stub_instance_of.rb +32 -0
  81. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stub_instance_of_strong.rb +39 -0
  82. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stub_proxy.rb +11 -0
  83. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stub_strong.rb +37 -0
  84. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stubbing.rb +57 -0
  85. data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/array_flatten_bug.rb +35 -0
  86. data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/block_form.rb +31 -0
  87. data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/comparing_arity.rb +63 -0
  88. data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/object_is_proxy.rb +43 -0
  89. data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/sequential_invocations.rb +26 -0
  90. data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/setting_implementation.rb +51 -0
  91. data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/yields.rb +81 -0
  92. data/spec/suites/rspec_2/unit/core_ext/enumerable_spec.rb +0 -28
  93. data/spec/suites/rspec_2/unit/deprecations_spec.rb +27 -0
  94. data/spec/suites/rspec_2/unit/double_definitions/double_definition_create_spec.rb +18 -18
  95. data/spec/suites/rspec_2/unit/dsl/double_creators_spec.rb +133 -0
  96. data/spec/suites/rspec_2/unit/dsl/space_spec.rb +99 -0
  97. data/spec/suites/rspec_2/unit/dsl/wildcard_matchers_spec.rb +67 -0
  98. data/spec/suites/rspec_2/unit/expectations/any_argument_expectation_spec.rb +9 -9
  99. data/spec/suites/rspec_2/unit/expectations/argument_equality_expectation_spec.rb +21 -21
  100. data/spec/suites/rspec_2/unit/expectations/boolean_argument_equality_expectation_spec.rb +4 -4
  101. data/spec/suites/rspec_2/unit/expectations/hash_including_argument_equality_expectation_spec.rb +31 -21
  102. data/spec/suites/rspec_2/unit/injections/double_injection/double_injection_spec.rb +0 -12
  103. data/spec/suites/rspec_2/unit/integrations/rspec_spec.rb +4 -19
  104. data/spec/suites/rspec_2/unit/space_spec.rb +7 -4
  105. data/spec/suites/rspec_2/unit/spy_verification_spec.rb +1 -1
  106. data/spec/support/adapter.rb +1 -1
  107. data/spec/support/adapter_tests/rspec.rb +19 -15
  108. data/spec/support/project/generator.rb +0 -4
  109. metadata +112 -57
  110. data/gemfiles/ruby_18_rspec_1.gemfile +0 -14
  111. data/gemfiles/ruby_18_rspec_1.gemfile.lock +0 -38
  112. data/gemfiles/ruby_18_rspec_1_rails_2.gemfile +0 -18
  113. data/gemfiles/ruby_18_rspec_1_rails_2.gemfile.lock +0 -64
  114. data/gemfiles/ruby_19_rspec_2_rails_3.gemfile +0 -15
  115. data/gemfiles/ruby_19_rspec_2_rails_3.gemfile.lock +0 -123
  116. data/lib/rr/adapters.rb +0 -34
  117. data/lib/rr/adapters/rr_methods.rb +0 -142
  118. data/lib/rr/integrations/rspec_1.rb +0 -46
  119. data/lib/rr/integrations/test_unit_1.rb +0 -63
  120. data/lib/rr/integrations/test_unit_2.rb +0 -17
  121. data/lib/rr/integrations/test_unit_200.rb +0 -27
  122. data/lib/rr/integrations/test_unit_200_active_support.rb +0 -25
  123. data/lib/rr/integrations/test_unit_2_active_support.rb +0 -38
  124. data/lib/rr/proc_from_block.rb +0 -11
  125. data/spec/suites/rspec_1/helper.rb +0 -24
  126. data/spec/suites/rspec_1/integration/rspec_1_spec.rb +0 -93
  127. data/spec/suites/rspec_1/integration/test_unit_1_spec.rb +0 -102
  128. data/spec/suites/rspec_1/integration/test_unit_2_spec.rb +0 -109
  129. data/spec/suites/rspec_1/spec_helper.rb +0 -3
  130. data/spec/suites/rspec_1_rails_2/integration/astc_rails_2_spec.rb +0 -141
  131. data/spec/suites/rspec_1_rails_2/integration/rspec_1_rails_2_spec.rb +0 -132
  132. data/spec/suites/rspec_1_rails_2/integration/test_unit_1_rails_2_spec.rb +0 -141
  133. data/spec/suites/rspec_1_rails_2/integration/test_unit_2_rails_2_spec.rb +0 -148
  134. data/spec/suites/rspec_1_rails_2/spec_helper.rb +0 -3
  135. data/spec/suites/rspec_2/functional/dsl_spec.rb +0 -13
  136. data/spec/suites/rspec_2/functional/instance_of_spec.rb +0 -14
  137. data/spec/suites/rspec_2/functional/proxy_spec.rb +0 -136
  138. data/spec/suites/rspec_2/functional/strong_spec.rb +0 -79
  139. data/spec/suites/rspec_2/integration/rspec_2_spec.rb +0 -133
  140. data/spec/suites/rspec_2/integration/test_unit_200_spec.rb +0 -102
  141. data/spec/suites/rspec_2/integration/test_unit_2_spec.rb +0 -109
  142. data/spec/suites/rspec_2/unit/adapters/rr_methods/double_creators_spec.rb +0 -135
  143. data/spec/suites/rspec_2/unit/adapters/rr_methods/space_spec.rb +0 -101
  144. data/spec/suites/rspec_2/unit/adapters/rr_methods/wildcard_matchers_spec.rb +0 -69
  145. data/spec/suites/rspec_2/unit/proc_from_block_spec.rb +0 -14
  146. data/spec/suites/rspec_2_rails_3/integration/astc_rails_3_spec.rb +0 -141
  147. data/spec/suites/rspec_2_rails_3/integration/minitest_4_rails_3_spec.rb +0 -148
  148. data/spec/suites/rspec_2_rails_3/integration/rspec_2_rails_3_spec.rb +0 -172
  149. data/spec/suites/rspec_2_rails_3/integration/test_unit_200_rails_3_spec.rb +0 -141
  150. data/spec/suites/rspec_2_rails_3/integration/test_unit_2_rails_3_spec.rb +0 -148
  151. data/spec/suites/rspec_2_rails_3/spec_helper.rb +0 -3
  152. data/spec/suites/rspec_2_rails_4/integration/astc_rails_4_spec.rb +0 -142
  153. data/spec/suites/rspec_2_rails_4/integration/minitest_4_rails_4_spec.rb +0 -149
  154. data/spec/suites/rspec_2_rails_4/integration/rspec_2_rails_4_spec.rb +0 -173
  155. data/spec/suites/rspec_2_rails_4/integration/test_unit_200_rails_4_spec.rb +0 -142
  156. data/spec/suites/rspec_2_rails_4/integration/test_unit_2_rails_4_spec.rb +0 -149
  157. data/spec/suites/rspec_2_rails_4/spec_helper.rb +0 -3
@@ -1,136 +0,0 @@
1
- require File.expand_path('../../spec_helper', __FILE__)
2
-
3
- describe '#proxy' do
4
- subject { Object.new }
5
-
6
- it "proxies via inline call" do
7
- expected_to_s_value = subject.to_s
8
- mock.proxy(subject).to_s
9
- expect(subject.to_s).to eq expected_to_s_value
10
- expect { subject.to_s }.to raise_error
11
- RR.reset
12
- end
13
-
14
- it "proxy allows ordering" do
15
- def subject.to_s(arg)
16
- "Original to_s with arg #{arg}"
17
- end
18
- mock.proxy(subject).to_s(:foo).ordered
19
- mock.proxy(subject).to_s(:bar).twice.ordered
20
-
21
- expect(subject.to_s(:foo)).to eq "Original to_s with arg foo"
22
- expect(subject.to_s(:bar)).to eq "Original to_s with arg bar"
23
- expect(subject.to_s(:bar)).to eq "Original to_s with arg bar"
24
- expect { subject.to_s(:bar) }.to raise_error(RR::Errors::TimesCalledError)
25
-
26
- RR.reset
27
- end
28
-
29
- it "proxy allows ordering" do
30
- def subject.to_s(arg)
31
- "Original to_s with arg #{arg}"
32
- end
33
- mock.proxy(subject).to_s(:foo).ordered
34
- mock.proxy(subject).to_s(:bar).twice.ordered
35
-
36
- expect(subject.to_s(:foo)).to eq "Original to_s with arg foo"
37
- expect(subject.to_s(:bar)).to eq "Original to_s with arg bar"
38
- expect(subject.to_s(:bar)).to eq "Original to_s with arg bar"
39
- expect { subject.to_s(:bar) }.to raise_error(RR::Errors::TimesCalledError)
40
-
41
- RR.reset
42
- end
43
-
44
- it "proxies via block with argument" do
45
- def subject.foobar_1(*args)
46
- :original_value_1
47
- end
48
-
49
- def subject.foobar_2
50
- :original_value_2
51
- end
52
-
53
- mock.proxy subject do |c|
54
- c.foobar_1(1)
55
- c.foobar_2
56
- end
57
- expect(subject.foobar_1(1)).to eq :original_value_1
58
- expect { subject.foobar_1(:blah) }.to raise_error
59
-
60
- expect(subject.foobar_2).to eq :original_value_2
61
- expect { subject.foobar_2(:blah) }.to raise_error
62
-
63
- RR.reset
64
- end
65
-
66
- it "proxies via block without argument" do
67
- def subject.foobar_1(*args)
68
- :original_value_1
69
- end
70
-
71
- def subject.foobar_2
72
- :original_value_2
73
- end
74
-
75
- mock.proxy subject do
76
- foobar_1(1)
77
- foobar_2
78
- end
79
- expect(subject.foobar_1(1)).to eq :original_value_1
80
- expect { subject.foobar_1(:blah) }.to raise_error
81
-
82
- expect(subject.foobar_2).to eq :original_value_2
83
- expect { subject.foobar_2(:blah) }.to raise_error
84
-
85
- RR.reset
86
- end
87
-
88
- # bug #44
89
- describe 'when wrapped in an array that is then flattened' do
90
- subject {
91
- Object.new.tap do |o|
92
- def o.foo; end
93
- end
94
- }
95
-
96
- context 'when the method being mocked is not defined' do
97
- it "does not raise an error" do
98
- mock.proxy(subject).foo
99
- subject.foo
100
- expect([subject].flatten).to eq [subject]
101
- end
102
-
103
- it "honors a #to_ary that already exists" do
104
- subject.instance_eval do
105
- def to_ary; []; end
106
- end
107
- mock.proxy(subject).foo
108
- subject.foo
109
- expect([subject].flatten).to eq []
110
- end
111
- end
112
-
113
- context 'when the method being mocked is defined' do
114
- before do
115
- subject.instance_eval do
116
- def foo; end
117
- end
118
- end
119
-
120
- it "does not raise an error" do
121
- mock.proxy(subject).foo
122
- subject.foo
123
- expect([subject].flatten).to eq [subject]
124
- end
125
-
126
- it "honors a #to_ary that already exists" do
127
- eigen(subject).class_eval do
128
- def to_ary; []; end
129
- end
130
- mock.proxy(subject).foo
131
- subject.foo
132
- expect([subject].flatten).to eq []
133
- end
134
- end
135
- end
136
- end
@@ -1,79 +0,0 @@
1
- require File.expand_path('../../spec_helper', __FILE__)
2
-
3
- class StrongSpecFixture
4
- def method_with_no_arguments
5
- end
6
-
7
- def method_with_one_argument(string)
8
- end
9
-
10
- def method_with_two_arguments(string, integer)
11
- end
12
-
13
- def method_with_three_arguments_including_varargs(string, integer, *args)
14
- end
15
-
16
- def method_with_varargs(*args)
17
- end
18
- end
19
-
20
- describe '#strong' do
21
- subject { Object.new }
22
-
23
- context "when the method does not exist" do
24
- it "raises an exception" do
25
- expect {
26
- strong.stub(StrongSpecFixture.new).something
27
- }.to raise_error(RR::Errors::SubjectDoesNotImplementMethodError)
28
- end
29
- end
30
-
31
- context "when the method exists with no arguments" do
32
- it "does not raise an exception" do
33
- strong.stub(StrongSpecFixture.new).method_with_no_arguments
34
- end
35
- end
36
-
37
- context "when the method has a different arity" do
38
- it "raises an exception" do
39
- expect {
40
- strong.stub(StrongSpecFixture.new).method_with_one_argument
41
- }.to raise_error(RR::Errors::SubjectHasDifferentArityError)
42
- end
43
- end
44
-
45
- context "when the method has accepts a variable number of arguments" do
46
- it "does not raise an exception" do
47
- strong.stub(StrongSpecFixture.new).method_with_varargs
48
- end
49
- end
50
-
51
- context "when the method does not provide the required parameters before varargs" do
52
- it "raises an exception" do
53
- expect {
54
- strong.stub(StrongSpecFixture.new).method_with_three_arguments_including_varargs
55
- }.to raise_error(RR::Errors::SubjectHasDifferentArityError)
56
- end
57
- end
58
-
59
- context "when the minimum number of parameters are provided" do
60
- it "does not raise an exception" do
61
- strong.stub(StrongSpecFixture.new).method_with_three_arguments_including_varargs("one", 2)
62
- end
63
- end
64
-
65
- context "when using instance_of and the method does not exist" do
66
- it "raises an exception" do
67
- expect {
68
- strong.stub.instance_of(StrongSpecFixture).something
69
- StrongSpecFixture.new
70
- }.to raise_error(RR::Errors::SubjectDoesNotImplementMethodError)
71
- end
72
- end
73
-
74
- context "when using instance_of and the method does exist" do
75
- it "does not raise an exception" do
76
- strong.stub.instance_of(StrongSpecFixture).method_with_no_arguments
77
- end
78
- end
79
- end
@@ -1,133 +0,0 @@
1
- require File.expand_path('../../spec_helper', __FILE__)
2
-
3
- describe 'Integration with RSpec 2' 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 = 2
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
- RSpec.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
- [:RSpec2]
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
- [:RSpec2]
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
-
93
- specify "it is still possible to use a custom RSpec-2 adapter" do
94
- project = generate_project do |project|
95
- project.add_to_prelude <<-EOT
96
- module RR
97
- module Adapters
98
- module RSpec2
99
- include RRMethods
100
-
101
- def setup_mocks_for_rspec
102
- RR.reset
103
- end
104
-
105
- def verify_mocks_for_rspec
106
- RR.verify
107
- end
108
-
109
- def teardown_mocks_for_rspec
110
- RR.reset
111
- end
112
-
113
- def have_received(method = nil)
114
- RR::Adapters::Rspec::InvocationMatcher.new(method)
115
- end
116
- end
117
- end
118
- end
119
-
120
- RSpec.configure do |c|
121
- c.mock_with RR::Adapters::RSpec2
122
- end
123
- EOT
124
- end
125
- project.add_test_file do |file|
126
- file.add_test_case_with_adapter_tests
127
- end
128
- result = project.run_tests
129
- result.should be_success
130
- result.should_not have_errors_or_failures
131
- end
132
- end
133
- end
@@ -1,102 +0,0 @@
1
- require File.expand_path('../../spec_helper', __FILE__)
2
-
3
- describe 'Integration with Test::Unit 2.0.0' do
4
- include IntegrationTests::RubyTestUnit
5
-
6
- def self.including_the_adapter_manually_works
7
- specify "including the adapter manually works" do
8
- project = generate_project do |project|
9
- project.add_to_prelude <<-EOT
10
- class Test::Unit::TestCase
11
- include RR::Adapters::TestUnit
12
- end
13
- EOT
14
- end
15
- project.add_test_file do |file|
16
- file.add_working_test_case_with_adapter_tests do |test_case|
17
- test_case.add_to_body <<-EOT
18
- def test_the_correct_adapters_are_loaded
19
- assert_adapters_loaded #{adapters_that_should_be_loaded.inspect}
20
- end
21
- EOT
22
- end
23
- end
24
- result = project.run_tests
25
- result.should be_success
26
- result.should_not have_errors_or_failures
27
- end
28
- end
29
-
30
- def self.rr_hooks_into_the_test_framework_automatically
31
- specify "RR hooks into the test framework automatically" do
32
- project = generate_project
33
- project.add_test_file do |file|
34
- file.add_working_test_case
35
- end
36
- result = project.run_tests
37
- result.should be_success
38
- result.should_not have_errors_or_failures
39
- end
40
- end
41
-
42
- context 'when Bundler is autorequiring RR' do
43
- def configure_project_generator(project_generator)
44
- super
45
- project_generator.configure do |project|
46
- project.autorequire_gems = true
47
- end
48
- end
49
-
50
- def adapters_that_should_be_loaded
51
- [:TestUnit200]
52
- end
53
-
54
- including_the_adapter_manually_works
55
- end
56
-
57
- context 'when RR is being required manually' do
58
- def configure_project_generator(project_generator)
59
- super
60
- project_generator.configure do |project|
61
- project.autorequire_gems = false
62
- end
63
- end
64
-
65
- def adapters_that_should_be_loaded
66
- [:TestUnit200]
67
- end
68
-
69
- rr_hooks_into_the_test_framework_automatically
70
- including_the_adapter_manually_works
71
-
72
- specify "when RR raises an error it raises a failure not an exception" do
73
- project = generate_project
74
- project.add_test_file do |file|
75
- file.add_test_case do |test_case|
76
- test_case.add_test <<-EOT
77
- object = Object.new
78
- mock(object).foo
79
- EOT
80
- end
81
- end
82
- result = project.run_tests
83
- result.should fail_with_output(/1 failure/)
84
- end
85
-
86
- specify "throwing an error in teardown doesn't mess things up" do
87
- project = generate_project
88
- project.add_test_file do |file|
89
- file.add_test_case do |test_case|
90
- test_case.add_to_body <<-EOT
91
- def teardown
92
- raise 'hell'
93
- end
94
- EOT
95
- test_case.add_test("") # doesn't matter
96
- end
97
- end
98
- result = project.run_tests
99
- result.should fail_with_output(/1 error/)
100
- end
101
- end
102
- end