floehopper-mocha 0.9.4.20090128164727 → 0.9.5.20090201123802
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/RELEASE +7 -1
- data/Rakefile +13 -5
- data/lib/mocha/any_instance_method.rb +4 -3
- data/lib/mocha/class_method.rb +4 -3
- data/lib/mocha/expectation.rb +25 -0
- data/lib/mocha/mock.rb +1 -1
- data/test/acceptance/expected_invocation_count_test.rb +3 -3
- data/test/unit/expectation_test.rb +21 -0
- data/test/unit/mock_test.rb +7 -0
- metadata +2 -2
data/RELEASE
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
= 0.9.5 (93cad010345ce5d68f31422cfc32ed9dd6de13ec)
|
2
|
+
* Fixed Lighthouse bug #32 - stub_everything should mean mock responds to anything.
|
3
|
+
* Added Expectation#twice to improve readability. Tthanks to pull request from Celestino Gomes.
|
4
|
+
* In Ruby 1.9, requiring 'test/unit' loads a thin wrapper around MiniTest and Test::Unit::TestCase ends up inheriting from MiniTest::Unit::TestCase. So we need to avoid including the Mocha modules more than once to avoid nasty consequences. Thanks to Matthias Hennemeyer for help with this.
|
5
|
+
* Ruby 1.9 includes rake, but not rake/contrib. For the moment I've moved the sshpublisher require into the only rake task that needs it, so that I can at least run the tests in Ruby 1.9. It looks like I will need to build a rake/contrib gem or similar to get this working properly - http://intertwingly.net/blog/2008/01/07/Rake-Contrib-for-1-9
|
6
|
+
|
1
7
|
= 0.9.4 (8a59c6ff0f99f34b02bd99f19536a7893be2b340)
|
2
8
|
* Added mocha.gemspec file generated with Chad Woolley's new rake task, so that a floehopper-mocha gem will get built on GitHub.
|
3
9
|
* Add rake task to update mocha.gemspec with unique version, which will cause gem to be auto-built on github
|
@@ -5,7 +11,7 @@
|
|
5
11
|
* Removed deprecated gem autorequire.
|
6
12
|
|
7
13
|
= 0.9.3 (8219bb2d2881c8529c93fc21e97a11d01203c759)
|
8
|
-
* Added support for MiniTest thanks to
|
14
|
+
* Added support for MiniTest thanks to Jeff Smick.
|
9
15
|
* Fixed a possible bug with some of the non-default Configuration options relating to the argument to Object#respond_to?
|
10
16
|
* As per Jay Fields recommendations [1] and with further impetus from a talk at Ruby Manor, any methods added to core classes are now added by including a module. This means that Mocha is a better citizen of the Ruby world and it's behaviour is more easily extended. [1] http://blog.jayfields.com/2008/07/ruby-underuse-of-modules.html & http://blog.jayfields.com/2008/07/ruby-redefine-method-behavior.html
|
11
17
|
* Removed deprecated gem autorequire.
|
data/Rakefile
CHANGED
@@ -4,7 +4,7 @@ require 'rake/gempackagetask'
|
|
4
4
|
require 'rake/testtask'
|
5
5
|
|
6
6
|
module Mocha
|
7
|
-
VERSION = "0.9.
|
7
|
+
VERSION = "0.9.5"
|
8
8
|
end
|
9
9
|
|
10
10
|
desc "Run all tests"
|
@@ -83,10 +83,12 @@ Rake::RDocTask.new('rdoc') do |task|
|
|
83
83
|
'lib/mocha/stubbing_error.rb'
|
84
84
|
)
|
85
85
|
end
|
86
|
-
|
86
|
+
|
87
|
+
desc "Generate all documentation"
|
88
|
+
task 'generate_docs' => ['clobber_rdoc', 'rdoc', 'examples', 'agiledox.txt']
|
87
89
|
|
88
90
|
desc "Upload RDoc to RubyForge"
|
89
|
-
task '
|
91
|
+
task 'publish_docs' do
|
90
92
|
require 'rake/contrib/sshpublisher'
|
91
93
|
Rake::SshDirPublisher.new("jamesmead@rubyforge.org", "/var/www/gforge-projects/mocha", "doc").upload
|
92
94
|
end
|
@@ -168,7 +170,6 @@ task :update_gemspec do
|
|
168
170
|
end
|
169
171
|
end
|
170
172
|
|
171
|
-
|
172
173
|
task 'verify_user' do
|
173
174
|
raise "RUBYFORGE_USER environment variable not set!" unless ENV['RUBYFORGE_USER']
|
174
175
|
end
|
@@ -178,7 +179,7 @@ task 'verify_password' do
|
|
178
179
|
end
|
179
180
|
|
180
181
|
desc "Publish package files on RubyForge."
|
181
|
-
task 'publish_packages' => ['verify_user', 'verify_password', 'package'] do
|
182
|
+
task 'publish_packages' => ['verify_user', 'verify_password', 'clobber_package', 'package'] do
|
182
183
|
$:.unshift File.expand_path(File.join(File.dirname(__FILE__), "vendor", "meta_project-0.4.15", "lib"))
|
183
184
|
require 'meta_project'
|
184
185
|
require 'rake/contrib/xforge'
|
@@ -197,3 +198,10 @@ task 'publish_packages' => ['verify_user', 'verify_password', 'package'] do
|
|
197
198
|
release.release_notes = ''
|
198
199
|
end
|
199
200
|
end
|
201
|
+
|
202
|
+
desc "Do a full release."
|
203
|
+
task 'release' => ['default', 'generate_docs', 'publish_packages', 'publish_docs', 'update_gemspec'] do
|
204
|
+
puts
|
205
|
+
puts "*** Remember to commit newly generated gemspec after release ***"
|
206
|
+
puts
|
207
|
+
end
|
@@ -17,7 +17,7 @@ module Mocha
|
|
17
17
|
def hide_original_method
|
18
18
|
if method_exists?(method)
|
19
19
|
begin
|
20
|
-
stubbee.
|
20
|
+
stubbee.send(:alias_method, hidden_method, method)
|
21
21
|
rescue NameError
|
22
22
|
# deal with nasties like ActiveRecord::Associations::AssociationProxy
|
23
23
|
end
|
@@ -29,13 +29,14 @@ module Mocha
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def remove_new_method
|
32
|
-
stubbee.
|
32
|
+
stubbee.send(:remove_method, method)
|
33
33
|
end
|
34
34
|
|
35
35
|
def restore_original_method
|
36
36
|
if method_exists?(hidden_method)
|
37
37
|
begin
|
38
|
-
stubbee.
|
38
|
+
stubbee.send(:alias_method, method, hidden_method)
|
39
|
+
stubbee.send(:remove_method, hidden_method)
|
39
40
|
rescue NameError
|
40
41
|
# deal with nasties like ActiveRecord::Associations::AssociationProxy
|
41
42
|
end
|
data/lib/mocha/class_method.rb
CHANGED
@@ -29,7 +29,7 @@ module Mocha
|
|
29
29
|
def hide_original_method
|
30
30
|
if method_exists?(method)
|
31
31
|
begin
|
32
|
-
stubbee.__metaclass__.
|
32
|
+
stubbee.__metaclass__.send(:alias_method, hidden_method, method)
|
33
33
|
rescue NameError
|
34
34
|
# deal with nasties like ActiveRecord::Associations::AssociationProxy
|
35
35
|
end
|
@@ -41,13 +41,14 @@ module Mocha
|
|
41
41
|
end
|
42
42
|
|
43
43
|
def remove_new_method
|
44
|
-
stubbee.__metaclass__.
|
44
|
+
stubbee.__metaclass__.send(:remove_method, method)
|
45
45
|
end
|
46
46
|
|
47
47
|
def restore_original_method
|
48
48
|
if method_exists?(hidden_method)
|
49
49
|
begin
|
50
|
-
stubbee.__metaclass__.
|
50
|
+
stubbee.__metaclass__.send(:alias_method, method, hidden_method)
|
51
|
+
stubbee.__metaclass__.send(:remove_method, hidden_method)
|
51
52
|
rescue NameError
|
52
53
|
# deal with nasties like ActiveRecord::Associations::AssociationProxy
|
53
54
|
end
|
data/lib/mocha/expectation.rb
CHANGED
@@ -43,6 +43,31 @@ module Mocha # :nodoc:
|
|
43
43
|
self
|
44
44
|
end
|
45
45
|
|
46
|
+
# :call-seq: twice() -> expectation
|
47
|
+
#
|
48
|
+
# Modifies expectation so that the expected method must be called exactly twice.
|
49
|
+
# object = mock()
|
50
|
+
# object.expects(:expected_method).twice
|
51
|
+
# object.expected_method
|
52
|
+
# object.expected_method
|
53
|
+
# # => verify succeeds
|
54
|
+
#
|
55
|
+
# object = mock()
|
56
|
+
# object.expects(:expected_method).twice
|
57
|
+
# object.expected_method
|
58
|
+
# object.expected_method
|
59
|
+
# object.expected_method
|
60
|
+
# # => verify fails
|
61
|
+
#
|
62
|
+
# object = mock()
|
63
|
+
# object.expects(:expected_method).twice
|
64
|
+
# object.expected_method
|
65
|
+
# # => verify fails
|
66
|
+
def twice
|
67
|
+
@cardinality = Cardinality.exactly(2)
|
68
|
+
self
|
69
|
+
end
|
70
|
+
|
46
71
|
# :call-seq: once() -> expectation
|
47
72
|
#
|
48
73
|
# Modifies expectation so that the expected method must be called exactly once.
|
data/lib/mocha/mock.rb
CHANGED
@@ -35,7 +35,7 @@ class ExpectedInvocationCountTest < Test::Unit::TestCase
|
|
35
35
|
def test_should_pass_if_method_is_expected_twice_and_is_called_twice
|
36
36
|
test_result = run_test do
|
37
37
|
mock = mock('mock')
|
38
|
-
mock.expects(:method).
|
38
|
+
mock.expects(:method).twice
|
39
39
|
2.times { mock.method }
|
40
40
|
end
|
41
41
|
assert_passed(test_result)
|
@@ -44,7 +44,7 @@ class ExpectedInvocationCountTest < Test::Unit::TestCase
|
|
44
44
|
def test_should_fail_if_method_is_expected_twice_but_is_called_once
|
45
45
|
test_result = run_test do
|
46
46
|
mock = mock('mock')
|
47
|
-
mock.expects(:method).
|
47
|
+
mock.expects(:method).twice
|
48
48
|
1.times { mock.method }
|
49
49
|
end
|
50
50
|
assert_failed(test_result)
|
@@ -54,7 +54,7 @@ class ExpectedInvocationCountTest < Test::Unit::TestCase
|
|
54
54
|
def test_should_fail_fast_if_method_is_expected_twice_but_is_called_three_times
|
55
55
|
test_result = run_test do
|
56
56
|
mock = mock('mock')
|
57
|
-
mock.expects(:method).
|
57
|
+
mock.expects(:method).twice
|
58
58
|
3.times { mock.method }
|
59
59
|
end
|
60
60
|
assert_failed(test_result)
|
@@ -253,6 +253,27 @@ class ExpectationTest < Test::Unit::TestCase
|
|
253
253
|
assert expectation.verified?
|
254
254
|
end
|
255
255
|
|
256
|
+
def test_should_not_verify_successfully_if_call_expected_twice_and_invoked_three_times
|
257
|
+
expectation = new_expectation.twice
|
258
|
+
expectation.invoke
|
259
|
+
expectation.invoke
|
260
|
+
expectation.invoke
|
261
|
+
assert !expectation.verified?
|
262
|
+
end
|
263
|
+
|
264
|
+
def test_should_not_verify_successfully_if_call_expected_twice_but_invoked_once
|
265
|
+
expectation = new_expectation.twice
|
266
|
+
expectation.invoke
|
267
|
+
assert !expectation.verified?
|
268
|
+
end
|
269
|
+
|
270
|
+
def test_should_verify_successfully_if_call_expected_twice_and_invoked_twice
|
271
|
+
expectation = new_expectation.twice
|
272
|
+
expectation.invoke
|
273
|
+
expectation.invoke
|
274
|
+
assert expectation.verified?
|
275
|
+
end
|
276
|
+
|
256
277
|
def test_should_verify_successfully_if_expected_call_was_made_at_least_once
|
257
278
|
expectation = new_expectation.at_least_once
|
258
279
|
3.times {expectation.invoke}
|
data/test/unit/mock_test.rb
CHANGED
@@ -292,4 +292,11 @@ class MockTest < Test::Unit::TestCase
|
|
292
292
|
assert_nothing_raised{ mock.respond_to?(:object_id, false) }
|
293
293
|
end
|
294
294
|
|
295
|
+
def test_should_respond_to_any_method_if_stubbing_everything
|
296
|
+
mock = Mock.new
|
297
|
+
mock.stub_everything
|
298
|
+
assert mock.respond_to?(:abc)
|
299
|
+
assert mock.respond_to?(:xyz)
|
300
|
+
end
|
301
|
+
|
295
302
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: floehopper-mocha
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.5.20090201123802
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Mead
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-01
|
12
|
+
date: 2009-02-01 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|