minitest 2.11.0 → 2.11.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.tar.gz.sig CHANGED
Binary file
@@ -1,3 +1,10 @@
1
+ === 2.11.1 / 2012-02-01
2
+
3
+ * 2 bug fixes:
4
+
5
+ * Improved description for --name argument (drd)
6
+ * Ensure Mock#expect's expected args is an Array. (mperham)
7
+
1
8
  === 2.11.0 / 2012-01-25
2
9
 
3
10
  * 2 minor enhancements:
@@ -19,8 +19,8 @@ module MiniTest
19
19
  end
20
20
 
21
21
  def initialize # :nodoc:
22
- @expected_calls = {}
23
- @actual_calls = Hash.new {|h,k| h[k] = [] }
22
+ @expected_calls = Hash.new { |calls, name| calls[name] = [] }
23
+ @actual_calls = Hash.new { |calls, name| calls[name] = [] }
24
24
  end
25
25
 
26
26
  ##
@@ -45,7 +45,8 @@ module MiniTest
45
45
  # @mock.verify # => raises MockExpectationError
46
46
 
47
47
  def expect(name, retval, args=[])
48
- @expected_calls[name] = { :retval => retval, :args => args }
48
+ raise ArgumentError, "args must be an array" unless Array === args
49
+ @expected_calls[name] << { :retval => retval, :args => args }
49
50
  self
50
51
  end
51
52
 
@@ -55,36 +56,47 @@ module MiniTest
55
56
  # expected.
56
57
 
57
58
  def verify
58
- @expected_calls.each_key do |name|
59
- expected = @expected_calls[name]
60
- msg1 = "expected #{name}, #{expected.inspect}"
61
- msg2 = "#{msg1}, got #{@actual_calls[name].inspect}"
62
-
63
- raise MockExpectationError, msg2 if
64
- @actual_calls.has_key? name and
65
- not @actual_calls[name].include?(expected)
66
-
67
- raise MockExpectationError, msg1 unless
68
- @actual_calls.has_key? name and @actual_calls[name].include?(expected)
59
+ @expected_calls.each do |name, calls|
60
+ calls.each do |expected|
61
+ msg1 = "expected #{name}, #{expected.inspect}"
62
+ msg2 = "#{msg1}, got #{@actual_calls[name].inspect}"
63
+
64
+ raise MockExpectationError, msg2 if
65
+ @actual_calls.has_key? name and
66
+ not @actual_calls[name].include?(expected)
67
+
68
+ raise MockExpectationError, msg1 unless
69
+ @actual_calls.has_key? name and @actual_calls[name].include?(expected)
70
+ end
69
71
  end
70
72
  true
71
73
  end
72
74
 
73
75
  def method_missing(sym, *args) # :nodoc:
74
- expected = @expected_calls[sym]
75
-
76
- unless expected then
76
+ unless @expected_calls.has_key?(sym) then
77
77
  raise NoMethodError, "unmocked method %p, expected one of %p" %
78
78
  [sym, @expected_calls.keys.sort_by(&:to_s)]
79
79
  end
80
80
 
81
- expected_args, retval = expected[:args], expected[:retval]
81
+ expected_calls = @expected_calls[sym].select { |call| call[:args].size == args.size }
82
+
83
+ if expected_calls.empty?
84
+ arg_sizes = @expected_calls[sym].map { |call| call[:args].size }.uniq.sort
85
+ raise ArgumentError, "mocked method %p expects %s arguments, got %d" %
86
+ [sym, arg_sizes.join('/'), args.size]
87
+ end
88
+
89
+ expected_call = expected_calls.find do |call|
90
+ call[:args].zip(args).all? { |mod, a| mod === a or mod == a }
91
+ end
82
92
 
83
- unless expected_args.size == args.size
84
- raise ArgumentError, "mocked method %p expects %d arguments, got %d" %
85
- [sym, expected[:args].size, args.size]
93
+ unless expected_call
94
+ raise MockExpectationError, "mocked method %p called with unexpected arguments %p" %
95
+ [sym, args]
86
96
  end
87
97
 
98
+ expected_args, retval = expected_call[:args], expected_call[:retval]
99
+
88
100
  @actual_calls[sym] << {
89
101
  :retval => retval,
90
102
  :args => expected_args.zip(args).map { |mod, a| mod === a ? mod : a }
@@ -643,7 +643,7 @@ module MiniTest
643
643
  end
644
644
 
645
645
  class Unit # :nodoc:
646
- VERSION = "2.11.0" # :nodoc:
646
+ VERSION = "2.11.1" # :nodoc:
647
647
 
648
648
  attr_accessor :report, :failures, :errors, :skips # :nodoc:
649
649
  attr_accessor :test_count, :assertion_count # :nodoc:
@@ -893,7 +893,7 @@ module MiniTest
893
893
  options[:verbose] = true
894
894
  end
895
895
 
896
- opts.on '-n', '--name PATTERN', "Filter test names on pattern." do |a|
896
+ opts.on '-n', '--name PATTERN', "Filter test names on pattern (e.g. /foo/)" do |a|
897
897
  options[:filter] = a
898
898
  end
899
899
 
@@ -78,9 +78,15 @@ class TestMiniTestMock < MiniTest::Unit::TestCase
78
78
  @mock.meaning_of_life
79
79
  @mock.expect(:sum, 3, [1, 2])
80
80
 
81
- @mock.sum(2, 4)
81
+ assert_raises MockExpectationError do
82
+ @mock.sum(2, 4)
83
+ end
84
+ end
82
85
 
83
- util_verify_bad
86
+ def test_expect_with_non_array_args
87
+ assert_raises ArgumentError do
88
+ @mock.expect :blah, 3, false
89
+ end
84
90
  end
85
91
 
86
92
  def test_respond_appropriately
@@ -136,15 +142,19 @@ class TestMiniTestMock < MiniTest::Unit::TestCase
136
142
  def test_verify_raises_with_strict_args
137
143
  mock = MiniTest::Mock.new
138
144
  mock.expect :strict_expectation, true, [2]
139
- mock.strict_expectation 1
140
145
 
141
- util_verify_bad
146
+ assert_raises MockExpectationError do
147
+ mock.strict_expectation 1
148
+ end
142
149
  end
143
150
 
144
151
  def test_verify_shows_the_actual_arguments_in_the_message
145
152
  mock = MiniTest::Mock.new
146
153
  mock.expect :capitalized, true, ["a"]
154
+ mock.expect :capitalized, true, ["b"]
155
+
147
156
  mock.capitalized "b"
157
+
148
158
  e = assert_raises MockExpectationError do
149
159
  mock.verify
150
160
  end
@@ -156,6 +166,27 @@ class TestMiniTestMock < MiniTest::Unit::TestCase
156
166
  assert_equal expected, e.message
157
167
  end
158
168
 
169
+ def test_same_method_expects_are_verified_when_all_called
170
+ mock = MiniTest::Mock.new
171
+ mock.expect :foo, nil, [:bar]
172
+ mock.expect :foo, nil, [:baz]
173
+
174
+ mock.foo :bar
175
+ mock.foo :baz
176
+
177
+ assert mock.verify
178
+ end
179
+
180
+ def test_same_method_expects_blow_up_when_not_all_called
181
+ mock = MiniTest::Mock.new
182
+ mock.expect :foo, nil, [:bar]
183
+ mock.expect :foo, nil, [:baz]
184
+
185
+ mock.foo :baz
186
+
187
+ assert_raises(MockExpectationError) { mock.verify }
188
+ end
189
+
159
190
  def util_verify_bad
160
191
  assert_raises MockExpectationError do
161
192
  @mock.verify
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minitest
3
3
  version: !ruby/object:Gem::Version
4
- hash: 35
4
+ hash: 33
5
5
  prerelease:
6
6
  segments:
7
7
  - 2
8
8
  - 11
9
- - 0
10
- version: 2.11.0
9
+ - 1
10
+ version: 2.11.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ryan Davis
@@ -36,7 +36,7 @@ cert_chain:
36
36
  FBHgymkyj/AOSqKRIpXPhjC6
37
37
  -----END CERTIFICATE-----
38
38
 
39
- date: 2012-01-25 00:00:00 Z
39
+ date: 2012-02-01 00:00:00 Z
40
40
  dependencies:
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rdoc
metadata.gz.sig CHANGED
Binary file