minitest 2.3.1 → 2.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data.tar.gz.sig +0 -0
- data/History.txt +16 -0
- data/README.txt +5 -4
- data/Rakefile +51 -0
- data/lib/minitest/mock.rb +27 -14
- data/lib/minitest/pride.rb +6 -7
- data/lib/minitest/spec.rb +215 -110
- data/lib/minitest/unit.rb +2 -2
- data/test/test_minitest_mock.rb +23 -5
- data/test/test_minitest_unit.rb +7 -1
- metadata +13 -29
- metadata.gz.sig +1 -3
data.tar.gz.sig
CHANGED
Binary file
|
data/History.txt
CHANGED
@@ -1,3 +1,19 @@
|
|
1
|
+
=== 2.4.0 / 2011-08-09
|
2
|
+
|
3
|
+
* 4 minor enhancements:
|
4
|
+
|
5
|
+
* Added simple examples for all expectations.
|
6
|
+
* Improved Mock error output when args mismatch.
|
7
|
+
* Moved all expectations from Object to MiniTest::Expectations.
|
8
|
+
* infect_with_assertions has been removed due to excessive clever
|
9
|
+
|
10
|
+
* 4 bug fixes:
|
11
|
+
|
12
|
+
* Fix Assertions#mu_pp to deal with immutable encoded strings. (ferrous26)
|
13
|
+
* Fix minitest/pride for MacRuby (ferrous26)
|
14
|
+
* Made error output less fancy so it is more readable
|
15
|
+
* Mock shouldn't undef === and inspect. (dgraham)
|
16
|
+
|
1
17
|
=== 2.3.1 / 2011-06-22
|
2
18
|
|
3
19
|
* 1 bug fix:
|
data/README.txt
CHANGED
@@ -1,6 +1,7 @@
|
|
1
|
-
= minitest
|
1
|
+
= minitest/{unit,spec,mock,benchmark}
|
2
2
|
|
3
|
-
|
3
|
+
home :: https://github.com/seattlerb/minitest
|
4
|
+
rdoc :: http://bfts.rubyforge.org/minitest
|
4
5
|
|
5
6
|
== DESCRIPTION:
|
6
7
|
|
@@ -24,7 +25,7 @@ minitest/mock by Steven Baker, is a beautifully tiny mock object
|
|
24
25
|
framework.
|
25
26
|
|
26
27
|
minitest/pride shows pride in testing and adds coloring to your test
|
27
|
-
output.
|
28
|
+
output. I guess it is an example of how to write IO pipes too. :P
|
28
29
|
|
29
30
|
minitest/unit is meant to have a clean implementation for language
|
30
31
|
implementors that need a minimal set of methods to bootstrap a working
|
@@ -247,7 +248,7 @@ the gem, but you'll need to activate the gem explicitly to use it:
|
|
247
248
|
|
248
249
|
(The MIT License)
|
249
250
|
|
250
|
-
Copyright (c) Ryan Davis,
|
251
|
+
Copyright (c) Ryan Davis, seattle.rb
|
251
252
|
|
252
253
|
Permission is hereby granted, free of charge, to any person obtaining
|
253
254
|
a copy of this software and associated documentation files (the
|
data/Rakefile
CHANGED
@@ -18,6 +18,57 @@ def loc dir
|
|
18
18
|
system "find #{dir} -name \\*.rb | xargs wc -l | tail -1"
|
19
19
|
end
|
20
20
|
|
21
|
+
desc "Find missing expectations"
|
22
|
+
task :specs do
|
23
|
+
$:.unshift "lib"
|
24
|
+
require "minitest/unit"
|
25
|
+
require "minitest/spec"
|
26
|
+
|
27
|
+
pos_prefix, neg_prefix = "must", "wont"
|
28
|
+
skip_re = /^(must|wont)$|wont_(throw)|must_(block|not?_|nothing|raise$)/x
|
29
|
+
dont_flip_re = /(must|wont)_(include|respond_to)/
|
30
|
+
|
31
|
+
map = {
|
32
|
+
/(must_throw)s/ => '\1',
|
33
|
+
/(?!not)_same/ => '_be_same_as',
|
34
|
+
/_in_/ => '_be_within_',
|
35
|
+
/_operator/ => '_be',
|
36
|
+
/_includes/ => '_include',
|
37
|
+
/(must|wont)_(.*_of|nil|silent|empty)/ => '\1_be_\2',
|
38
|
+
/must_raises/ => 'must_raise',
|
39
|
+
}
|
40
|
+
|
41
|
+
expectations = MiniTest::Expectations.public_instance_methods.map(&:to_s)
|
42
|
+
assertions = MiniTest::Assertions.public_instance_methods.map(&:to_s)
|
43
|
+
|
44
|
+
assertions.sort.each do |assertion|
|
45
|
+
expectation = case assertion
|
46
|
+
when /^assert/ then
|
47
|
+
assertion.sub(/^assert/, pos_prefix.to_s)
|
48
|
+
when /^refute/ then
|
49
|
+
assertion.sub(/^refute/, neg_prefix.to_s)
|
50
|
+
end
|
51
|
+
|
52
|
+
next unless expectation
|
53
|
+
next if expectation =~ skip_re
|
54
|
+
|
55
|
+
regexp, replacement = map.find { |re, _| expectation =~ re }
|
56
|
+
expectation.sub! regexp, replacement if replacement
|
57
|
+
|
58
|
+
next if expectations.include? expectation
|
59
|
+
|
60
|
+
args = [assertion, expectation].map(&:to_sym).map(&:inspect)
|
61
|
+
args << :reverse if expectation =~ dont_flip_re
|
62
|
+
|
63
|
+
puts
|
64
|
+
puts "##"
|
65
|
+
puts "# :method: #{expectation}"
|
66
|
+
puts "# See MiniTest::Assertions##{assertion}"
|
67
|
+
puts
|
68
|
+
puts "infect_an_assertion #{args.join ", "}"
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
21
72
|
desc "stupid line count"
|
22
73
|
task :dickwag do
|
23
74
|
puts
|
data/lib/minitest/mock.rb
CHANGED
@@ -11,8 +11,10 @@ module MiniTest
|
|
11
11
|
class Mock
|
12
12
|
alias :__respond_to? :respond_to?
|
13
13
|
|
14
|
-
|
15
|
-
|
14
|
+
skip_methods = %w(object_id respond_to_missing? inspect === to_s)
|
15
|
+
|
16
|
+
instance_methods.each do |m|
|
17
|
+
undef_method m unless skip_methods.include?(m.to_s) || m =~ /^__/
|
16
18
|
end
|
17
19
|
|
18
20
|
def initialize # :nodoc:
|
@@ -54,28 +56,39 @@ module MiniTest
|
|
54
56
|
def verify
|
55
57
|
@expected_calls.each_key do |name|
|
56
58
|
expected = @expected_calls[name]
|
57
|
-
|
58
|
-
|
59
|
+
msg1 = "expected #{name}, #{expected.inspect}"
|
60
|
+
msg2 = "#{msg1}, got #{@actual_calls[name].inspect}"
|
61
|
+
|
62
|
+
raise MockExpectationError, msg2 if
|
63
|
+
@actual_calls.has_key? name and
|
64
|
+
not @actual_calls[name].include?(expected)
|
65
|
+
|
66
|
+
raise MockExpectationError, msg1 unless
|
59
67
|
@actual_calls.has_key? name and @actual_calls[name].include?(expected)
|
60
68
|
end
|
61
69
|
true
|
62
70
|
end
|
63
71
|
|
64
72
|
def method_missing(sym, *args) # :nodoc:
|
65
|
-
|
66
|
-
|
67
|
-
|
73
|
+
expected = @expected_calls[sym]
|
74
|
+
|
75
|
+
unless expected then
|
76
|
+
raise NoMethodError, "unmocked method %p, expected one of %p" %
|
77
|
+
[sym, @expected_calls.keys.sort_by(&:to_s)]
|
68
78
|
end
|
69
79
|
|
70
|
-
|
71
|
-
|
72
|
-
|
80
|
+
expected_args, retval = expected[:args], expected[:retval]
|
81
|
+
|
82
|
+
unless expected_args.size == args.size
|
83
|
+
raise ArgumentError, "mocked method %p expects %d arguments, got %d" %
|
84
|
+
[sym, expected[:args].size, args.size]
|
73
85
|
end
|
74
86
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
87
|
+
@actual_calls[sym] << {
|
88
|
+
:retval => retval,
|
89
|
+
:args => expected_args.zip(args).map { |mod, a| mod if mod === a }
|
90
|
+
}
|
91
|
+
|
79
92
|
retval
|
80
93
|
end
|
81
94
|
|
data/lib/minitest/pride.rb
CHANGED
@@ -6,20 +6,19 @@ require "minitest/unit"
|
|
6
6
|
class PrideIO
|
7
7
|
attr_reader :io
|
8
8
|
|
9
|
-
# stolen from /System/Library/Perl/5.10.0/Term/ANSIColor.pm
|
10
|
-
COLORS = (31..36).to_a
|
11
|
-
CHARS = ["*"]
|
12
|
-
|
13
9
|
def initialize io
|
14
10
|
@io = io
|
15
|
-
|
16
|
-
@
|
11
|
+
# stolen from /System/Library/Perl/5.10.0/Term/ANSIColor.pm
|
12
|
+
@colors = (31..36).to_a
|
13
|
+
@size = @colors.size
|
14
|
+
@index = 0
|
17
15
|
end
|
18
16
|
|
19
17
|
def print o
|
20
18
|
case o
|
21
19
|
when "." then
|
22
|
-
io.print "\e[#{@colors
|
20
|
+
io.print "\e[#{@colors[@index % @size]}m*\e[0m"
|
21
|
+
@index += 1
|
23
22
|
when "E", "F" then
|
24
23
|
io.print "\e[41m\e[37m#{o}\e[0m"
|
25
24
|
else
|
data/lib/minitest/spec.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'minitest/unit'
|
4
4
|
|
5
|
-
class Module
|
5
|
+
class Module # :nodoc:
|
6
6
|
def infect_an_assertion meth, new_name, dont_flip = false # :nodoc:
|
7
7
|
# warn "%-22p -> %p %p" % [meth, new_name, dont_flip]
|
8
8
|
self.class_eval <<-EOM
|
@@ -17,39 +17,18 @@ class Module
|
|
17
17
|
end
|
18
18
|
|
19
19
|
##
|
20
|
-
#
|
21
|
-
#
|
22
|
-
# method is your friend. For an example of its usage see the bottom
|
23
|
-
# of minitest/spec.rb.
|
20
|
+
# infect_with_assertions has been removed due to excessive clever.
|
21
|
+
# Use infect_an_assertion directly instead.
|
24
22
|
|
25
23
|
def infect_with_assertions(pos_prefix, neg_prefix,
|
26
24
|
skip_re,
|
27
25
|
dont_flip_re = /\c0/,
|
28
26
|
map = {})
|
29
|
-
|
30
|
-
meth = meth.to_s
|
31
|
-
|
32
|
-
new_name = case meth
|
33
|
-
when /^assert/ then
|
34
|
-
meth.sub(/^assert/, pos_prefix.to_s)
|
35
|
-
when /^refute/ then
|
36
|
-
meth.sub(/^refute/, neg_prefix.to_s)
|
37
|
-
end
|
38
|
-
next unless new_name
|
39
|
-
next if new_name =~ skip_re
|
40
|
-
|
41
|
-
regexp, replacement = map.find { |re, _| new_name =~ re }
|
42
|
-
new_name.sub! regexp, replacement if replacement
|
43
|
-
|
44
|
-
puts "\n##\n# :method: #{new_name}\n# See MiniTest::Assertions##{meth}" if
|
45
|
-
$0 == __FILE__
|
46
|
-
|
47
|
-
infect_an_assertion meth, new_name, new_name =~ dont_flip_re
|
48
|
-
end
|
27
|
+
abort "infect_with_assertions is dead. Use infect_an_assertion directly"
|
49
28
|
end
|
50
29
|
end
|
51
30
|
|
52
|
-
module Kernel
|
31
|
+
module Kernel # :nodoc:
|
53
32
|
##
|
54
33
|
# Describe a series of expectations for a given target +desc+.
|
55
34
|
#
|
@@ -96,7 +75,7 @@ end
|
|
96
75
|
##
|
97
76
|
# MiniTest::Spec -- The faster, better, less-magical spec framework!
|
98
77
|
#
|
99
|
-
# For a list of expectations, see
|
78
|
+
# For a list of expectations, see MiniTest::Expectations.
|
100
79
|
|
101
80
|
class MiniTest::Spec < MiniTest::Unit::TestCase
|
102
81
|
##
|
@@ -136,6 +115,9 @@ class MiniTest::Spec < MiniTest::Unit::TestCase
|
|
136
115
|
@@current_spec
|
137
116
|
end
|
138
117
|
|
118
|
+
##
|
119
|
+
# Returns the children of this spec"
|
120
|
+
|
139
121
|
def self.children
|
140
122
|
@children ||= []
|
141
123
|
end
|
@@ -225,152 +207,275 @@ class MiniTest::Spec < MiniTest::Unit::TestCase
|
|
225
207
|
# :startdoc:
|
226
208
|
end
|
227
209
|
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
/_operator/ => '_be',
|
236
|
-
/_includes/ => '_include',
|
237
|
-
/(must|wont)_(.*_of|nil|silent|empty)/ => '\1_be_\2',
|
238
|
-
/must_raises/ => 'must_raise')
|
210
|
+
module MiniTest::Expectations
|
211
|
+
##
|
212
|
+
# See MiniTest::Assertions#assert_empty.
|
213
|
+
#
|
214
|
+
# collection.must_be_empty
|
215
|
+
#
|
216
|
+
# :method: must_be_empty
|
239
217
|
|
240
|
-
|
241
|
-
alias :must_be_close_to :must_be_within_delta
|
242
|
-
alias :wont_be_close_to :wont_be_within_delta
|
243
|
-
|
244
|
-
if $0 == __FILE__ then
|
245
|
-
{ "must" => "assert", "wont" => "refute" }.each do |a, b|
|
246
|
-
puts "\n"
|
247
|
-
puts "##"
|
248
|
-
puts "# :method: #{a}_be_close_to"
|
249
|
-
puts "# See MiniTest::Assertions##{b}_in_delta"
|
250
|
-
end
|
251
|
-
end
|
218
|
+
infect_an_assertion :assert_empty, :must_be_empty
|
252
219
|
|
253
220
|
##
|
254
|
-
#
|
255
|
-
#
|
221
|
+
# See MiniTest::Assertions#assert_equal
|
222
|
+
#
|
223
|
+
# a.must_equal b
|
224
|
+
#
|
225
|
+
# :method: must_equal
|
226
|
+
|
227
|
+
infect_an_assertion :assert_equal, :must_equal
|
256
228
|
|
257
229
|
##
|
258
|
-
# :method: must_be_close_to
|
259
230
|
# See MiniTest::Assertions#assert_in_delta
|
231
|
+
#
|
232
|
+
# n.must_be_close_to m [, delta]
|
233
|
+
#
|
234
|
+
# :method: must_be_within_delta
|
260
235
|
|
261
|
-
|
262
|
-
# :method: must_be_empty
|
263
|
-
# See MiniTest::Assertions#assert_empty
|
236
|
+
infect_an_assertion :assert_in_delta, :must_be_close_to
|
264
237
|
|
265
|
-
|
266
|
-
# :method: must_be_instance_of
|
267
|
-
# See MiniTest::Assertions#assert_instance_of
|
238
|
+
alias :must_be_within_delta :must_be_close_to
|
268
239
|
|
269
240
|
##
|
270
|
-
#
|
271
|
-
#
|
241
|
+
# See MiniTest::Assertions#assert_in_epsilon
|
242
|
+
#
|
243
|
+
# n.must_be_within_epsilon m [, epsilon]
|
244
|
+
#
|
245
|
+
# :method: must_be_within_epsilon
|
272
246
|
|
273
|
-
|
274
|
-
# :method: must_be_nil
|
275
|
-
# See MiniTest::Assertions#assert_nil
|
247
|
+
infect_an_assertion :assert_in_epsilon, :must_be_within_epsilon
|
276
248
|
|
277
249
|
##
|
278
|
-
#
|
279
|
-
#
|
250
|
+
# See MiniTest::Assertions#assert_includes
|
251
|
+
#
|
252
|
+
# collection.must_include obj
|
253
|
+
#
|
254
|
+
# :method: must_include
|
280
255
|
|
281
|
-
|
282
|
-
# :method: must_be_silent
|
283
|
-
# See MiniTest::Assertions#assert_silent
|
256
|
+
infect_an_assertion :assert_includes, :must_include, :reverse
|
284
257
|
|
285
258
|
##
|
286
|
-
#
|
287
|
-
#
|
259
|
+
# See MiniTest::Assertions#assert_instance_of
|
260
|
+
#
|
261
|
+
# obj.must_be_instance_of klass
|
262
|
+
#
|
263
|
+
# :method: must_be_instance_of
|
264
|
+
|
265
|
+
infect_an_assertion :assert_instance_of, :must_be_instance_of
|
288
266
|
|
289
267
|
##
|
290
|
-
#
|
291
|
-
#
|
268
|
+
# See MiniTest::Assertions#assert_kind_of
|
269
|
+
#
|
270
|
+
# obj.must_be_kind_of mod
|
271
|
+
#
|
272
|
+
# :method: must_be_kind_of
|
273
|
+
|
274
|
+
infect_an_assertion :assert_kind_of, :must_be_kind_of
|
292
275
|
|
293
276
|
##
|
294
|
-
#
|
295
|
-
#
|
277
|
+
# See MiniTest::Assertions#assert_match
|
278
|
+
#
|
279
|
+
# a.must_match b
|
280
|
+
#
|
281
|
+
# :method: must_match
|
282
|
+
|
283
|
+
infect_an_assertion :assert_match, :must_match
|
296
284
|
|
297
285
|
##
|
298
|
-
#
|
299
|
-
#
|
286
|
+
# See MiniTest::Assertions#assert_nil
|
287
|
+
#
|
288
|
+
# obj.must_be_nil
|
289
|
+
#
|
290
|
+
# :method: must_be_nil
|
291
|
+
|
292
|
+
infect_an_assertion :assert_nil, :must_be_nil
|
300
293
|
|
301
294
|
##
|
302
|
-
#
|
303
|
-
#
|
295
|
+
# See MiniTest::Assertions#assert_operator
|
296
|
+
#
|
297
|
+
# n.must_be :<=, 42
|
298
|
+
#
|
299
|
+
# :method: must_be
|
300
|
+
|
301
|
+
infect_an_assertion :assert_operator, :must_be
|
304
302
|
|
305
303
|
##
|
306
|
-
# :method: must_output
|
307
304
|
# See MiniTest::Assertions#assert_output
|
305
|
+
#
|
306
|
+
# proc { ... }.must_output out_or_nil [, err]
|
307
|
+
#
|
308
|
+
# :method: must_output
|
309
|
+
|
310
|
+
infect_an_assertion :assert_output, :must_output
|
308
311
|
|
309
312
|
##
|
310
|
-
# :method: must_raise
|
311
313
|
# See MiniTest::Assertions#assert_raises
|
314
|
+
#
|
315
|
+
# proc { ... }.must_raise exception
|
316
|
+
#
|
317
|
+
# :method: must_raise
|
318
|
+
|
319
|
+
infect_an_assertion :assert_raises, :must_raise
|
312
320
|
|
313
321
|
##
|
314
|
-
# :method: must_respond_to
|
315
322
|
# See MiniTest::Assertions#assert_respond_to
|
323
|
+
#
|
324
|
+
# obj.must_respond_to msg
|
325
|
+
#
|
326
|
+
# :method: must_respond_to
|
327
|
+
|
328
|
+
infect_an_assertion :assert_respond_to, :must_respond_to, :reverse
|
316
329
|
|
317
330
|
##
|
318
|
-
#
|
319
|
-
#
|
331
|
+
# See MiniTest::Assertions#assert_same
|
332
|
+
#
|
333
|
+
# a.must_be_same_as b
|
334
|
+
#
|
335
|
+
# :method: must_be_same_as
|
336
|
+
|
337
|
+
infect_an_assertion :assert_same, :must_be_same_as
|
320
338
|
|
321
339
|
##
|
322
|
-
#
|
323
|
-
#
|
340
|
+
# See MiniTest::Assertions#assert_send
|
341
|
+
# TODO: remove me
|
342
|
+
#
|
343
|
+
# a.must_send
|
344
|
+
#
|
345
|
+
# :method: must_send
|
346
|
+
|
347
|
+
infect_an_assertion :assert_send, :must_send
|
324
348
|
|
325
349
|
##
|
326
|
-
#
|
327
|
-
#
|
350
|
+
# See MiniTest::Assertions#assert_silent
|
351
|
+
#
|
352
|
+
# proc { ... }.must_be_silent
|
353
|
+
#
|
354
|
+
# :method: must_be_silent
|
355
|
+
|
356
|
+
infect_an_assertion :assert_silent, :must_be_silent
|
328
357
|
|
329
358
|
##
|
330
|
-
#
|
331
|
-
#
|
359
|
+
# See MiniTest::Assertions#assert_throws
|
360
|
+
#
|
361
|
+
# proc { ... }.must_throw sym
|
362
|
+
#
|
363
|
+
# :method: must_throw
|
364
|
+
|
365
|
+
infect_an_assertion :assert_throws, :must_throw
|
332
366
|
|
333
367
|
##
|
334
|
-
# :method: wont_be_empty
|
335
368
|
# See MiniTest::Assertions#refute_empty
|
369
|
+
#
|
370
|
+
# collection.wont_be_empty
|
371
|
+
#
|
372
|
+
# :method: wont_be_empty
|
373
|
+
|
374
|
+
infect_an_assertion :refute_empty, :wont_be_empty
|
336
375
|
|
337
376
|
##
|
338
|
-
#
|
339
|
-
#
|
377
|
+
# See MiniTest::Assertions#refute_equal
|
378
|
+
#
|
379
|
+
# a.wont_equal b
|
380
|
+
#
|
381
|
+
# :method: wont_equal
|
382
|
+
|
383
|
+
infect_an_assertion :refute_equal, :wont_equal
|
340
384
|
|
341
385
|
##
|
342
|
-
#
|
343
|
-
#
|
386
|
+
# See MiniTest::Assertions#refute_in_delta
|
387
|
+
#
|
388
|
+
# n.wont_be_close_to m [, delta]
|
389
|
+
#
|
390
|
+
# :method: wont_be_within_delta
|
391
|
+
|
392
|
+
infect_an_assertion :refute_in_delta, :wont_be_within_delta
|
393
|
+
|
394
|
+
alias :wont_be_close_to :wont_be_within_delta
|
395
|
+
# FIX: reverse aliases
|
344
396
|
|
345
397
|
##
|
346
|
-
#
|
347
|
-
#
|
398
|
+
# See MiniTest::Assertions#refute_in_epsilon
|
399
|
+
#
|
400
|
+
# n.wont_be_within_epsilon m [, epsilon]
|
401
|
+
#
|
402
|
+
# :method: wont_be_within_epsilon
|
403
|
+
|
404
|
+
infect_an_assertion :refute_in_epsilon, :wont_be_within_epsilon
|
348
405
|
|
349
406
|
##
|
350
|
-
#
|
351
|
-
#
|
407
|
+
# See MiniTest::Assertions#refute_includes
|
408
|
+
#
|
409
|
+
# collection.wont_include obj
|
410
|
+
#
|
411
|
+
# :method: wont_include
|
412
|
+
|
413
|
+
infect_an_assertion :refute_includes, :wont_include, :reverse
|
352
414
|
|
353
415
|
##
|
354
|
-
#
|
355
|
-
#
|
416
|
+
# See MiniTest::Assertions#refute_instance_of
|
417
|
+
#
|
418
|
+
# obj.wont_be_instance_of klass
|
419
|
+
#
|
420
|
+
# :method: wont_be_instance_of
|
421
|
+
|
422
|
+
infect_an_assertion :refute_instance_of, :wont_be_instance_of
|
356
423
|
|
357
424
|
##
|
358
|
-
#
|
359
|
-
#
|
425
|
+
# See MiniTest::Assertions#refute_kind_of
|
426
|
+
#
|
427
|
+
# obj.wont_be_kind_of mod
|
428
|
+
#
|
429
|
+
# :method: wont_be_kind_of
|
430
|
+
|
431
|
+
infect_an_assertion :refute_kind_of, :wont_be_kind_of
|
360
432
|
|
361
433
|
##
|
362
|
-
#
|
363
|
-
#
|
434
|
+
# See MiniTest::Assertions#refute_match
|
435
|
+
#
|
436
|
+
# a.wont_match b
|
437
|
+
#
|
438
|
+
# :method: wont_match
|
439
|
+
|
440
|
+
infect_an_assertion :refute_match, :wont_match
|
364
441
|
|
365
442
|
##
|
366
|
-
#
|
367
|
-
#
|
443
|
+
# See MiniTest::Assertions#refute_nil
|
444
|
+
#
|
445
|
+
# obj.wont_be_nil
|
446
|
+
#
|
447
|
+
# :method: wont_be_nil
|
448
|
+
|
449
|
+
infect_an_assertion :refute_nil, :wont_be_nil
|
368
450
|
|
369
451
|
##
|
370
|
-
#
|
371
|
-
#
|
452
|
+
# See MiniTest::Assertions#refute_operator
|
453
|
+
#
|
454
|
+
# n.wont_be :<=, 42
|
455
|
+
#
|
456
|
+
# :method: wont_be
|
457
|
+
|
458
|
+
infect_an_assertion :refute_operator, :wont_be
|
372
459
|
|
373
460
|
##
|
374
|
-
# :method: wont_respond_to
|
375
461
|
# See MiniTest::Assertions#refute_respond_to
|
462
|
+
#
|
463
|
+
# obj.wont_respond_to msg
|
464
|
+
#
|
465
|
+
# :method: wont_respond_to
|
466
|
+
|
467
|
+
infect_an_assertion :refute_respond_to, :wont_respond_to, :reverse
|
468
|
+
|
469
|
+
##
|
470
|
+
# See MiniTest::Assertions#refute_same
|
471
|
+
#
|
472
|
+
# a.wont_be_same_as b
|
473
|
+
#
|
474
|
+
# :method: wont_be_same_as
|
475
|
+
|
476
|
+
infect_an_assertion :refute_same, :wont_be_same_as
|
477
|
+
end
|
478
|
+
|
479
|
+
class Object
|
480
|
+
include MiniTest::Expectations
|
376
481
|
end
|
data/lib/minitest/unit.rb
CHANGED
@@ -146,7 +146,7 @@ module MiniTest
|
|
146
146
|
|
147
147
|
def mu_pp obj
|
148
148
|
s = obj.inspect
|
149
|
-
s = s.
|
149
|
+
s = s.encode Encoding.default_external if defined? Encoding
|
150
150
|
s
|
151
151
|
end
|
152
152
|
|
@@ -614,7 +614,7 @@ module MiniTest
|
|
614
614
|
end
|
615
615
|
|
616
616
|
class Unit
|
617
|
-
VERSION = "2.
|
617
|
+
VERSION = "2.4.0" # :nodoc:
|
618
618
|
|
619
619
|
attr_accessor :report, :failures, :errors, :skips # :nodoc:
|
620
620
|
attr_accessor :test_count, :assertion_count # :nodoc:
|
data/test/test_minitest_mock.rb
CHANGED
@@ -52,7 +52,25 @@ class TestMiniTestMock < MiniTest::Unit::TestCase
|
|
52
52
|
@mock.sum
|
53
53
|
end
|
54
54
|
|
55
|
-
assert_equal "mocked method
|
55
|
+
assert_equal "mocked method :sum expects 2 arguments, got 0", e.message
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_return_mock_does_not_raise
|
59
|
+
retval = MiniTest::Mock.new
|
60
|
+
mock = MiniTest::Mock.new
|
61
|
+
mock.expect(:foo, retval)
|
62
|
+
mock.foo
|
63
|
+
|
64
|
+
assert mock.verify
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_mock_args_does_not_raise
|
68
|
+
arg = MiniTest::Mock.new
|
69
|
+
mock = MiniTest::Mock.new
|
70
|
+
mock.expect(:foo, nil, [arg])
|
71
|
+
mock.foo(arg)
|
72
|
+
|
73
|
+
assert mock.verify
|
56
74
|
end
|
57
75
|
|
58
76
|
def test_blow_up_on_wrong_arguments
|
@@ -75,7 +93,7 @@ class TestMiniTestMock < MiniTest::Unit::TestCase
|
|
75
93
|
@mock.bar
|
76
94
|
end
|
77
95
|
|
78
|
-
expected = "unmocked method
|
96
|
+
expected = "unmocked method :bar, expected one of [:foo, :meaning_of_life]"
|
79
97
|
|
80
98
|
assert_equal expected, e.message
|
81
99
|
end
|
@@ -83,10 +101,10 @@ class TestMiniTestMock < MiniTest::Unit::TestCase
|
|
83
101
|
def test_assign_per_mock_return_values
|
84
102
|
a = MiniTest::Mock.new
|
85
103
|
b = MiniTest::Mock.new
|
86
|
-
|
104
|
+
|
87
105
|
a.expect(:foo, :a)
|
88
106
|
b.expect(:foo, :b)
|
89
|
-
|
107
|
+
|
90
108
|
assert_equal :a, a.foo
|
91
109
|
assert_equal :b, b.foo
|
92
110
|
end
|
@@ -102,7 +120,7 @@ class TestMiniTestMock < MiniTest::Unit::TestCase
|
|
102
120
|
@mock.expect :kind_of?, true, [Fixnum]
|
103
121
|
@mock.expect :==, true, [1]
|
104
122
|
|
105
|
-
assert @mock.kind_of?(Fixnum), "didn't mock :kind_of
|
123
|
+
assert @mock.kind_of?(Fixnum), "didn't mock :kind_of\?"
|
106
124
|
assert @mock == 1, "didn't mock :=="
|
107
125
|
end
|
108
126
|
|
data/test/test_minitest_unit.rb
CHANGED
@@ -6,6 +6,7 @@ MiniTest::Unit.autorun
|
|
6
6
|
|
7
7
|
module MyModule; end
|
8
8
|
class AnError < StandardError; include MyModule; end
|
9
|
+
class ImmutableString < String; def inspect; super.freeze; end; end
|
9
10
|
|
10
11
|
class TestMiniTestUnit < MiniTest::Unit::TestCase
|
11
12
|
pwd = Pathname.new(File.expand_path(Dir.pwd))
|
@@ -40,12 +41,12 @@ Finished tests in 0.00
|
|
40
41
|
MiniTest::Unit::TestCase.reset
|
41
42
|
@tu = MiniTest::Unit.new
|
42
43
|
@output = StringIO.new("")
|
44
|
+
MiniTest::Unit.runner = nil # protect the outer runner from the inner tests
|
43
45
|
MiniTest::Unit.output = @output
|
44
46
|
end
|
45
47
|
|
46
48
|
def teardown
|
47
49
|
MiniTest::Unit.output = $stdout
|
48
|
-
MiniTest::Unit.runner = nil
|
49
50
|
Object.send :remove_const, :ATestCase if defined? ATestCase
|
50
51
|
end
|
51
52
|
|
@@ -1221,6 +1222,11 @@ FILE:LINE:in `test_assert_raises_triggered_subclass'
|
|
1221
1222
|
@tc.pass
|
1222
1223
|
end
|
1223
1224
|
|
1225
|
+
def test_prints
|
1226
|
+
printer = Class.new { extend MiniTest::Assertions }
|
1227
|
+
@tc.assert_equal '"test"', printer.mu_pp(ImmutableString.new 'test')
|
1228
|
+
end
|
1229
|
+
|
1224
1230
|
def test_refute
|
1225
1231
|
@assertion_count = 2
|
1226
1232
|
|
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:
|
4
|
+
hash: 31
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 2
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 2.
|
8
|
+
- 4
|
9
|
+
- 0
|
10
|
+
version: 2.4.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Ryan Davis
|
@@ -36,39 +36,23 @@ cert_chain:
|
|
36
36
|
FBHgymkyj/AOSqKRIpXPhjC6
|
37
37
|
-----END CERTIFICATE-----
|
38
38
|
|
39
|
-
date: 2011-
|
39
|
+
date: 2011-08-10 00:00:00 Z
|
40
40
|
dependencies:
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: minitest
|
43
|
-
prerelease: false
|
44
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
45
|
-
none: false
|
46
|
-
requirements:
|
47
|
-
- - ">="
|
48
|
-
- !ruby/object:Gem::Version
|
49
|
-
hash: 3
|
50
|
-
segments:
|
51
|
-
- 2
|
52
|
-
- 3
|
53
|
-
- 0
|
54
|
-
version: 2.3.0
|
55
|
-
type: :development
|
56
|
-
version_requirements: *id001
|
57
41
|
- !ruby/object:Gem::Dependency
|
58
42
|
name: hoe
|
59
43
|
prerelease: false
|
60
|
-
requirement: &
|
44
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
61
45
|
none: false
|
62
46
|
requirements:
|
63
47
|
- - ~>
|
64
48
|
- !ruby/object:Gem::Version
|
65
|
-
hash:
|
49
|
+
hash: 23
|
66
50
|
segments:
|
67
51
|
- 2
|
68
|
-
-
|
69
|
-
version: "2.
|
52
|
+
- 10
|
53
|
+
version: "2.10"
|
70
54
|
type: :development
|
71
|
-
version_requirements: *
|
55
|
+
version_requirements: *id001
|
72
56
|
description: |-
|
73
57
|
minitest provides a complete suite of testing facilities supporting
|
74
58
|
TDD, BDD, mocking, and benchmarking.
|
@@ -90,7 +74,7 @@ description: |-
|
|
90
74
|
framework.
|
91
75
|
|
92
76
|
minitest/pride shows pride in testing and adds coloring to your test
|
93
|
-
output.
|
77
|
+
output. I guess it is an example of how to write IO pipes too. :P
|
94
78
|
|
95
79
|
minitest/unit is meant to have a clean implementation for language
|
96
80
|
implementors that need a minimal set of methods to bootstrap a working
|
@@ -125,7 +109,7 @@ files:
|
|
125
109
|
- test/test_minitest_spec.rb
|
126
110
|
- test/test_minitest_unit.rb
|
127
111
|
- .gemtest
|
128
|
-
homepage:
|
112
|
+
homepage: https://github.com/seattlerb/minitest
|
129
113
|
licenses: []
|
130
114
|
|
131
115
|
post_install_message:
|
@@ -155,7 +139,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
155
139
|
requirements: []
|
156
140
|
|
157
141
|
rubyforge_project: bfts
|
158
|
-
rubygems_version: 1.8.
|
142
|
+
rubygems_version: 1.8.5
|
159
143
|
signing_key:
|
160
144
|
specification_version: 3
|
161
145
|
summary: minitest provides a complete suite of testing facilities supporting TDD, BDD, mocking, and benchmarking
|
metadata.gz.sig
CHANGED
@@ -1,3 +1 @@
|
|
1
|
-
|
2
|
-
�D~dB���OP�n7`|mˍ
|
3
|
-
T����6��O���h�+7!��]�
|
1
|
+
����MqyN�䁃��0�pW®�f����8^���e;%���BEy�9��v>��q����2����zc ��<J�����H�vg7u�h������ՙ� �� V����V���H�^w�)_3���,(+��B�������e�xĨ�3�D�c�R�����C�m2�NF��˩�
|