mocha 0.11.4 → 0.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.
- data/README.rdoc +1 -1
- data/RELEASE.rdoc +8 -0
- data/Rakefile +2 -1
- data/gemfiles/Gemfile.minitest.2.11.0 +7 -0
- data/gemfiles/Gemfile.minitest.2.11.2 +7 -0
- data/lib/mocha.rb +1 -1
- data/lib/mocha/integration.rb +11 -5
- data/lib/mocha/integration/mini_test.rb +9 -4
- data/lib/mocha/integration/mini_test/version_2110_to_2111.rb +61 -0
- data/lib/mocha/integration/mini_test/version_2112_to_320.rb +64 -0
- data/lib/mocha/integration/mini_test/{version_230_to_262.rb → version_230_to_2101.rb} +2 -2
- data/lib/mocha/integration/test_unit.rb +3 -4
- data/lib/mocha/integration/test_unit/{gem_version_230_to_240.rb → gem_version_230_to_250.rb} +2 -2
- data/lib/mocha/version.rb +1 -1
- data/test/acceptance/parameter_matcher_test.rb +37 -0
- metadata +17 -13
data/README.rdoc
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
= Mocha {<img src="https://secure.travis-ci.org/
|
1
|
+
= Mocha {<img src="https://secure.travis-ci.org/freerange/mocha.png" />}[http://travis-ci.org/freerange/mocha]
|
2
2
|
|
3
3
|
Mocha is a library for mocking and stubbing using a syntax like that of {JMock}[http://www.jmock.org].
|
4
4
|
|
data/RELEASE.rdoc
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
= 0.12.0
|
2
|
+
* Fail fast if neither Test::Unit nor MiniTest is loaded. Fixes #40.
|
3
|
+
* Officially support MiniTest up to v3.2.0 (still monkey-patching).
|
4
|
+
* Officially support test-unit v2.5.0 (still monkey-patching).
|
5
|
+
* Do not monkey-patch Test::Unit or MiniTest unless we *know* it's ok.
|
6
|
+
* Add acceptance tests to demonstrate using a block as a custom parameter matcher.
|
7
|
+
* Update Travis CI build status image to use the new build under the freerange account.
|
8
|
+
|
1
9
|
= 0.11.4
|
2
10
|
* Homepage has moved to http://gofreerange.com/mocha/docs.
|
3
11
|
|
data/Rakefile
CHANGED
@@ -116,7 +116,8 @@ task 'generate_docs' => ['clobber_yardoc', 'yardoc']
|
|
116
116
|
|
117
117
|
desc "Publish docs to Github (relies on running 'generate_docs' task and committing changes to master branch)"
|
118
118
|
task 'publish_docs' do
|
119
|
-
|
119
|
+
path = "/home/freerange/docs/mocha"
|
120
|
+
system %{ssh gofreerange.com "sudo rm -fr #{path} && mkdir -p #{path}" && scp -r doc/* gofreerange.com:#{path}}
|
120
121
|
end
|
121
122
|
|
122
123
|
task 'release' => 'default' do
|
data/lib/mocha.rb
CHANGED
data/lib/mocha/integration.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'mocha/options'
|
2
|
+
|
1
3
|
module Mocha
|
2
4
|
|
3
5
|
module Integration
|
@@ -9,22 +11,22 @@ module Mocha
|
|
9
11
|
if test_unit_testcase_defined? && !test_unit_testcase_inherits_from_miniunit_testcase?
|
10
12
|
patches << 'mocha/integration/test_unit'
|
11
13
|
end
|
12
|
-
if
|
14
|
+
if mini_test_testcase_defined?
|
13
15
|
patches << 'mocha/integration/mini_test'
|
14
16
|
end
|
15
17
|
patches
|
16
18
|
end
|
17
19
|
|
18
20
|
def test_unit_testcase_defined?
|
19
|
-
defined?(Test
|
21
|
+
defined?(Test::Unit::TestCase)
|
20
22
|
end
|
21
23
|
|
22
|
-
def
|
23
|
-
defined?(MiniTest
|
24
|
+
def mini_test_testcase_defined?
|
25
|
+
defined?(MiniTest::Unit::TestCase)
|
24
26
|
end
|
25
27
|
|
26
28
|
def test_unit_testcase_inherits_from_miniunit_testcase?
|
27
|
-
test_unit_testcase_defined? &&
|
29
|
+
test_unit_testcase_defined? && mini_test_testcase_defined? && Test::Unit::TestCase.ancestors.include?(MiniTest::Unit::TestCase)
|
28
30
|
end
|
29
31
|
|
30
32
|
end
|
@@ -33,6 +35,10 @@ module Mocha
|
|
33
35
|
|
34
36
|
end
|
35
37
|
|
38
|
+
unless Mocha::Integration.monkey_patches.any? || $mocha_options["skip_integration"]
|
39
|
+
raise "Test::Unit or MiniTest must be loaded *before* Mocha (use MOCHA_OPTIONS=skip_integration if you know what you are doing)."
|
40
|
+
end
|
41
|
+
|
36
42
|
Mocha::Integration.monkey_patches.each do |patch|
|
37
43
|
require patch
|
38
44
|
end
|
@@ -10,7 +10,9 @@ if !MiniTest::Unit::TestCase.ancestors.include?(Mocha::API)
|
|
10
10
|
require 'mocha/integration/mini_test/version_142_to_172'
|
11
11
|
require 'mocha/integration/mini_test/version_200'
|
12
12
|
require 'mocha/integration/mini_test/version_201_to_222'
|
13
|
-
require 'mocha/integration/mini_test/
|
13
|
+
require 'mocha/integration/mini_test/version_230_to_2101'
|
14
|
+
require 'mocha/integration/mini_test/version_2110_to_2111'
|
15
|
+
require 'mocha/integration/mini_test/version_2112_to_320'
|
14
16
|
|
15
17
|
module MiniTest
|
16
18
|
class Unit
|
@@ -41,9 +43,12 @@ if !MiniTest::Unit::TestCase.ancestors.include?(Mocha::API)
|
|
41
43
|
include Mocha::Integration::MiniTest::Version200
|
42
44
|
elsif Gem::Requirement.new('>= 2.0.1', '<= 2.2.2').satisfied_by?(mini_test_version)
|
43
45
|
include Mocha::Integration::MiniTest::Version201To222
|
44
|
-
elsif Gem::Requirement.new('>= 2.3.0').satisfied_by?(mini_test_version)
|
45
|
-
|
46
|
-
|
46
|
+
elsif Gem::Requirement.new('>= 2.3.0', '<= 2.10.1').satisfied_by?(mini_test_version)
|
47
|
+
include Mocha::Integration::MiniTest::Version230To2101
|
48
|
+
elsif Gem::Requirement.new('>= 2.11.0', '<= 2.11.1').satisfied_by?(mini_test_version)
|
49
|
+
include Mocha::Integration::MiniTest::Version2110To2111
|
50
|
+
elsif Gem::Requirement.new('>= 2.11.2', '<= 3.2.0').satisfied_by?(mini_test_version)
|
51
|
+
include Mocha::Integration::MiniTest::Version2112To320
|
47
52
|
else
|
48
53
|
$stderr.puts "*** No Mocha integration for MiniTest version ***" if $mocha_options['debug']
|
49
54
|
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'mocha/integration/mini_test/assertion_counter'
|
2
|
+
require 'mocha/expectation_error'
|
3
|
+
|
4
|
+
module Mocha
|
5
|
+
|
6
|
+
module Integration
|
7
|
+
|
8
|
+
module MiniTest
|
9
|
+
|
10
|
+
module Version2110To2111
|
11
|
+
def self.included(mod)
|
12
|
+
$stderr.puts "Monkey patching MiniTest >= v2.11.0 <= v2.11.1" if $mocha_options['debug']
|
13
|
+
end
|
14
|
+
def run runner
|
15
|
+
trap 'INFO' do
|
16
|
+
time = runner.start_time ? Time.now - runner.start_time : 0
|
17
|
+
warn "%s#%s %.2fs" % [self.class, self.__name__, time]
|
18
|
+
runner.status $stderr
|
19
|
+
end if ::MiniTest::Unit::TestCase::SUPPORTS_INFO_SIGNAL
|
20
|
+
|
21
|
+
assertion_counter = AssertionCounter.new(self)
|
22
|
+
result = ""
|
23
|
+
begin
|
24
|
+
begin
|
25
|
+
@passed = nil
|
26
|
+
self.before_setup
|
27
|
+
self.setup
|
28
|
+
self.after_setup
|
29
|
+
self.run_test self.__name__
|
30
|
+
mocha_verify(assertion_counter)
|
31
|
+
result = "." unless io?
|
32
|
+
@passed = true
|
33
|
+
rescue *::MiniTest::Unit::TestCase::PASSTHROUGH_EXCEPTIONS
|
34
|
+
raise
|
35
|
+
rescue Exception => e
|
36
|
+
@passed = false
|
37
|
+
result = runner.puke self.class, self.__name__, Mocha::Integration::MiniTest.translate(e)
|
38
|
+
ensure
|
39
|
+
%w{ before_teardown teardown after_teardown }.each do |hook|
|
40
|
+
begin
|
41
|
+
self.send hook
|
42
|
+
rescue *::MiniTest::Unit::TestCase::PASSTHROUGH_EXCEPTIONS
|
43
|
+
raise
|
44
|
+
rescue Exception => e
|
45
|
+
result = runner.puke self.class, self.__name__, Mocha::Integration::MiniTest.translate(e)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
trap 'INFO', 'DEFAULT' if ::MiniTest::Unit::TestCase::SUPPORTS_INFO_SIGNAL
|
49
|
+
end
|
50
|
+
ensure
|
51
|
+
mocha_teardown
|
52
|
+
end
|
53
|
+
result
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'mocha/integration/mini_test/assertion_counter'
|
2
|
+
require 'mocha/expectation_error'
|
3
|
+
|
4
|
+
module Mocha
|
5
|
+
|
6
|
+
module Integration
|
7
|
+
|
8
|
+
module MiniTest
|
9
|
+
|
10
|
+
module Version2112To320
|
11
|
+
def self.included(mod)
|
12
|
+
$stderr.puts "Monkey patching MiniTest >= v2.11.2 <= v3.2.0" if $mocha_options['debug']
|
13
|
+
end
|
14
|
+
def run runner
|
15
|
+
trap "INFO" do
|
16
|
+
runner.report.each_with_index do |msg, i|
|
17
|
+
warn "\n%3d) %s" % [i + 1, msg]
|
18
|
+
end
|
19
|
+
warn ''
|
20
|
+
time = runner.start_time ? Time.now - runner.start_time : 0
|
21
|
+
warn "Current Test: %s#%s %.2fs" % [self.class, self.__name__, time]
|
22
|
+
runner.status $stderr
|
23
|
+
end if ::MiniTest::Unit::TestCase::SUPPORTS_INFO_SIGNAL
|
24
|
+
assertion_counter = AssertionCounter.new(self)
|
25
|
+
result = ""
|
26
|
+
begin
|
27
|
+
begin
|
28
|
+
@passed = nil
|
29
|
+
self.before_setup
|
30
|
+
self.setup
|
31
|
+
self.after_setup
|
32
|
+
self.run_test self.__name__
|
33
|
+
mocha_verify(assertion_counter)
|
34
|
+
result = "." unless io?
|
35
|
+
@passed = true
|
36
|
+
rescue *::MiniTest::Unit::TestCase::PASSTHROUGH_EXCEPTIONS
|
37
|
+
raise
|
38
|
+
rescue Exception => e
|
39
|
+
@passed = false
|
40
|
+
result = runner.puke self.class, self.__name__, Mocha::Integration::MiniTest.translate(e)
|
41
|
+
ensure
|
42
|
+
%w{ before_teardown teardown after_teardown }.each do |hook|
|
43
|
+
begin
|
44
|
+
self.send hook
|
45
|
+
rescue *::MiniTest::Unit::TestCase::PASSTHROUGH_EXCEPTIONS
|
46
|
+
raise
|
47
|
+
rescue Exception => e
|
48
|
+
result = runner.puke self.class, self.__name__, Mocha::Integration::MiniTest.translate(e)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
trap 'INFO', 'DEFAULT' if ::MiniTest::Unit::TestCase::SUPPORTS_INFO_SIGNAL
|
52
|
+
end
|
53
|
+
ensure
|
54
|
+
mocha_teardown
|
55
|
+
end
|
56
|
+
result
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
@@ -7,9 +7,9 @@ module Mocha
|
|
7
7
|
|
8
8
|
module MiniTest
|
9
9
|
|
10
|
-
module
|
10
|
+
module Version230To2101
|
11
11
|
def self.included(mod)
|
12
|
-
$stderr.puts "Monkey patching MiniTest >= v2.3.0 <= v2.
|
12
|
+
$stderr.puts "Monkey patching MiniTest >= v2.3.0 <= v2.10.1" if $mocha_options['debug']
|
13
13
|
end
|
14
14
|
def run runner
|
15
15
|
trap 'INFO' do
|
@@ -6,7 +6,7 @@ if !Test::Unit::TestCase.ancestors.include?(Mocha::API)
|
|
6
6
|
require 'mocha/integration/test_unit/gem_version_200'
|
7
7
|
require 'mocha/integration/test_unit/gem_version_201_to_202'
|
8
8
|
require 'mocha/integration/test_unit/gem_version_203_to_220'
|
9
|
-
require 'mocha/integration/test_unit/
|
9
|
+
require 'mocha/integration/test_unit/gem_version_230_to_250'
|
10
10
|
require 'mocha/integration/test_unit/ruby_version_185_and_below'
|
11
11
|
require 'mocha/integration/test_unit/ruby_version_186_and_above'
|
12
12
|
|
@@ -43,9 +43,8 @@ if !Test::Unit::TestCase.ancestors.include?(Mocha::API)
|
|
43
43
|
include Mocha::Integration::TestUnit::GemVersion201To202
|
44
44
|
elsif Gem::Requirement.new('>= 2.0.3', '<= 2.2.0').satisfied_by?(test_unit_version)
|
45
45
|
include Mocha::Integration::TestUnit::GemVersion203To220
|
46
|
-
elsif Gem::Requirement.new('>= 2.3.0').satisfied_by?(test_unit_version)
|
47
|
-
|
48
|
-
include Mocha::Integration::TestUnit::GemVersion230To240
|
46
|
+
elsif Gem::Requirement.new('>= 2.3.0', '<= 2.5.0').satisfied_by?(test_unit_version)
|
47
|
+
include Mocha::Integration::TestUnit::GemVersion230To250
|
49
48
|
else
|
50
49
|
$stderr.puts "*** No Mocha integration for Test::Unit version ***" if $mocha_options['debug']
|
51
50
|
end
|
data/lib/mocha/integration/test_unit/{gem_version_230_to_240.rb → gem_version_230_to_250.rb}
RENAMED
@@ -8,9 +8,9 @@ module Mocha
|
|
8
8
|
|
9
9
|
module TestUnit
|
10
10
|
|
11
|
-
module
|
11
|
+
module GemVersion230To250
|
12
12
|
def self.included(mod)
|
13
|
-
$stderr.puts "Monkey patching Test::Unit gem >= v2.3.0 and <= v2.
|
13
|
+
$stderr.puts "Monkey patching Test::Unit gem >= v2.3.0 and <= v2.5.0" if $mocha_options['debug']
|
14
14
|
end
|
15
15
|
def run(result)
|
16
16
|
assertion_counter = AssertionCounter.new(result)
|
data/lib/mocha/version.rb
CHANGED
@@ -297,4 +297,41 @@ class ParameterMatcherTest < Test::Unit::TestCase
|
|
297
297
|
assert_passed(test_result)
|
298
298
|
end
|
299
299
|
|
300
|
+
def test_should_match_parameter_when_value_is_divisible_by_four
|
301
|
+
test_result = run_as_test do
|
302
|
+
mock = mock()
|
303
|
+
mock.expects(:method).with { |actual_value| actual_value % 4 == 0 }
|
304
|
+
mock.method(8)
|
305
|
+
end
|
306
|
+
assert_passed(test_result)
|
307
|
+
end
|
308
|
+
|
309
|
+
def test_should_not_match_parameter_when_value_is_not_divisible_by_four
|
310
|
+
test_result = run_as_test do
|
311
|
+
mock = mock()
|
312
|
+
mock.expects(:method).with { |actual_value| actual_value % 4 == 0 }
|
313
|
+
mock.method(9)
|
314
|
+
end
|
315
|
+
assert_failed(test_result)
|
316
|
+
end
|
317
|
+
|
318
|
+
def test_should_match_parameters_when_values_add_up_to_ten
|
319
|
+
test_result = run_as_test do
|
320
|
+
mock = mock()
|
321
|
+
matcher = lambda { |*values| values.inject(0) { |sum, n| sum + n } == 10 }
|
322
|
+
mock.expects(:method).with(&matcher)
|
323
|
+
mock.method(1, 2, 3, 4)
|
324
|
+
end
|
325
|
+
assert_passed(test_result)
|
326
|
+
end
|
327
|
+
|
328
|
+
def test_should_not_match_parameters_when_values_do_not_add_up_to_ten
|
329
|
+
test_result = run_as_test do
|
330
|
+
mock = mock()
|
331
|
+
matcher = lambda { |*values| values.inject(0) { |sum, n| sum + n } == 10 }
|
332
|
+
mock.expects(:method).with(&matcher)
|
333
|
+
mock.method(1, 2, 3, 4, 5)
|
334
|
+
end
|
335
|
+
assert_failed(test_result)
|
336
|
+
end
|
300
337
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mocha
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.12.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-07-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: metaclass
|
16
|
-
requirement: &
|
16
|
+
requirement: &70238404164500 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.0.1
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70238404164500
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
requirement: &
|
27
|
+
requirement: &70238404163180 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70238404163180
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: introspection
|
38
|
-
requirement: &
|
38
|
+
requirement: &70238404162720 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 0.0.1
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70238404162720
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: yard
|
49
|
-
requirement: &
|
49
|
+
requirement: &70238404162340 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70238404162340
|
58
58
|
description: Mocking and stubbing library with JMock/SchMock syntax, which allows
|
59
59
|
mocking and stubbing of methods on real (non-mock) classes.
|
60
60
|
email: mocha-developer@googlegroups.com
|
@@ -80,6 +80,8 @@ files:
|
|
80
80
|
- gemfiles/Gemfile.minitest.1.4.2
|
81
81
|
- gemfiles/Gemfile.minitest.2.0.0
|
82
82
|
- gemfiles/Gemfile.minitest.2.0.1
|
83
|
+
- gemfiles/Gemfile.minitest.2.11.0
|
84
|
+
- gemfiles/Gemfile.minitest.2.11.2
|
83
85
|
- gemfiles/Gemfile.minitest.2.3.0
|
84
86
|
- gemfiles/Gemfile.minitest.latest
|
85
87
|
- gemfiles/Gemfile.test-unit.2.0.0
|
@@ -115,13 +117,15 @@ files:
|
|
115
117
|
- lib/mocha/integration/mini_test/version_142_to_172.rb
|
116
118
|
- lib/mocha/integration/mini_test/version_200.rb
|
117
119
|
- lib/mocha/integration/mini_test/version_201_to_222.rb
|
118
|
-
- lib/mocha/integration/mini_test/
|
120
|
+
- lib/mocha/integration/mini_test/version_2110_to_2111.rb
|
121
|
+
- lib/mocha/integration/mini_test/version_2112_to_320.rb
|
122
|
+
- lib/mocha/integration/mini_test/version_230_to_2101.rb
|
119
123
|
- lib/mocha/integration/test_unit.rb
|
120
124
|
- lib/mocha/integration/test_unit/assertion_counter.rb
|
121
125
|
- lib/mocha/integration/test_unit/gem_version_200.rb
|
122
126
|
- lib/mocha/integration/test_unit/gem_version_201_to_202.rb
|
123
127
|
- lib/mocha/integration/test_unit/gem_version_203_to_220.rb
|
124
|
-
- lib/mocha/integration/test_unit/
|
128
|
+
- lib/mocha/integration/test_unit/gem_version_230_to_250.rb
|
125
129
|
- lib/mocha/integration/test_unit/ruby_version_185_and_below.rb
|
126
130
|
- lib/mocha/integration/test_unit/ruby_version_186_and_above.rb
|
127
131
|
- lib/mocha/is_a.rb
|
@@ -306,7 +310,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
306
310
|
version: '0'
|
307
311
|
segments:
|
308
312
|
- 0
|
309
|
-
hash: -
|
313
|
+
hash: -586468752341133139
|
310
314
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
311
315
|
none: false
|
312
316
|
requirements:
|