flexmock 1.3.0 → 1.3.1
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/Gemfile +5 -2
- data/Gemfile.lock +15 -16
- data/README.md +22 -7
- data/TAGS +456 -2457
- data/doc/index.rdoc +1 -1
- data/doc/releases/flexmock-1.3.1.rdoc +171 -0
- data/lib/flexmock/core.rb +5 -0
- data/lib/flexmock/core_class_methods.rb +1 -1
- data/lib/flexmock/default_framework_adapter.rb +2 -2
- data/lib/flexmock/explicit_needed.rb +5 -1
- data/lib/flexmock/mock_container.rb +5 -1
- data/lib/flexmock/partial_mock.rb +5 -0
- data/lib/flexmock/rspec.rb +2 -2
- data/lib/flexmock/test_unit_integration.rb +3 -3
- data/lib/flexmock/validators.rb +26 -28
- data/lib/flexmock/version.rb +1 -1
- data/test/aliasing_test.rb +49 -42
- data/test/based_partials_test.rb +51 -0
- data/test/default_framework_adapter_test.rb +4 -4
- data/test/partial_mock_test.rb +15 -0
- data/test/spys_test.rb +7 -7
- data/test/test_setup.rb +8 -2
- metadata +13 -13
@@ -0,0 +1,51 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
#---
|
4
|
+
# Copyright 2003-2012 by Jim Weirich (jim.weirich@gmail.com).
|
5
|
+
# All rights reserved.
|
6
|
+
|
7
|
+
# Permission is granted for use, copying, modification, distribution,
|
8
|
+
# and distribution of modified versions of this work as long as the
|
9
|
+
# above copyright notice is included.
|
10
|
+
#+++
|
11
|
+
|
12
|
+
require 'test/test_setup'
|
13
|
+
|
14
|
+
class BasedPartialsTest < Test::Unit::TestCase
|
15
|
+
include FlexMock::TestCase
|
16
|
+
|
17
|
+
def setup
|
18
|
+
super
|
19
|
+
FlexMock.partials_are_based = true
|
20
|
+
end
|
21
|
+
|
22
|
+
def teardown
|
23
|
+
FlexMock.partials_are_based = false
|
24
|
+
super
|
25
|
+
end
|
26
|
+
|
27
|
+
class Dog
|
28
|
+
def bark
|
29
|
+
:woof
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_based_partials_allow_stubbing_defined_methods
|
34
|
+
dog = Dog.new
|
35
|
+
flexmock(dog).should_receive(:bark => :mock_value)
|
36
|
+
assert_equal :mock_value, dog.bark
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_based_partials_disallow_stubbing_undefined_methods
|
40
|
+
dog = Dog.new
|
41
|
+
assert_raise(NoMethodError, /cannot stub.*wag.*explicitly/) do
|
42
|
+
flexmock(dog).should_receive(:wag => :mock_value)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_based_partials_allow_explicitly_stubbing_undefined_methods
|
47
|
+
dog = Dog.new
|
48
|
+
flexmock(dog).should_receive(:wag).explicitly.and_return(:mock_value)
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
@@ -18,15 +18,15 @@ class TestFlexmockDefaultFrameworkAdapter < Test::Unit::TestCase
|
|
18
18
|
|
19
19
|
def test_assert_block_raises_exception
|
20
20
|
assert_raise(FlexMock::DefaultFrameworkAdapter::AssertionFailedError) {
|
21
|
-
@adapter.
|
21
|
+
@adapter.make_assertion("failure message") { false }
|
22
22
|
}
|
23
23
|
end
|
24
24
|
|
25
|
-
def
|
26
|
-
@adapter.
|
25
|
+
def test_make_assertion_doesnt_raise_exception
|
26
|
+
@adapter.make_assertion("failure message") { true }
|
27
27
|
end
|
28
28
|
|
29
|
-
def
|
29
|
+
def test_make_assertion_doesnt_raise_exception
|
30
30
|
@adapter.assert_equal("a", "a", "no message")
|
31
31
|
end
|
32
32
|
|
data/test/partial_mock_test.rb
CHANGED
@@ -400,6 +400,21 @@ class TestStubbing < Test::Unit::TestCase
|
|
400
400
|
assert_equal :hiss, dog.meow
|
401
401
|
end
|
402
402
|
|
403
|
+
def test_partial_mocks_allow_stubbing_defined_methods_when_using_on
|
404
|
+
dog = Dog.new
|
405
|
+
flexmock(dog, :on, Dog)
|
406
|
+
dog.should_receive(:bark).and_return(:grrr)
|
407
|
+
assert_equal :grrr, dog.bark
|
408
|
+
end
|
409
|
+
|
410
|
+
def test_partial_mocks_disallow_stubbing_undefined_methods_when_using_on
|
411
|
+
dog = Dog.new
|
412
|
+
flexmock(dog, :on, Dog)
|
413
|
+
assert_raise(NoMethodError, /meow.*explicitly/) do
|
414
|
+
dog.should_receive(:meow).and_return(:something)
|
415
|
+
end
|
416
|
+
end
|
417
|
+
|
403
418
|
# The following test was suggested by Pat Maddox for the RSpec
|
404
419
|
# mocks. Evidently the (poorly implemented) == method caused issues
|
405
420
|
# with RSpec Mock's internals. I'm just double checking for any
|
data/test/spys_test.rb
CHANGED
@@ -93,7 +93,7 @@ class TestSpys < Test::Unit::TestCase
|
|
93
93
|
def test_spy_accepts_correct_additional_validations
|
94
94
|
@spy.foo(2)
|
95
95
|
is_even = proc { |n| assert_equal 0, n%2 }
|
96
|
-
assert_spy_called @spy, { and
|
96
|
+
assert_spy_called @spy, { :and => is_even }, :foo, Integer
|
97
97
|
end
|
98
98
|
|
99
99
|
def test_spy_accepts_multiple_additional_validations_first_failing
|
@@ -101,7 +101,7 @@ class TestSpys < Test::Unit::TestCase
|
|
101
101
|
is_two = proc { |n| assert_equal 2, n }
|
102
102
|
is_even = proc { |n| assert_equal 0, n%2 }
|
103
103
|
assert_failed(/2.*expected but was.*4/mi) do
|
104
|
-
assert_spy_called @spy, { and
|
104
|
+
assert_spy_called @spy, { :and => [is_two, is_even] }, :foo, Integer
|
105
105
|
end
|
106
106
|
end
|
107
107
|
|
@@ -110,7 +110,7 @@ class TestSpys < Test::Unit::TestCase
|
|
110
110
|
is_even = proc { |n| assert_equal 0, n%2 }
|
111
111
|
is_two = proc { |n| assert_equal 2, n }
|
112
112
|
assert_failed(/2.*expected but was.*4/mi) do
|
113
|
-
assert_spy_called @spy, { and
|
113
|
+
assert_spy_called @spy, { :and => [is_even, is_two] }, :foo, Integer
|
114
114
|
end
|
115
115
|
end
|
116
116
|
|
@@ -118,7 +118,7 @@ class TestSpys < Test::Unit::TestCase
|
|
118
118
|
@spy.foo(3)
|
119
119
|
is_even = proc { |n| assert_equal 0, n%2 }
|
120
120
|
assert_failed(/0.*expected but was.*1/mi) do
|
121
|
-
assert_spy_called @spy, { and
|
121
|
+
assert_spy_called @spy, { :and => is_even }, :foo, Integer
|
122
122
|
end
|
123
123
|
end
|
124
124
|
|
@@ -128,7 +128,7 @@ class TestSpys < Test::Unit::TestCase
|
|
128
128
|
@spy.foo(4)
|
129
129
|
is_even = proc { |n| assert_equal 0, n%2 }
|
130
130
|
assert_failed(/0.*expected but was.*1/mi) do
|
131
|
-
assert_spy_called @spy, { and
|
131
|
+
assert_spy_called @spy, { :and => is_even, :on => 2 }, :foo, Integer
|
132
132
|
end
|
133
133
|
end
|
134
134
|
|
@@ -136,11 +136,11 @@ class TestSpys < Test::Unit::TestCase
|
|
136
136
|
failed = false
|
137
137
|
begin
|
138
138
|
yield
|
139
|
-
rescue
|
139
|
+
rescue assertion_failed_error => ex
|
140
140
|
failed = true
|
141
141
|
assert_match message_pattern, ex.message
|
142
142
|
end
|
143
|
-
|
143
|
+
assert(failed, "Expected block to fail")
|
144
144
|
end
|
145
145
|
|
146
146
|
def test_spy_methods_can_be_stubbed
|
data/test/test_setup.rb
CHANGED
@@ -15,7 +15,6 @@ class FlexMock
|
|
15
15
|
# expected error message.
|
16
16
|
def assert_failure(options={}, &block)
|
17
17
|
message = options[:message]
|
18
|
-
no_location = options[:no_location]
|
19
18
|
ex = assert_raises(assertion_failed_error) { yield }
|
20
19
|
if message
|
21
20
|
case message
|
@@ -54,9 +53,10 @@ class FlexMock
|
|
54
53
|
loc_re = Regexp.compile(Regexp.quote(file))
|
55
54
|
end
|
56
55
|
|
56
|
+
|
57
57
|
if search_all
|
58
58
|
bts = ex.backtrace.join("\n")
|
59
|
-
|
59
|
+
assert_with_block("expected a backtrace line to match #{loc_re}\nBACKTRACE:\n#{bts}") {
|
60
60
|
ex.backtrace.any? { |bt| loc_re =~ bt }
|
61
61
|
}
|
62
62
|
else
|
@@ -65,5 +65,11 @@ class FlexMock
|
|
65
65
|
|
66
66
|
ex
|
67
67
|
end
|
68
|
+
|
69
|
+
def assert_with_block(msg=nil)
|
70
|
+
unless yield
|
71
|
+
assert(false, msg || "Expected block to yield true")
|
72
|
+
end
|
73
|
+
end
|
68
74
|
end
|
69
75
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flexmock
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-03-04 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: ! "\n FlexMock is a extremely simple mock object class compatible\n
|
15
15
|
\ with the Test::Unit framework. Although the FlexMock's\n interface is
|
@@ -21,6 +21,8 @@ extra_rdoc_files:
|
|
21
21
|
- doc/index.rdoc
|
22
22
|
- CHANGES
|
23
23
|
- doc/GoogleExample.rdoc
|
24
|
+
- doc/examples/rspec_examples_spec.rdoc
|
25
|
+
- doc/examples/test_unit_examples_test.rdoc
|
24
26
|
- doc/releases/flexmock-0.4.0.rdoc
|
25
27
|
- doc/releases/flexmock-0.4.1.rdoc
|
26
28
|
- doc/releases/flexmock-0.4.2.rdoc
|
@@ -46,15 +48,15 @@ extra_rdoc_files:
|
|
46
48
|
- doc/releases/flexmock-1.1.0.rdoc
|
47
49
|
- doc/releases/flexmock-1.2.0.rdoc
|
48
50
|
- doc/releases/flexmock-1.3.0.rdoc
|
49
|
-
- doc/
|
50
|
-
- doc/examples/test_unit_examples_test.rdoc
|
51
|
+
- doc/releases/flexmock-1.3.1.rdoc
|
51
52
|
files:
|
52
53
|
- CHANGES
|
53
54
|
- Gemfile
|
54
55
|
- Gemfile.lock
|
55
|
-
- Rakefile
|
56
56
|
- README.md
|
57
|
+
- Rakefile
|
57
58
|
- TAGS
|
59
|
+
- lib/flexmock.rb
|
58
60
|
- lib/flexmock/argument_matchers.rb
|
59
61
|
- lib/flexmock/argument_matching.rb
|
60
62
|
- lib/flexmock/argument_types.rb
|
@@ -74,11 +76,11 @@ files:
|
|
74
76
|
- lib/flexmock/object_extensions.rb
|
75
77
|
- lib/flexmock/ordering.rb
|
76
78
|
- lib/flexmock/partial_mock.rb
|
77
|
-
- lib/flexmock/rails/view_mocking.rb
|
78
79
|
- lib/flexmock/rails.rb
|
80
|
+
- lib/flexmock/rails/view_mocking.rb
|
79
81
|
- lib/flexmock/recorder.rb
|
80
|
-
- lib/flexmock/rspec/configure.rb
|
81
82
|
- lib/flexmock/rspec.rb
|
83
|
+
- lib/flexmock/rspec/configure.rb
|
82
84
|
- lib/flexmock/rspec_spy_matcher.rb
|
83
85
|
- lib/flexmock/spy_describers.rb
|
84
86
|
- lib/flexmock/symbol_extensions.rb
|
@@ -88,10 +90,10 @@ files:
|
|
88
90
|
- lib/flexmock/undefined.rb
|
89
91
|
- lib/flexmock/validators.rb
|
90
92
|
- lib/flexmock/version.rb
|
91
|
-
- lib/flexmock.rb
|
92
93
|
- test/aliasing_test.rb
|
93
94
|
- test/assert_spy_called_test.rb
|
94
95
|
- test/base_class_test.rb
|
96
|
+
- test/based_partials_test.rb
|
95
97
|
- test/container_methods_test.rb
|
96
98
|
- test/default_framework_adapter_test.rb
|
97
99
|
- test/demeter_mocking_test.rb
|
@@ -123,6 +125,8 @@ files:
|
|
123
125
|
- install.rb
|
124
126
|
- doc/index.rdoc
|
125
127
|
- doc/GoogleExample.rdoc
|
128
|
+
- doc/examples/rspec_examples_spec.rdoc
|
129
|
+
- doc/examples/test_unit_examples_test.rdoc
|
126
130
|
- doc/releases/flexmock-0.4.0.rdoc
|
127
131
|
- doc/releases/flexmock-0.4.1.rdoc
|
128
132
|
- doc/releases/flexmock-0.4.2.rdoc
|
@@ -148,8 +152,7 @@ files:
|
|
148
152
|
- doc/releases/flexmock-1.1.0.rdoc
|
149
153
|
- doc/releases/flexmock-1.2.0.rdoc
|
150
154
|
- doc/releases/flexmock-1.3.0.rdoc
|
151
|
-
- doc/
|
152
|
-
- doc/examples/test_unit_examples_test.rdoc
|
155
|
+
- doc/releases/flexmock-1.3.1.rdoc
|
153
156
|
homepage: https://github.com/jimweirich/flexmock
|
154
157
|
licenses: []
|
155
158
|
post_install_message:
|
@@ -167,9 +170,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
167
170
|
- - ! '>='
|
168
171
|
- !ruby/object:Gem::Version
|
169
172
|
version: '0'
|
170
|
-
segments:
|
171
|
-
- 0
|
172
|
-
hash: -2506978520909989178
|
173
173
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
174
174
|
none: false
|
175
175
|
requirements:
|