mocha 0.11.4 → 0.12.0
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|