mocha 1.11.2 → 1.12.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.
Files changed (200) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +1 -1
  3. data/README.md +28 -30
  4. data/RELEASE.md +25 -0
  5. data/Rakefile +6 -1
  6. data/lib/mocha/cardinality.rb +30 -27
  7. data/lib/mocha/expectation.rb +24 -24
  8. data/lib/mocha/mock.rb +1 -1
  9. data/lib/mocha/mockery.rb +9 -22
  10. data/lib/mocha/state_machine.rb +30 -38
  11. data/lib/mocha/version.rb +1 -1
  12. data/mocha.gemspec +3 -1
  13. metadata +5 -192
  14. data/docs/CNAME +0 -1
  15. data/docs/Mocha.html +0 -254
  16. data/docs/Mocha/API.html +0 -1285
  17. data/docs/Mocha/ClassMethods.html +0 -264
  18. data/docs/Mocha/Configuration.html +0 -1525
  19. data/docs/Mocha/Expectation.html +0 -2862
  20. data/docs/Mocha/ExpectationError.html +0 -152
  21. data/docs/Mocha/ExpectationErrorFactory.html +0 -260
  22. data/docs/Mocha/Hooks.html +0 -370
  23. data/docs/Mocha/Integration.html +0 -125
  24. data/docs/Mocha/Integration/MiniTest.html +0 -123
  25. data/docs/Mocha/Integration/MiniTest/Adapter.html +0 -164
  26. data/docs/Mocha/Integration/TestUnit.html +0 -123
  27. data/docs/Mocha/Integration/TestUnit/Adapter.html +0 -164
  28. data/docs/Mocha/Mock.html +0 -1210
  29. data/docs/Mocha/ObjectMethods.html +0 -765
  30. data/docs/Mocha/ParameterMatchers.html +0 -2949
  31. data/docs/Mocha/ParameterMatchers/AllOf.html +0 -153
  32. data/docs/Mocha/ParameterMatchers/AnyOf.html +0 -153
  33. data/docs/Mocha/ParameterMatchers/AnyParameters.html +0 -153
  34. data/docs/Mocha/ParameterMatchers/Anything.html +0 -153
  35. data/docs/Mocha/ParameterMatchers/Base.html +0 -441
  36. data/docs/Mocha/ParameterMatchers/Equals.html +0 -153
  37. data/docs/Mocha/ParameterMatchers/EquivalentUri.html +0 -153
  38. data/docs/Mocha/ParameterMatchers/HasEntries.html +0 -153
  39. data/docs/Mocha/ParameterMatchers/HasEntry.html +0 -153
  40. data/docs/Mocha/ParameterMatchers/HasKey.html +0 -153
  41. data/docs/Mocha/ParameterMatchers/HasValue.html +0 -153
  42. data/docs/Mocha/ParameterMatchers/Includes.html +0 -153
  43. data/docs/Mocha/ParameterMatchers/InstanceOf.html +0 -153
  44. data/docs/Mocha/ParameterMatchers/IsA.html +0 -153
  45. data/docs/Mocha/ParameterMatchers/KindOf.html +0 -153
  46. data/docs/Mocha/ParameterMatchers/Not.html +0 -153
  47. data/docs/Mocha/ParameterMatchers/Optionally.html +0 -153
  48. data/docs/Mocha/ParameterMatchers/RegexpMatches.html +0 -153
  49. data/docs/Mocha/ParameterMatchers/RespondsWith.html +0 -153
  50. data/docs/Mocha/ParameterMatchers/YamlEquivalent.html +0 -153
  51. data/docs/Mocha/Sequence.html +0 -149
  52. data/docs/Mocha/StateMachine.html +0 -527
  53. data/docs/Mocha/StateMachine/State.html +0 -140
  54. data/docs/Mocha/StateMachine/StatePredicate.html +0 -140
  55. data/docs/Mocha/StubbingError.html +0 -150
  56. data/docs/_index.html +0 -519
  57. data/docs/class_list.html +0 -51
  58. data/docs/css/common.css +0 -1
  59. data/docs/css/full_list.css +0 -58
  60. data/docs/css/style.css +0 -496
  61. data/docs/file.COPYING.html +0 -81
  62. data/docs/file.MIT-LICENSE.html +0 -85
  63. data/docs/file.README.html +0 -448
  64. data/docs/file.RELEASE.html +0 -1028
  65. data/docs/file_list.html +0 -71
  66. data/docs/frames.html +0 -17
  67. data/docs/index.html +0 -448
  68. data/docs/js/app.js +0 -303
  69. data/docs/js/full_list.js +0 -216
  70. data/docs/js/jquery.js +0 -4
  71. data/docs/method_list.html +0 -651
  72. data/docs/top-level-namespace.html +0 -118
  73. data/test/acceptance/acceptance_test_helper.rb +0 -42
  74. data/test/acceptance/bug_18914_test.rb +0 -37
  75. data/test/acceptance/bug_21465_test.rb +0 -31
  76. data/test/acceptance/bug_21563_test.rb +0 -22
  77. data/test/acceptance/display_matching_invocations_alongside_expectations_test.rb +0 -69
  78. data/test/acceptance/exception_rescue_test.rb +0 -53
  79. data/test/acceptance/expectations_on_multiple_methods_test.rb +0 -55
  80. data/test/acceptance/expected_invocation_count_test.rb +0 -229
  81. data/test/acceptance/failure_messages_test.rb +0 -77
  82. data/test/acceptance/issue_272_test.rb +0 -50
  83. data/test/acceptance/issue_457_test.rb +0 -31
  84. data/test/acceptance/issue_65_test.rb +0 -64
  85. data/test/acceptance/issue_70_test.rb +0 -53
  86. data/test/acceptance/mocha_example_test.rb +0 -106
  87. data/test/acceptance/mocha_test_result_test.rb +0 -83
  88. data/test/acceptance/mock_built_with_first_argument_type_being_string_test.rb +0 -98
  89. data/test/acceptance/mock_test.rb +0 -191
  90. data/test/acceptance/mocked_methods_dispatch_test.rb +0 -75
  91. data/test/acceptance/multiple_expectations_failure_message_test.rb +0 -66
  92. data/test/acceptance/multiple_yielding_test.rb +0 -59
  93. data/test/acceptance/optional_parameters_test.rb +0 -67
  94. data/test/acceptance/parameter_matcher_test.rb +0 -299
  95. data/test/acceptance/partial_mocks_test.rb +0 -44
  96. data/test/acceptance/prepend_test.rb +0 -86
  97. data/test/acceptance/prevent_use_of_mocha_outside_test_test.rb +0 -76
  98. data/test/acceptance/raise_exception_test.rb +0 -36
  99. data/test/acceptance/return_value_test.rb +0 -49
  100. data/test/acceptance/sequence_test.rb +0 -189
  101. data/test/acceptance/states_test.rb +0 -71
  102. data/test/acceptance/stub_any_instance_method_defined_on_superclass_test.rb +0 -64
  103. data/test/acceptance/stub_any_instance_method_test.rb +0 -301
  104. data/test/acceptance/stub_class_method_defined_on_active_record_association_proxy_test.rb +0 -105
  105. data/test/acceptance/stub_class_method_defined_on_class_test.rb +0 -78
  106. data/test/acceptance/stub_class_method_defined_on_module_test.rb +0 -73
  107. data/test/acceptance/stub_class_method_defined_on_superclass_test.rb +0 -144
  108. data/test/acceptance/stub_everything_test.rb +0 -53
  109. data/test/acceptance/stub_instance_method_defined_on_active_record_association_proxy_test.rb +0 -91
  110. data/test/acceptance/stub_instance_method_defined_on_class_and_aliased_test.rb +0 -67
  111. data/test/acceptance/stub_instance_method_defined_on_class_test.rb +0 -67
  112. data/test/acceptance/stub_instance_method_defined_on_kernel_module_test.rb +0 -136
  113. data/test/acceptance/stub_instance_method_defined_on_module_test.rb +0 -76
  114. data/test/acceptance/stub_instance_method_defined_on_object_class_test.rb +0 -75
  115. data/test/acceptance/stub_instance_method_defined_on_singleton_class_test.rb +0 -67
  116. data/test/acceptance/stub_instance_method_defined_on_superclass_test.rb +0 -70
  117. data/test/acceptance/stub_method_defined_on_module_and_aliased_test.rb +0 -38
  118. data/test/acceptance/stub_module_method_test.rb +0 -200
  119. data/test/acceptance/stub_test.rb +0 -49
  120. data/test/acceptance/stubba_example_test.rb +0 -103
  121. data/test/acceptance/stubba_test_result_test.rb +0 -71
  122. data/test/acceptance/stubbing_error_backtrace_test.rb +0 -63
  123. data/test/acceptance/stubbing_frozen_object_test.rb +0 -88
  124. data/test/acceptance/stubbing_method_accepting_block_parameter_test.rb +0 -52
  125. data/test/acceptance/stubbing_method_unnecessarily_test.rb +0 -63
  126. data/test/acceptance/stubbing_nil_test.rb +0 -60
  127. data/test/acceptance/stubbing_non_existent_any_instance_method_test.rb +0 -157
  128. data/test/acceptance/stubbing_non_existent_class_method_test.rb +0 -157
  129. data/test/acceptance/stubbing_non_existent_instance_method_test.rb +0 -145
  130. data/test/acceptance/stubbing_non_public_any_instance_method_test.rb +0 -128
  131. data/test/acceptance/stubbing_non_public_class_method_test.rb +0 -163
  132. data/test/acceptance/stubbing_non_public_instance_method_test.rb +0 -141
  133. data/test/acceptance/stubbing_on_non_mock_object_test.rb +0 -70
  134. data/test/acceptance/stubbing_same_class_method_on_parent_and_child_classes_test.rb +0 -33
  135. data/test/acceptance/throw_test.rb +0 -42
  136. data/test/acceptance/unexpected_invocation_test.rb +0 -23
  137. data/test/acceptance/unstubbing_test.rb +0 -194
  138. data/test/acceptance/yielding_test.rb +0 -80
  139. data/test/assertions.rb +0 -8
  140. data/test/deprecation_disabler.rb +0 -15
  141. data/test/execution_point.rb +0 -36
  142. data/test/integration/mini_test_test.rb +0 -8
  143. data/test/integration/shared_tests.rb +0 -178
  144. data/test/integration/test_unit_test.rb +0 -8
  145. data/test/method_definer.rb +0 -16
  146. data/test/mini_test_result.rb +0 -96
  147. data/test/minitest_result.rb +0 -48
  148. data/test/simple_counter.rb +0 -11
  149. data/test/test_helper.rb +0 -58
  150. data/test/test_runner.rb +0 -58
  151. data/test/test_unit_result.rb +0 -22
  152. data/test/unit/any_instance_method_test.rb +0 -175
  153. data/test/unit/array_inspect_test.rb +0 -14
  154. data/test/unit/backtrace_filter_test.rb +0 -17
  155. data/test/unit/cardinality_test.rb +0 -72
  156. data/test/unit/central_test.rb +0 -98
  157. data/test/unit/change_state_side_effect_test.rb +0 -37
  158. data/test/unit/class_methods_test.rb +0 -69
  159. data/test/unit/configuration_test.rb +0 -37
  160. data/test/unit/date_time_inspect_test.rb +0 -19
  161. data/test/unit/exception_raiser_test.rb +0 -45
  162. data/test/unit/expectation_list_test.rb +0 -82
  163. data/test/unit/expectation_test.rb +0 -504
  164. data/test/unit/hash_inspect_test.rb +0 -14
  165. data/test/unit/hooks_test.rb +0 -35
  166. data/test/unit/in_state_ordering_constraint_test.rb +0 -39
  167. data/test/unit/instance_method_test.rb +0 -282
  168. data/test/unit/method_matcher_test.rb +0 -26
  169. data/test/unit/mock_test.rb +0 -372
  170. data/test/unit/mockery_test.rb +0 -171
  171. data/test/unit/module_methods_test.rb +0 -16
  172. data/test/unit/object_inspect_test.rb +0 -60
  173. data/test/unit/object_methods_test.rb +0 -63
  174. data/test/unit/parameter_matchers/all_of_test.rb +0 -24
  175. data/test/unit/parameter_matchers/any_of_test.rb +0 -24
  176. data/test/unit/parameter_matchers/anything_test.rb +0 -19
  177. data/test/unit/parameter_matchers/equals_test.rb +0 -23
  178. data/test/unit/parameter_matchers/equivalent_uri_test.rb +0 -41
  179. data/test/unit/parameter_matchers/has_entries_test.rb +0 -51
  180. data/test/unit/parameter_matchers/has_entry_test.rb +0 -128
  181. data/test/unit/parameter_matchers/has_key_test.rb +0 -54
  182. data/test/unit/parameter_matchers/has_value_test.rb +0 -55
  183. data/test/unit/parameter_matchers/includes_test.rb +0 -106
  184. data/test/unit/parameter_matchers/instance_of_test.rb +0 -23
  185. data/test/unit/parameter_matchers/is_a_test.rb +0 -23
  186. data/test/unit/parameter_matchers/kind_of_test.rb +0 -23
  187. data/test/unit/parameter_matchers/not_test.rb +0 -24
  188. data/test/unit/parameter_matchers/regexp_matches_test.rb +0 -45
  189. data/test/unit/parameter_matchers/responds_with_test.rb +0 -38
  190. data/test/unit/parameter_matchers/stub_matcher.rb +0 -23
  191. data/test/unit/parameter_matchers/yaml_equivalent_test.rb +0 -23
  192. data/test/unit/parameters_matcher_test.rb +0 -119
  193. data/test/unit/receivers_test.rb +0 -96
  194. data/test/unit/return_values_test.rb +0 -66
  195. data/test/unit/sequence_test.rb +0 -100
  196. data/test/unit/single_return_value_test.rb +0 -17
  197. data/test/unit/state_machine_test.rb +0 -96
  198. data/test/unit/string_inspect_test.rb +0 -9
  199. data/test/unit/thrower_test.rb +0 -23
  200. data/test/unit/yield_parameters_test.rb +0 -73
@@ -1,8 +0,0 @@
1
- require 'mocha/ruby_version'
2
-
3
- module Assertions
4
- def assert_method_visibility(object, method_name, visiblity)
5
- method_key = Mocha::PRE_RUBY_V19 ? method_name.to_s : method_name.to_sym
6
- assert object.send("#{visiblity}_methods").include?(method_key), "#{method_name} is not #{visiblity}"
7
- end
8
- end
@@ -1,15 +0,0 @@
1
- require 'mocha/deprecation'
2
-
3
- module DeprecationDisabler
4
- def disable_deprecations
5
- original_mode = Mocha::Deprecation.mode
6
- Mocha::Deprecation.mode = :disabled
7
- begin
8
- yield
9
- ensure
10
- Mocha::Deprecation.mode = original_mode
11
- end
12
- end
13
-
14
- module_function :disable_deprecations
15
- end
@@ -1,36 +0,0 @@
1
- class ExecutionPoint
2
- attr_reader :backtrace
3
-
4
- def self.current
5
- new(caller)
6
- end
7
-
8
- def initialize(backtrace)
9
- @backtrace = backtrace
10
- end
11
-
12
- def first_relevant_line_of_backtrace
13
- @backtrace && (@backtrace.reject { |l| %r{\Aorg/jruby/}.match(l) }.first || 'unknown:0')
14
- end
15
-
16
- def file_name
17
- /\A(.*?):\d+/.match(first_relevant_line_of_backtrace)[1]
18
- end
19
-
20
- def line_number
21
- Integer(/\A.*?:(\d+)/.match(first_relevant_line_of_backtrace)[1])
22
- end
23
-
24
- def ==(other)
25
- return false unless other.is_a?(ExecutionPoint)
26
- (file_name == other.file_name) && (line_number == other.line_number)
27
- end
28
-
29
- def to_s
30
- "file: #{file_name}; line: #{line_number}"
31
- end
32
-
33
- def inspect
34
- to_s
35
- end
36
- end
@@ -1,8 +0,0 @@
1
- require File.expand_path('../../test_helper', __FILE__)
2
-
3
- require 'mocha/minitest'
4
- require 'integration/shared_tests'
5
-
6
- class MiniTestTest < Mocha::TestCase
7
- include SharedTests
8
- end
@@ -1,178 +0,0 @@
1
- require 'test_runner'
2
- require 'execution_point'
3
-
4
- # rubocop:disable Metrics/ModuleLength
5
- module SharedTests
6
- include TestRunner
7
-
8
- def test_assertion_satisfied
9
- test_result = run_as_test do
10
- assert true
11
- end
12
- assert_passed(test_result)
13
- end
14
-
15
- # rubocop:disable Style/Semicolon
16
- def test_assertion_unsatisfied
17
- execution_point = nil
18
- test_result = run_as_test do
19
- execution_point = ExecutionPoint.current; flunk
20
- end
21
- assert_failed(test_result)
22
- failure = test_result.failures.first
23
- assert_equal execution_point, ExecutionPoint.new(failure.location)
24
- end
25
-
26
- def test_mock_object_unexpected_invocation
27
- execution_point = nil
28
- test_result = run_as_test do
29
- mock = mock('not expecting invocation')
30
- execution_point = ExecutionPoint.current; mock.unexpected
31
- end
32
- assert_failed(test_result)
33
- failure = test_result.failures.first
34
- assert_equal execution_point, ExecutionPoint.new(failure.location)
35
- assert_equal ['unexpected invocation: #<Mock:not expecting invocation>.unexpected()'], test_result.failure_message_lines
36
- end
37
-
38
- def test_mock_object_explicitly_unexpected_invocation
39
- execution_point = nil
40
- test_result = run_as_test do
41
- mock = mock('not expecting invocation')
42
- mock.expects(:unexpected).never
43
- execution_point = ExecutionPoint.current; mock.unexpected
44
- end
45
- assert_failed(test_result)
46
- failure = test_result.failures.first
47
- assert_equal execution_point, ExecutionPoint.new(failure.location)
48
- assert_equal [
49
- 'unexpected invocation: #<Mock:not expecting invocation>.unexpected()',
50
- 'unsatisfied expectations:',
51
- '- expected never, invoked once: #<Mock:not expecting invocation>.unexpected(any_parameters)'
52
- ], test_result.failure_message_lines
53
- end
54
-
55
- def test_mock_object_unsatisfied_expectation
56
- execution_point = nil
57
- test_result = run_as_test do
58
- mock = mock('expecting invocation')
59
- execution_point = ExecutionPoint.current; mock.expects(:expected)
60
- end
61
- assert_failed(test_result)
62
- failure = test_result.failures.first
63
- assert_equal execution_point, ExecutionPoint.new(failure.location)
64
- assert_equal [
65
- 'not all expectations were satisfied',
66
- 'unsatisfied expectations:',
67
- '- expected exactly once, invoked never: #<Mock:expecting invocation>.expected(any_parameters)'
68
- ], test_result.failure_message_lines
69
- end
70
-
71
- def test_mock_object_unexpected_invocation_in_setup
72
- execution_point = nil
73
- test_result = run_as_tests(
74
- :setup => lambda {
75
- mock = mock('not expecting invocation')
76
- execution_point = ExecutionPoint.current; mock.unexpected
77
- },
78
- :test_me => lambda {
79
- assert true
80
- }
81
- )
82
- assert_failed(test_result)
83
- failure = test_result.failures.first
84
- assert_equal execution_point, ExecutionPoint.new(failure.location)
85
- assert_equal ['unexpected invocation: #<Mock:not expecting invocation>.unexpected()'], test_result.failure_message_lines
86
- end
87
-
88
- def test_mock_object_unsatisfied_expectation_in_setup
89
- execution_point = nil
90
- test_result = run_as_tests(
91
- :setup => lambda {
92
- mock = mock('expecting invocation')
93
- execution_point = ExecutionPoint.current; mock.expects(:expected)
94
- },
95
- :test_me => lambda {
96
- assert true
97
- }
98
- )
99
- assert_failed(test_result)
100
- failure = test_result.failures.first
101
- assert_equal execution_point, ExecutionPoint.new(failure.location)
102
- assert_equal [
103
- 'not all expectations were satisfied',
104
- 'unsatisfied expectations:',
105
- '- expected exactly once, invoked never: #<Mock:expecting invocation>.expected(any_parameters)'
106
- ], test_result.failure_message_lines
107
- end
108
-
109
- def test_mock_object_unexpected_invocation_in_teardown
110
- execution_point = nil
111
- test_result = run_as_tests(
112
- :test_me => lambda {
113
- assert true
114
- },
115
- :teardown => lambda {
116
- mock = mock('not expecting invocation')
117
- execution_point = ExecutionPoint.current; mock.unexpected
118
- }
119
- )
120
- assert_failed(test_result)
121
- failure = test_result.failures.first
122
- assert_equal execution_point, ExecutionPoint.new(failure.location)
123
- assert_equal ['unexpected invocation: #<Mock:not expecting invocation>.unexpected()'], test_result.failure_message_lines
124
- end
125
-
126
- def test_real_object_explicitly_unexpected_invocation
127
- execution_point = nil
128
- object = Object.new
129
- test_result = run_as_test do
130
- object.expects(:unexpected).never
131
- execution_point = ExecutionPoint.current; object.unexpected
132
- end
133
- assert_failed(test_result)
134
- failure = test_result.failures.first
135
- assert_equal execution_point, ExecutionPoint.new(failure.location)
136
- assert_equal [
137
- "unexpected invocation: #{object.mocha_inspect}.unexpected()",
138
- 'unsatisfied expectations:',
139
- "- expected never, invoked once: #{object.mocha_inspect}.unexpected(any_parameters)"
140
- ], test_result.failure_message_lines
141
- end
142
-
143
- def test_real_object_unsatisfied_expectation
144
- execution_point = nil
145
- object = Object.new
146
- test_result = run_as_test do
147
- execution_point = ExecutionPoint.current; object.expects(:expected)
148
- end
149
- assert_failed(test_result)
150
- failure = test_result.failures.first
151
- assert_equal execution_point, ExecutionPoint.new(failure.location)
152
- assert_equal [
153
- 'not all expectations were satisfied',
154
- 'unsatisfied expectations:',
155
- "- expected exactly once, invoked never: #{object.mocha_inspect}.expected(any_parameters)"
156
- ], test_result.failure_message_lines
157
- end
158
-
159
- def test_real_object_expectation_does_not_leak_into_subsequent_test
160
- execution_point = nil
161
- klass = Class.new
162
- test_result = run_as_tests(
163
- :test_1 => lambda {
164
- klass.expects(:foo)
165
- klass.foo
166
- },
167
- :test_2 => lambda {
168
- execution_point = ExecutionPoint.current; klass.foo
169
- }
170
- )
171
- assert_failed(test_result)
172
- exception = test_result.errors.first.exception
173
- assert_equal execution_point, ExecutionPoint.new(exception.backtrace)
174
- assert_match(/undefined method `foo'/, exception.message)
175
- end
176
- # rubocop:enable Style/Semicolon
177
- end
178
- # rubocop:enable Metrics/ModuleLength
@@ -1,8 +0,0 @@
1
- require File.expand_path('../../test_helper', __FILE__)
2
-
3
- require 'mocha/test_unit'
4
- require 'integration/shared_tests'
5
-
6
- class TestUnitTest < Mocha::TestCase
7
- include SharedTests
8
- end
@@ -1,16 +0,0 @@
1
- require 'mocha/singleton_class'
2
-
3
- module MethodDefiner
4
- def define_instance_method(object, method_symbol, &block)
5
- object.singleton_class.send(:define_method, method_symbol, block)
6
- end
7
-
8
- def replace_instance_method(object, method_symbol, &block)
9
- raise "Cannot replace #{method_symbol} as #{self} does not respond to it." unless object.respond_to?(method_symbol)
10
- define_instance_method(object, method_symbol, &block)
11
- end
12
-
13
- def define_instance_accessor(object, *symbols)
14
- symbols.each { |symbol| object.singleton_class.send(:attr_accessor, symbol) }
15
- end
16
- end
@@ -1,96 +0,0 @@
1
- require 'stringio'
2
- require 'minitest/unit'
3
-
4
- class MiniTestResult
5
- minitest_version = Gem::Version.new(::MiniTest::Unit::VERSION)
6
- if Gem::Requirement.new('<= 4.6.1').satisfied_by?(minitest_version)
7
- FAILURE_PATTERN = /(Failure)\:\n([^\(]+)\(([^\)]+)\) \[([^\]]+)\]\:\n(.*)\n/m
8
- ERROR_PATTERN = /(Error)\:\n([^\(]+)\(([^\)]+)\)\:\n(.+?)\n/m
9
- PATTERN_INDICES = { :method => 2, :testcase => 3 }.freeze
10
- else
11
- FAILURE_PATTERN = /(Failure)\:\n.([^#]+)\#([^ ]+) \[([^\]]+)\]\:\n(.*)\n/m
12
- ERROR_PATTERN = /(Error)\:\n.([^#]+)\#([^ ]+)\:\n(.+?)\n/m
13
- PATTERN_INDICES = { :method => 3, :testcase => 2 }.freeze
14
- end
15
-
16
- def self.parse_failure(raw)
17
- matches = FAILURE_PATTERN.match(raw)
18
- return nil unless matches
19
- Failure.new(matches[PATTERN_INDICES[:method]], matches[PATTERN_INDICES[:testcase]], [matches[4]], matches[5])
20
- end
21
-
22
- def self.parse_error(raw)
23
- matches = ERROR_PATTERN.match(raw)
24
- return nil unless matches
25
- backtrace = raw.gsub(ERROR_PATTERN, '').split("\n").map(&:strip)
26
- Error.new(matches[PATTERN_INDICES[:method]], matches[PATTERN_INDICES[:testcase]], matches[4], backtrace)
27
- end
28
-
29
- class Failure
30
- attr_reader :method, :test_case, :location, :message
31
- def initialize(method, test_case, location, message)
32
- @method = method
33
- @test_case = test_case
34
- @location = location
35
- @message = message
36
- end
37
- end
38
-
39
- class Error
40
- class Exception
41
- attr_reader :message, :backtrace
42
- def initialize(message, location)
43
- @message = message
44
- @backtrace = location
45
- end
46
- end
47
-
48
- attr_reader :method, :test_case, :exception
49
- def initialize(method, test_case, message, backtrace)
50
- @method = method
51
- @test_case = test_case
52
- @exception = Exception.new(message, backtrace)
53
- end
54
- end
55
-
56
- def initialize(runner, tests)
57
- @runner = runner
58
- @tests = tests
59
- end
60
-
61
- def failure_count
62
- @runner.failures
63
- end
64
-
65
- def assertion_count
66
- @tests.inject(0) { |total, test| total + test._assertions }
67
- end
68
-
69
- def error_count
70
- @runner.errors
71
- end
72
-
73
- def passed?
74
- @tests.all?(&:passed?)
75
- end
76
-
77
- def failures
78
- @runner.report.map { |puked| MiniTestResult.parse_failure(puked) }.compact
79
- end
80
-
81
- def errors
82
- @runner.report.map { |puked| MiniTestResult.parse_error(puked) }.compact
83
- end
84
-
85
- def failure_messages
86
- failures.map(&:message)
87
- end
88
-
89
- def failure_message_lines
90
- failure_messages.map { |message| message.split("\n") }.flatten
91
- end
92
-
93
- def error_messages
94
- errors.map { |e| e.exception.message }
95
- end
96
- end
@@ -1,48 +0,0 @@
1
- require 'forwardable'
2
-
3
- class MinitestResult
4
- class Failure
5
- extend Forwardable
6
- def_delegators :@failure, :message, :backtrace
7
-
8
- def initialize(failure)
9
- @failure = failure
10
- end
11
-
12
- def location
13
- Minitest.filter_backtrace(backtrace)
14
- end
15
- end
16
-
17
- def initialize(tests)
18
- @tests = tests
19
- end
20
-
21
- def failures
22
- @tests.map(&:failures).flatten.select { |r| r.instance_of?(Minitest::Assertion) }.map { |f| Failure.new(f) }
23
- end
24
-
25
- def failure_count
26
- failures.length
27
- end
28
-
29
- def failure_message_lines
30
- failures.map { |f| f.message.split("\n") }.flatten
31
- end
32
-
33
- def errors
34
- @tests.map(&:failures).flatten.select { |r| r.instance_of?(Minitest::UnexpectedError) }
35
- end
36
-
37
- def error_count
38
- errors.length
39
- end
40
-
41
- def error_messages
42
- errors.map { |e| e.message.split("\n") }.flatten
43
- end
44
-
45
- def assertion_count
46
- @tests.inject(0) { |total, test| total + test.assertions }
47
- end
48
- end
@@ -1,11 +0,0 @@
1
- class SimpleCounter
2
- attr_reader :count
3
-
4
- def initialize
5
- @count = 0
6
- end
7
-
8
- def increment
9
- @count += 1
10
- end
11
- end
@@ -1,58 +0,0 @@
1
- unless defined?(STANDARD_OBJECT_PUBLIC_INSTANCE_METHODS)
2
- STANDARD_OBJECT_PUBLIC_INSTANCE_METHODS = Object.instance_methods + Object.private_instance_methods
3
- end
4
-
5
- $LOAD_PATH.unshift File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
6
- $LOAD_PATH.unshift File.expand_path(File.join(File.dirname(__FILE__)))
7
- $LOAD_PATH.unshift File.expand_path(File.join(File.dirname(__FILE__), 'unit'))
8
- $LOAD_PATH.unshift File.expand_path(File.join(File.dirname(__FILE__), 'unit', 'parameter_matchers'))
9
- $LOAD_PATH.unshift File.expand_path(File.join(File.dirname(__FILE__), 'acceptance'))
10
-
11
- require 'mocha/detection/mini_test'
12
-
13
- begin
14
- require 'minitest'
15
- # rubocop:disable Lint/HandleExceptions
16
- rescue LoadError
17
- end
18
- # rubocop:enable Lint/HandleExceptions
19
- begin
20
- require 'minitest/unit'
21
- # rubocop:disable Lint/HandleExceptions
22
- rescue LoadError
23
- end
24
- # rubocop:enable Lint/HandleExceptions
25
-
26
- module Mocha; end
27
-
28
- if (minitest_testcase = Mocha::Detection::MiniTest.testcase) && (ENV['MOCHA_RUN_INTEGRATION_TESTS'] != 'test-unit')
29
- begin
30
- require 'minitest/autorun'
31
- rescue LoadError
32
- MiniTest::Unit.autorun
33
- end
34
- # rubocop:disable Style/ClassAndModuleChildren
35
- class Mocha::TestCase < minitest_testcase
36
- def assert_nothing_raised(exception = StandardError)
37
- yield
38
- rescue exception => e
39
- flunk "Unexpected exception raised: #{e}"
40
- end
41
-
42
- alias_method :assert_not_nil, :refute_nil
43
- alias_method :assert_raise, :assert_raises
44
- alias_method :assert_not_same, :refute_same
45
- alias_method :assert_no_match, :refute_match
46
- end
47
- # rubocop:enable Style/ClassAndModuleChildren
48
- else
49
- require 'test/unit'
50
- # rubocop:disable Style/ClassAndModuleChildren
51
- class Mocha::TestCase < Test::Unit::TestCase
52
- def test_dummy
53
- # Some versions (?) of Test::Unit try to run this base class as a test case
54
- # and it fails because it has no test methods, so I'm adding a dummy test.
55
- end
56
- end
57
- # rubocop:enable Style/ClassAndModuleChildren
58
- end