mocha 0.12.7 → 0.13.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.
- data/.yardopts +22 -0
- data/COPYING.md +3 -0
- data/README.md +230 -0
- data/{RELEASE.rdoc → RELEASE.md} +61 -47
- data/Rakefile +45 -37
- data/build-matrix.rb +16 -4
- data/lib/mocha/api.rb +13 -16
- data/lib/mocha/class_method.rb +7 -3
- data/lib/mocha/class_methods.rb +63 -0
- data/lib/mocha/debug.rb +11 -0
- data/lib/mocha/deprecation.rb +1 -1
- data/lib/mocha/exception_raiser.rb +1 -1
- data/lib/mocha/expectation_error.rb +5 -0
- data/lib/mocha/expectation_error_factory.rb +19 -0
- data/lib/mocha/hooks.rb +43 -0
- data/lib/mocha/integration/assertion_counter.rb +13 -0
- data/lib/mocha/integration/mini_test/adapter.rb +54 -0
- data/lib/mocha/integration/mini_test/exception_translation.rb +0 -6
- data/lib/mocha/integration/mini_test/nothing.rb +19 -0
- data/lib/mocha/integration/mini_test/version_13.rb +32 -25
- data/lib/mocha/integration/mini_test/version_140.rb +32 -26
- data/lib/mocha/integration/mini_test/version_141.rb +40 -34
- data/lib/mocha/integration/mini_test/version_142_to_172.rb +40 -34
- data/lib/mocha/integration/mini_test/version_200.rb +41 -35
- data/lib/mocha/integration/mini_test/version_201_to_222.rb +41 -35
- data/lib/mocha/integration/mini_test/version_2110_to_2111.rb +49 -43
- data/lib/mocha/integration/mini_test/version_2112_to_320.rb +53 -47
- data/lib/mocha/integration/mini_test/version_230_to_2101.rb +43 -37
- data/lib/mocha/integration/mini_test.rb +42 -51
- data/lib/mocha/integration/monkey_patcher.rb +18 -0
- data/lib/mocha/integration/test_unit/adapter.rb +51 -0
- data/lib/mocha/integration/test_unit/gem_version_200.rb +36 -29
- data/lib/mocha/integration/test_unit/gem_version_201_to_202.rb +36 -29
- data/lib/mocha/integration/test_unit/gem_version_203_to_220.rb +36 -29
- data/lib/mocha/integration/test_unit/gem_version_230_to_250.rb +65 -0
- data/lib/mocha/integration/test_unit/nothing.rb +19 -0
- data/lib/mocha/integration/test_unit/ruby_version_185_and_below.rb +36 -29
- data/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb +37 -30
- data/lib/mocha/integration/test_unit.rb +38 -45
- data/lib/mocha/integration.rb +6 -38
- data/lib/mocha/method_matcher.rb +1 -1
- data/lib/mocha/module_methods.rb +14 -0
- data/lib/mocha/{object.rb → object_methods.rb} +0 -83
- data/lib/mocha/setup.rb +10 -0
- data/lib/mocha/standalone.rb +3 -0
- data/lib/mocha/version.rb +1 -1
- data/lib/mocha.rb +6 -2
- data/lib/mocha_standalone.rb +3 -1
- data/mocha.gemspec +16 -9
- data/test/acceptance/bug_18914_test.rb +1 -1
- data/test/acceptance/bug_21465_test.rb +1 -1
- data/test/acceptance/bug_21563_test.rb +1 -1
- data/test/acceptance/exception_rescue_test.rb +1 -1
- data/test/acceptance/expectations_on_multiple_methods_test.rb +1 -1
- data/test/acceptance/expected_invocation_count_test.rb +1 -1
- data/test/acceptance/failure_messages_test.rb +1 -1
- data/test/acceptance/issue_65_test.rb +1 -1
- data/test/acceptance/issue_70_test.rb +1 -1
- data/test/acceptance/mocha_example_test.rb +1 -1
- data/test/acceptance/mocha_test_result_test.rb +1 -1
- data/test/acceptance/mock_test.rb +1 -1
- data/test/acceptance/mock_with_initializer_block_test.rb +1 -1
- data/test/acceptance/mocked_methods_dispatch_test.rb +1 -1
- data/test/acceptance/multiple_expectations_failure_message_test.rb +1 -1
- data/test/acceptance/optional_parameters_test.rb +1 -1
- data/test/acceptance/parameter_matcher_test.rb +1 -1
- data/test/acceptance/partial_mocks_test.rb +1 -1
- data/test/acceptance/raise_exception_test.rb +1 -1
- data/test/acceptance/return_value_test.rb +1 -1
- data/test/acceptance/sequence_test.rb +1 -1
- data/test/acceptance/states_test.rb +1 -1
- data/test/acceptance/stub_any_instance_method_test.rb +1 -1
- data/test/acceptance/stub_class_method_defined_on_active_record_association_proxy_test.rb +1 -1
- data/test/acceptance/stub_class_method_defined_on_class_test.rb +1 -1
- data/test/acceptance/stub_class_method_defined_on_module_test.rb +1 -1
- data/test/acceptance/stub_class_method_defined_on_superclass_test.rb +1 -1
- data/test/acceptance/stub_everything_test.rb +1 -1
- data/test/acceptance/stub_instance_method_defined_on_active_record_association_proxy_test.rb +1 -1
- data/test/acceptance/stub_instance_method_defined_on_class_and_aliased_test.rb +1 -1
- data/test/acceptance/stub_instance_method_defined_on_class_test.rb +1 -1
- data/test/acceptance/stub_instance_method_defined_on_kernel_module_test.rb +1 -1
- data/test/acceptance/stub_instance_method_defined_on_module_test.rb +1 -1
- data/test/acceptance/stub_instance_method_defined_on_object_class_test.rb +1 -1
- data/test/acceptance/stub_instance_method_defined_on_singleton_class_test.rb +1 -1
- data/test/acceptance/stub_instance_method_defined_on_superclass_test.rb +1 -1
- data/test/acceptance/stub_module_method_test.rb +1 -1
- data/test/acceptance/stub_test.rb +1 -1
- data/test/acceptance/stubba_example_test.rb +1 -1
- data/test/acceptance/stubba_test_result_test.rb +1 -1
- data/test/acceptance/stubbing_error_backtrace_test.rb +1 -1
- data/test/acceptance/stubbing_frozen_object_test.rb +1 -1
- data/test/acceptance/stubbing_method_accepting_block_parameter_test.rb +1 -1
- data/test/acceptance/stubbing_method_unnecessarily_test.rb +1 -1
- data/test/acceptance/stubbing_nil_test.rb +1 -1
- data/test/acceptance/stubbing_non_existent_any_instance_method_test.rb +1 -1
- data/test/acceptance/stubbing_non_existent_class_method_test.rb +1 -1
- data/test/acceptance/stubbing_non_existent_instance_method_test.rb +1 -1
- data/test/acceptance/stubbing_non_public_any_instance_method_test.rb +1 -1
- data/test/acceptance/stubbing_non_public_class_method_test.rb +1 -1
- data/test/acceptance/stubbing_non_public_instance_method_test.rb +1 -1
- data/test/acceptance/stubbing_on_non_mock_object_test.rb +1 -1
- data/test/acceptance/stubbing_same_class_method_on_parent_and_child_classes_test.rb +3 -3
- data/test/acceptance/throw_test.rb +1 -1
- data/test/acceptance/unstubbing_test.rb +1 -1
- data/test/integration/mini_test_test.rb +9 -0
- data/test/integration/shared_tests.rb +174 -0
- data/test/integration/test_unit_test.rb +9 -0
- data/test/mini_test_result.rb +0 -1
- data/test/test_runner.rb +14 -14
- data/test/unit/class_methods_test.rb +40 -0
- data/test/unit/method_matcher_test.rb +5 -0
- data/test/unit/mock_test.rb +6 -0
- data/test/unit/module_methods_test.rb +19 -0
- data/test/unit/object_methods_test.rb +45 -0
- metadata +43 -42
- data/COPYING.rdoc +0 -3
- data/README.rdoc +0 -56
- data/examples/misc.rb +0 -43
- data/examples/mocha.rb +0 -25
- data/examples/stubba.rb +0 -64
- data/lib/mocha/integration/mini_test/assertion_counter.rb +0 -23
- data/lib/mocha/integration/mini_test/version_330_to_410.rb +0 -65
- data/lib/mocha/integration/test_unit/assertion_counter.rb +0 -23
- data/lib/mocha/integration/test_unit/gem_version_230_to_252.rb +0 -58
- data/lib/mocha/options.rb +0 -1
- data/test/acceptance/api_test.rb +0 -139
- data/test/acceptance/minitest_test.rb +0 -162
- data/test/unit/object_test.rb +0 -92
- /data/{MIT-LICENSE.rdoc → MIT-LICENSE.md} +0 -0
|
@@ -1,51 +1,58 @@
|
|
|
1
|
-
require '
|
|
2
|
-
require 'mocha/integration/
|
|
1
|
+
require 'mocha/integration/assertion_counter'
|
|
2
|
+
require 'mocha/integration/monkey_patcher'
|
|
3
3
|
require 'mocha/expectation_error'
|
|
4
4
|
|
|
5
5
|
module Mocha
|
|
6
|
-
|
|
7
6
|
module Integration
|
|
8
|
-
|
|
9
7
|
module TestUnit
|
|
10
|
-
|
|
11
8
|
module RubyVersion185AndBelow
|
|
9
|
+
def self.applicable_to?(test_unit_version, ruby_version)
|
|
10
|
+
Gem::Requirement.new('<= 1.2.3').satisfied_by?(test_unit_version) && Gem::Requirement.new('<= 1.8.5').satisfied_by?(ruby_version)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def self.description
|
|
14
|
+
"monkey patch for standard library in Ruby <= v1.8.5"
|
|
15
|
+
end
|
|
16
|
+
|
|
12
17
|
def self.included(mod)
|
|
13
|
-
|
|
18
|
+
MonkeyPatcher.apply(mod, RunMethodPatch)
|
|
14
19
|
end
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
+
|
|
21
|
+
module RunMethodPatch
|
|
22
|
+
def run(result)
|
|
23
|
+
assertion_counter = AssertionCounter.new(self)
|
|
24
|
+
yield(Test::Unit::TestCase::STARTED, name)
|
|
25
|
+
@_result = result
|
|
20
26
|
begin
|
|
21
|
-
setup
|
|
22
|
-
__send__(@method_name)
|
|
23
|
-
mocha_verify(assertion_counter)
|
|
24
|
-
rescue Mocha::ExpectationError => e
|
|
25
|
-
add_failure(e.message, e.backtrace)
|
|
26
|
-
rescue Test::Unit::AssertionFailedError => e
|
|
27
|
-
add_failure(e.message, e.backtrace)
|
|
28
|
-
rescue StandardError, ScriptError
|
|
29
|
-
add_error($!)
|
|
30
|
-
ensure
|
|
31
27
|
begin
|
|
32
|
-
|
|
28
|
+
setup
|
|
29
|
+
__send__(@method_name)
|
|
30
|
+
mocha_verify(assertion_counter)
|
|
31
|
+
rescue Mocha::ExpectationError => e
|
|
32
|
+
add_failure(e.message, e.backtrace)
|
|
33
33
|
rescue Test::Unit::AssertionFailedError => e
|
|
34
34
|
add_failure(e.message, e.backtrace)
|
|
35
35
|
rescue StandardError, ScriptError
|
|
36
36
|
add_error($!)
|
|
37
|
+
ensure
|
|
38
|
+
begin
|
|
39
|
+
teardown
|
|
40
|
+
rescue Mocha::ExpectationError => e
|
|
41
|
+
add_failure(e.message, e.backtrace)
|
|
42
|
+
rescue Test::Unit::AssertionFailedError => e
|
|
43
|
+
add_failure(e.message, e.backtrace)
|
|
44
|
+
rescue StandardError, ScriptError
|
|
45
|
+
add_error($!)
|
|
46
|
+
end
|
|
37
47
|
end
|
|
48
|
+
ensure
|
|
49
|
+
mocha_teardown
|
|
38
50
|
end
|
|
39
|
-
|
|
40
|
-
|
|
51
|
+
result.add_run
|
|
52
|
+
yield(Test::Unit::TestCase::FINISHED, name)
|
|
41
53
|
end
|
|
42
|
-
result.add_run
|
|
43
|
-
yield(Test::Unit::TestCase::FINISHED, name)
|
|
44
54
|
end
|
|
45
55
|
end
|
|
46
|
-
|
|
47
56
|
end
|
|
48
|
-
|
|
49
57
|
end
|
|
50
|
-
|
|
51
58
|
end
|
|
@@ -1,53 +1,60 @@
|
|
|
1
|
-
require '
|
|
2
|
-
require 'mocha/integration/
|
|
1
|
+
require 'mocha/integration/assertion_counter'
|
|
2
|
+
require 'mocha/integration/monkey_patcher'
|
|
3
3
|
require 'mocha/expectation_error'
|
|
4
4
|
|
|
5
5
|
module Mocha
|
|
6
|
-
|
|
7
6
|
module Integration
|
|
8
|
-
|
|
9
7
|
module TestUnit
|
|
10
|
-
|
|
11
8
|
module RubyVersion186AndAbove
|
|
9
|
+
def self.applicable_to?(test_unit_version, ruby_version)
|
|
10
|
+
Gem::Requirement.new('<= 1.2.3').satisfied_by?(test_unit_version) && Gem::Requirement.new('>= 1.8.6').satisfied_by?(ruby_version)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def self.description
|
|
14
|
+
"monkey patch for standard library Test::Unit in Ruby >= v1.8.6"
|
|
15
|
+
end
|
|
16
|
+
|
|
12
17
|
def self.included(mod)
|
|
13
|
-
|
|
18
|
+
MonkeyPatcher.apply(mod, RunMethodPatch)
|
|
14
19
|
end
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
+
|
|
21
|
+
module RunMethodPatch
|
|
22
|
+
def run(result)
|
|
23
|
+
assertion_counter = AssertionCounter.new(self)
|
|
24
|
+
yield(Test::Unit::TestCase::STARTED, name)
|
|
25
|
+
@_result = result
|
|
20
26
|
begin
|
|
21
|
-
setup
|
|
22
|
-
__send__(@method_name)
|
|
23
|
-
mocha_verify(assertion_counter)
|
|
24
|
-
rescue Mocha::ExpectationError => e
|
|
25
|
-
add_failure(e.message, e.backtrace)
|
|
26
|
-
rescue Test::Unit::AssertionFailedError => e
|
|
27
|
-
add_failure(e.message, e.backtrace)
|
|
28
|
-
rescue Exception
|
|
29
|
-
raise if Test::Unit::TestCase::PASSTHROUGH_EXCEPTIONS.include? $!.class
|
|
30
|
-
add_error($!)
|
|
31
|
-
ensure
|
|
32
27
|
begin
|
|
33
|
-
|
|
28
|
+
setup
|
|
29
|
+
__send__(@method_name)
|
|
30
|
+
mocha_verify(assertion_counter)
|
|
31
|
+
rescue Mocha::ExpectationError => e
|
|
32
|
+
add_failure(e.message, e.backtrace)
|
|
34
33
|
rescue Test::Unit::AssertionFailedError => e
|
|
35
34
|
add_failure(e.message, e.backtrace)
|
|
36
35
|
rescue Exception
|
|
37
36
|
raise if Test::Unit::TestCase::PASSTHROUGH_EXCEPTIONS.include? $!.class
|
|
38
37
|
add_error($!)
|
|
38
|
+
ensure
|
|
39
|
+
begin
|
|
40
|
+
teardown
|
|
41
|
+
rescue Mocha::ExpectationError => e
|
|
42
|
+
add_failure(e.message, e.backtrace)
|
|
43
|
+
rescue Test::Unit::AssertionFailedError => e
|
|
44
|
+
add_failure(e.message, e.backtrace)
|
|
45
|
+
rescue Exception
|
|
46
|
+
raise if Test::Unit::TestCase::PASSTHROUGH_EXCEPTIONS.include? $!.class
|
|
47
|
+
add_error($!)
|
|
48
|
+
end
|
|
39
49
|
end
|
|
50
|
+
ensure
|
|
51
|
+
mocha_teardown
|
|
40
52
|
end
|
|
41
|
-
|
|
42
|
-
|
|
53
|
+
result.add_run
|
|
54
|
+
yield(Test::Unit::TestCase::FINISHED, name)
|
|
43
55
|
end
|
|
44
|
-
result.add_run
|
|
45
|
-
yield(Test::Unit::TestCase::FINISHED, name)
|
|
46
56
|
end
|
|
47
57
|
end
|
|
48
|
-
|
|
49
58
|
end
|
|
50
|
-
|
|
51
59
|
end
|
|
52
|
-
|
|
53
60
|
end
|
|
@@ -1,56 +1,49 @@
|
|
|
1
|
-
require 'mocha/
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
module
|
|
14
|
-
module
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
include Mocha::API
|
|
18
|
-
|
|
19
|
-
alias_method :run_before_mocha, :run
|
|
20
|
-
remove_method :run
|
|
1
|
+
require 'mocha/debug'
|
|
2
|
+
|
|
3
|
+
require 'mocha/integration/test_unit/nothing'
|
|
4
|
+
require 'mocha/integration/test_unit/ruby_version_185_and_below'
|
|
5
|
+
require 'mocha/integration/test_unit/ruby_version_186_and_above'
|
|
6
|
+
require 'mocha/integration/test_unit/gem_version_200'
|
|
7
|
+
require 'mocha/integration/test_unit/gem_version_201_to_202'
|
|
8
|
+
require 'mocha/integration/test_unit/gem_version_203_to_220'
|
|
9
|
+
require 'mocha/integration/test_unit/gem_version_230_to_250'
|
|
10
|
+
require 'mocha/integration/test_unit/adapter'
|
|
11
|
+
|
|
12
|
+
module Mocha
|
|
13
|
+
module Integration
|
|
14
|
+
module TestUnit
|
|
15
|
+
def self.activate
|
|
16
|
+
return false unless defined?(::Test::Unit::TestCase) && !(defined?(::MiniTest::Unit::TestCase) && (::Test::Unit::TestCase < ::MiniTest::Unit::TestCase))
|
|
21
17
|
|
|
22
18
|
test_unit_version = begin
|
|
23
19
|
load 'test/unit/version.rb'
|
|
24
|
-
Gem::Version.new(Test::Unit::VERSION)
|
|
20
|
+
Gem::Version.new(::Test::Unit::VERSION)
|
|
25
21
|
rescue LoadError
|
|
26
|
-
Gem::Version.new('1.
|
|
22
|
+
Gem::Version.new('1.0.0')
|
|
27
23
|
end
|
|
28
24
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
25
|
+
ruby_version = Gem::Version.new(RUBY_VERSION.dup)
|
|
26
|
+
|
|
27
|
+
Debug.puts "Detected Ruby version: #{ruby_version}"
|
|
28
|
+
Debug.puts "Detected Test::Unit version: #{test_unit_version}"
|
|
29
|
+
|
|
30
|
+
integration_module = [
|
|
31
|
+
TestUnit::Adapter,
|
|
32
|
+
TestUnit::GemVersion230To250,
|
|
33
|
+
TestUnit::GemVersion203To220,
|
|
34
|
+
TestUnit::GemVersion201To202,
|
|
35
|
+
TestUnit::GemVersion200,
|
|
36
|
+
TestUnit::RubyVersion186AndAbove,
|
|
37
|
+
TestUnit::RubyVersion185AndBelow,
|
|
38
|
+
TestUnit::Nothing
|
|
39
|
+
].detect { |m| m.applicable_to?(test_unit_version, ruby_version) }
|
|
40
|
+
|
|
41
|
+
unless ::Test::Unit::TestCase < integration_module
|
|
42
|
+
Debug.puts "Applying #{integration_module.description}"
|
|
43
|
+
::Test::Unit::TestCase.send(:include, integration_module)
|
|
32
44
|
end
|
|
33
|
-
|
|
34
|
-
if (test_unit_version == Gem::Version.new('1.x')) || (test_unit_version == Gem::Version.new('1.2.3'))
|
|
35
|
-
if RUBY_VERSION < '1.8.6'
|
|
36
|
-
include Mocha::Integration::TestUnit::RubyVersion185AndBelow
|
|
37
|
-
else
|
|
38
|
-
include Mocha::Integration::TestUnit::RubyVersion186AndAbove
|
|
39
|
-
end
|
|
40
|
-
elsif Gem::Requirement.new('2.0.0').satisfied_by?(test_unit_version)
|
|
41
|
-
include Mocha::Integration::TestUnit::GemVersion200
|
|
42
|
-
elsif Gem::Requirement.new('>= 2.0.1', '<= 2.0.2').satisfied_by?(test_unit_version)
|
|
43
|
-
include Mocha::Integration::TestUnit::GemVersion201To202
|
|
44
|
-
elsif Gem::Requirement.new('>= 2.0.3', '<= 2.2.0').satisfied_by?(test_unit_version)
|
|
45
|
-
include Mocha::Integration::TestUnit::GemVersion203To220
|
|
46
|
-
elsif Gem::Requirement.new('>= 2.3.0', '<= 2.5.2').satisfied_by?(test_unit_version)
|
|
47
|
-
include Mocha::Integration::TestUnit::GemVersion230To252
|
|
48
|
-
else
|
|
49
|
-
raise "No Mocha monkey-patch for Test::Unit version"
|
|
50
|
-
end
|
|
51
|
-
|
|
45
|
+
true
|
|
52
46
|
end
|
|
53
47
|
end
|
|
54
48
|
end
|
|
55
|
-
|
|
56
49
|
end
|
data/lib/mocha/integration.rb
CHANGED
|
@@ -1,46 +1,14 @@
|
|
|
1
|
-
require 'mocha/options'
|
|
2
1
|
require 'mocha/deprecation'
|
|
2
|
+
require 'mocha/integration/test_unit'
|
|
3
|
+
require 'mocha/integration/mini_test'
|
|
3
4
|
|
|
4
5
|
module Mocha
|
|
5
|
-
|
|
6
6
|
module Integration
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
patches = []
|
|
12
|
-
if test_unit_testcase_defined? && !test_unit_testcase_inherits_from_miniunit_testcase?
|
|
13
|
-
patches << 'mocha/integration/test_unit'
|
|
14
|
-
end
|
|
15
|
-
if mini_test_testcase_defined?
|
|
16
|
-
patches << 'mocha/integration/mini_test'
|
|
17
|
-
end
|
|
18
|
-
patches
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def test_unit_testcase_defined?
|
|
22
|
-
defined?(Test::Unit::TestCase)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def mini_test_testcase_defined?
|
|
26
|
-
defined?(MiniTest::Unit::TestCase)
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def test_unit_testcase_inherits_from_miniunit_testcase?
|
|
30
|
-
test_unit_testcase_defined? && mini_test_testcase_defined? && Test::Unit::TestCase.ancestors.include?(MiniTest::Unit::TestCase)
|
|
7
|
+
def self.activate
|
|
8
|
+
if [Integration::TestUnit, Integration::MiniTest].map(&:activate).none?
|
|
9
|
+
Deprecation.warning("Test::Unit or MiniTest must be loaded *before* Mocha.")
|
|
10
|
+
Deprecation.warning("If you're integrating with a test library other than Test::Unit or MiniTest, you should use `require 'mocha/api'` instead of `require 'mocha'`.")
|
|
31
11
|
end
|
|
32
|
-
|
|
33
12
|
end
|
|
34
|
-
|
|
35
13
|
end
|
|
36
|
-
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
unless Mocha::Integration.monkey_patches.any?
|
|
40
|
-
Mocha::Deprecation.warning("Test::Unit or MiniTest must be loaded *before* Mocha.")
|
|
41
|
-
Mocha::Deprecation.warning("If you're integrating with another test library, you should probably require 'mocha_standalone' instead of 'mocha'")
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
Mocha::Integration.monkey_patches.each do |patch|
|
|
45
|
-
require patch
|
|
46
14
|
end
|
data/lib/mocha/method_matcher.rb
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
require 'mocha/mockery'
|
|
2
2
|
require 'mocha/instance_method'
|
|
3
|
-
require 'mocha/class_method'
|
|
4
|
-
require 'mocha/module_method'
|
|
5
|
-
require 'mocha/any_instance_method'
|
|
6
3
|
require 'mocha/argument_iterator'
|
|
7
4
|
require 'mocha/expectation_error_factory'
|
|
8
5
|
|
|
@@ -173,84 +170,4 @@ module Mocha
|
|
|
173
170
|
|
|
174
171
|
end
|
|
175
172
|
|
|
176
|
-
# @private
|
|
177
|
-
module ModuleMethods
|
|
178
|
-
|
|
179
|
-
def stubba_method
|
|
180
|
-
Mocha::ModuleMethod
|
|
181
|
-
end
|
|
182
|
-
|
|
183
|
-
end
|
|
184
|
-
|
|
185
|
-
# Methods added to all classes to allow mocking and stubbing on real (i.e. non-mock) objects.
|
|
186
|
-
module ClassMethods
|
|
187
|
-
|
|
188
|
-
# @private
|
|
189
|
-
def stubba_method
|
|
190
|
-
Mocha::ClassMethod
|
|
191
|
-
end
|
|
192
|
-
|
|
193
|
-
# @private
|
|
194
|
-
class AnyInstance
|
|
195
|
-
|
|
196
|
-
def initialize(klass)
|
|
197
|
-
@stubba_object = klass
|
|
198
|
-
end
|
|
199
|
-
|
|
200
|
-
def mocha
|
|
201
|
-
@mocha ||= Mocha::Mockery.instance.mock_impersonating_any_instance_of(@stubba_object)
|
|
202
|
-
end
|
|
203
|
-
|
|
204
|
-
def stubba_method
|
|
205
|
-
Mocha::AnyInstanceMethod
|
|
206
|
-
end
|
|
207
|
-
|
|
208
|
-
def stubba_object
|
|
209
|
-
@stubba_object
|
|
210
|
-
end
|
|
211
|
-
|
|
212
|
-
def method_exists?(method, include_public_methods = true)
|
|
213
|
-
if include_public_methods
|
|
214
|
-
return true if @stubba_object.public_instance_methods(include_superclass_methods = true).include?(method)
|
|
215
|
-
end
|
|
216
|
-
return true if @stubba_object.protected_instance_methods(include_superclass_methods = true).include?(method)
|
|
217
|
-
return true if @stubba_object.private_instance_methods(include_superclass_methods = true).include?(method)
|
|
218
|
-
return false
|
|
219
|
-
end
|
|
220
|
-
|
|
221
|
-
end
|
|
222
|
-
|
|
223
|
-
# @return [Mock] a mock object which will detect calls to any instance of this class.
|
|
224
|
-
# @raise [StubbingError] if attempting to stub method which is not allowed.
|
|
225
|
-
#
|
|
226
|
-
# @example Return false to invocation of +Product#save+ for any instance of +Product+.
|
|
227
|
-
# Product.any_instance.stubs(:save).returns(false)
|
|
228
|
-
# product_1 = Product.new
|
|
229
|
-
# assert_equal false, product_1.save
|
|
230
|
-
# product_2 = Product.new
|
|
231
|
-
# assert_equal false, product_2.save
|
|
232
|
-
def any_instance
|
|
233
|
-
if frozen?
|
|
234
|
-
raise StubbingError.new("can't stub method on frozen object: #{mocha_inspect}.any_instance", caller)
|
|
235
|
-
end
|
|
236
|
-
@any_instance ||= AnyInstance.new(self)
|
|
237
|
-
end
|
|
238
|
-
|
|
239
|
-
end
|
|
240
|
-
|
|
241
|
-
end
|
|
242
|
-
|
|
243
|
-
# @private
|
|
244
|
-
class Object
|
|
245
|
-
include Mocha::ObjectMethods
|
|
246
|
-
end
|
|
247
|
-
|
|
248
|
-
# @private
|
|
249
|
-
class Module
|
|
250
|
-
include Mocha::ModuleMethods
|
|
251
|
-
end
|
|
252
|
-
|
|
253
|
-
# @private
|
|
254
|
-
class Class
|
|
255
|
-
include Mocha::ClassMethods
|
|
256
173
|
end
|
data/lib/mocha/setup.rb
ADDED
data/lib/mocha/standalone.rb
CHANGED
data/lib/mocha/version.rb
CHANGED
data/lib/mocha.rb
CHANGED
data/lib/mocha_standalone.rb
CHANGED
data/mocha.gemspec
CHANGED
|
@@ -11,15 +11,16 @@ Gem::Specification.new do |s|
|
|
|
11
11
|
s.authors = ["James Mead"]
|
|
12
12
|
s.description = "Mocking and stubbing library with JMock/SchMock syntax, which allows mocking and stubbing of methods on real (non-mock) classes."
|
|
13
13
|
s.email = "mocha-developer@googlegroups.com"
|
|
14
|
-
s.extra_rdoc_files = ["README.rdoc", "COPYING.rdoc"]
|
|
15
14
|
|
|
16
|
-
s.files = `git ls-files`.split("\n")
|
|
15
|
+
s.files = `git ls-files`.split("\n")
|
|
16
|
+
s.files.delete(".travis.yml")
|
|
17
|
+
s.files.delete(".gitignore")
|
|
17
18
|
|
|
18
19
|
s.homepage = "http://gofreerange.com/mocha/docs"
|
|
19
|
-
s.rdoc_options = ["--title", "Mocha", "--main", "README.rdoc", "--line-numbers"]
|
|
20
20
|
s.require_paths = ["lib"]
|
|
21
21
|
s.rubyforge_project = "mocha"
|
|
22
22
|
s.summary = "Mocking and stubbing library"
|
|
23
|
+
s.has_rdoc = "yard"
|
|
23
24
|
|
|
24
25
|
s.add_dependency("metaclass", "~> 0.0.1")
|
|
25
26
|
if s.respond_to? :specification_version then
|
|
@@ -29,18 +30,24 @@ Gem::Specification.new do |s|
|
|
|
29
30
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
|
30
31
|
s.add_development_dependency("rake", ">= 0")
|
|
31
32
|
s.add_development_dependency("introspection", "~> 0.0.1")
|
|
32
|
-
|
|
33
|
-
|
|
33
|
+
unless ENV["MOCHA_NO_DOCS"]
|
|
34
|
+
s.add_development_dependency("yard")
|
|
35
|
+
s.add_development_dependency("redcarpet", "~> 1")
|
|
36
|
+
end
|
|
34
37
|
else
|
|
35
38
|
s.add_dependency("rake", ">= 0")
|
|
36
39
|
s.add_dependency("introspection", "~> 0.0.1")
|
|
37
|
-
|
|
38
|
-
|
|
40
|
+
unless ENV["MOCHA_NO_DOCS"]
|
|
41
|
+
s.add_dependency("yard")
|
|
42
|
+
s.add_dependency("redcarpet", "~> 1")
|
|
43
|
+
end
|
|
39
44
|
end
|
|
40
45
|
else
|
|
41
46
|
s.add_dependency("rake", ">= 0")
|
|
42
47
|
s.add_dependency("introspection", "~> 0.0.1")
|
|
43
|
-
|
|
44
|
-
|
|
48
|
+
unless ENV["MOCHA_NO_DOCS"]
|
|
49
|
+
s.add_dependency("yard")
|
|
50
|
+
s.add_dependency("redcarpet", "~> 1")
|
|
51
|
+
end
|
|
45
52
|
end
|
|
46
53
|
end
|