minitest 2.2.2 → 2.3.0
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 +0 -0
- data/History.txt +15 -0
- data/lib/minitest/mock.rb +33 -7
- data/lib/minitest/spec.rb +28 -31
- data/lib/minitest/unit.rb +111 -2
- data/test/test_minitest_mock.rb +32 -8
- data/test/test_minitest_spec.rb +5 -4
- data/test/test_minitest_unit.rb +143 -0
- metadata +4 -4
- metadata.gz.sig +1 -1
data.tar.gz.sig
CHANGED
Binary file
|
data/History.txt
CHANGED
@@ -1,3 +1,18 @@
|
|
1
|
+
=== 2.3.0 / 2011-06-15
|
2
|
+
|
3
|
+
* 5 minor enhancements:
|
4
|
+
|
5
|
+
* Add setup and teardown hooks to MiniTest::TestCase. (phiggins)
|
6
|
+
* Added nicer error messages for MiniTest::Mock. (phiggins)
|
7
|
+
* Allow for less specific expected arguments in Mock. (bhenderson/phiggins)
|
8
|
+
* Made MiniTest::Mock a blank slate. (phiggins)
|
9
|
+
* Refactored minitest/spec to use the hooks instead of define_inheritable_method. (phiggins)
|
10
|
+
|
11
|
+
* 2 bug fixes:
|
12
|
+
|
13
|
+
* Fixed TestCase's inherited hook. (dchelimsky/phiggins/jamis, the 'good' neighbor)
|
14
|
+
* MiniTest::Assertions#refute_empty should use mu_pp in the default message. (whatthejeff)
|
15
|
+
|
1
16
|
=== 2.2.2 / 2011-06-01
|
2
17
|
|
3
18
|
* 2 bug fixes:
|
data/lib/minitest/mock.rb
CHANGED
@@ -9,20 +9,37 @@ module MiniTest
|
|
9
9
|
# All mock objects are an instance of Mock
|
10
10
|
|
11
11
|
class Mock
|
12
|
+
alias :__respond_to? :respond_to?
|
13
|
+
|
14
|
+
instance_methods.each do |m|
|
15
|
+
undef_method m unless m =~ /^__|object_id|respond_to_missing?/
|
16
|
+
end
|
17
|
+
|
12
18
|
def initialize # :nodoc:
|
13
19
|
@expected_calls = {}
|
14
20
|
@actual_calls = Hash.new {|h,k| h[k] = [] }
|
15
21
|
end
|
16
22
|
|
17
23
|
##
|
18
|
-
# Expect that method +name+ is called, optionally with +args+, and
|
19
|
-
#
|
24
|
+
# Expect that method +name+ is called, optionally with +args+, and returns
|
25
|
+
# +retval+.
|
20
26
|
#
|
21
27
|
# @mock.expect(:meaning_of_life, 42)
|
22
28
|
# @mock.meaning_of_life # => 42
|
23
29
|
#
|
24
30
|
# @mock.expect(:do_something_with, true, [some_obj, true])
|
25
31
|
# @mock.do_something_with(some_obj, true) # => true
|
32
|
+
#
|
33
|
+
# +args+ is compared to the expected args using case equality (ie, the
|
34
|
+
# '===' operator), allowing for less specific expectations.
|
35
|
+
#
|
36
|
+
# @mock.expect(:uses_any_string, true, [String])
|
37
|
+
# @mock.uses_any_string("foo") # => true
|
38
|
+
# @mock.verify # => true
|
39
|
+
#
|
40
|
+
# @mock.expect(:uses_one_string, true, ["foo"]
|
41
|
+
# @mock.uses_one_string("bar") # => true
|
42
|
+
# @mock.verify # => raises MockExpectationError
|
26
43
|
|
27
44
|
def expect(name, retval, args=[])
|
28
45
|
@expected_calls[name] = { :retval => retval, :args => args }
|
@@ -45,17 +62,26 @@ module MiniTest
|
|
45
62
|
end
|
46
63
|
|
47
64
|
def method_missing(sym, *args) # :nodoc:
|
48
|
-
|
49
|
-
|
65
|
+
unless @expected_calls.has_key?(sym)
|
66
|
+
raise NoMethodError, "unmocked method '%s', expected one of %s" %
|
67
|
+
[sym, @expected_calls.keys.map{|s| "'#{s}'" }.sort.join(", ")]
|
68
|
+
end
|
69
|
+
|
70
|
+
unless @expected_calls[sym][:args].size == args.size
|
71
|
+
raise ArgumentError, "mocked method '%s' expects %d arguments, got %d" %
|
72
|
+
[sym, @expected_calls[sym][:args].size, args.size]
|
73
|
+
end
|
74
|
+
|
50
75
|
retval = @expected_calls[sym][:retval]
|
51
|
-
@
|
76
|
+
args_case = @expected_calls[sym][:args].
|
77
|
+
each_with_index.map{|a, i| a if a === args[i]}
|
78
|
+
@actual_calls[sym] << { :retval => retval, :args => args_case }
|
52
79
|
retval
|
53
80
|
end
|
54
81
|
|
55
|
-
alias :original_respond_to? :respond_to?
|
56
82
|
def respond_to?(sym) # :nodoc:
|
57
83
|
return true if @expected_calls.has_key?(sym)
|
58
|
-
return
|
84
|
+
return __respond_to?(sym)
|
59
85
|
end
|
60
86
|
end
|
61
87
|
end
|
data/lib/minitest/spec.rb
CHANGED
@@ -82,17 +82,8 @@ module Kernel
|
|
82
82
|
else
|
83
83
|
MiniTest::Spec.spec_type desc
|
84
84
|
end
|
85
|
-
cls = Class.new sclas
|
86
85
|
|
87
|
-
|
88
|
-
|
89
|
-
# :stopdoc:
|
90
|
-
# omg this sucks
|
91
|
-
(class << cls; self; end).send(:define_method, :to_s) { name }
|
92
|
-
(class << cls; self; end).send(:define_method, :desc) { desc }
|
93
|
-
# :startdoc:
|
94
|
-
|
95
|
-
cls.nuke_test_methods!
|
86
|
+
cls = sclas.create(name, desc)
|
96
87
|
|
97
88
|
stack.push cls
|
98
89
|
cls.class_eval(&block)
|
@@ -160,25 +151,6 @@ class MiniTest::Spec < MiniTest::Unit::TestCase
|
|
160
151
|
end
|
161
152
|
end
|
162
153
|
|
163
|
-
##
|
164
|
-
# Spec users want setup/teardown to be inherited and NOTHING ELSE.
|
165
|
-
# It is almost like method reuse is lost on them.
|
166
|
-
|
167
|
-
def self.define_inheritable_method name, &block # :nodoc:
|
168
|
-
# regular super() warns
|
169
|
-
super_method = self.superclass.instance_method name
|
170
|
-
|
171
|
-
teardown = name.to_s == "teardown"
|
172
|
-
super_before = super_method && ! teardown
|
173
|
-
super_after = super_method && teardown
|
174
|
-
|
175
|
-
define_method name do
|
176
|
-
super_method.bind(self).call if super_before
|
177
|
-
instance_eval(&block)
|
178
|
-
super_method.bind(self).call if super_after
|
179
|
-
end
|
180
|
-
end
|
181
|
-
|
182
154
|
##
|
183
155
|
# Define a 'before' action. Inherits the way normal methods should.
|
184
156
|
#
|
@@ -188,7 +160,8 @@ class MiniTest::Spec < MiniTest::Unit::TestCase
|
|
188
160
|
|
189
161
|
def self.before type = :each, &block
|
190
162
|
raise "unsupported before type: #{type}" unless type == :each
|
191
|
-
|
163
|
+
|
164
|
+
add_setup_hook {|tc| tc.instance_eval(&block) }
|
192
165
|
end
|
193
166
|
|
194
167
|
##
|
@@ -200,7 +173,8 @@ class MiniTest::Spec < MiniTest::Unit::TestCase
|
|
200
173
|
|
201
174
|
def self.after type = :each, &block
|
202
175
|
raise "unsupported after type: #{type}" unless type == :each
|
203
|
-
|
176
|
+
|
177
|
+
add_teardown_hook {|tc| tc.instance_eval(&block) }
|
204
178
|
end
|
205
179
|
|
206
180
|
##
|
@@ -226,6 +200,29 @@ class MiniTest::Spec < MiniTest::Unit::TestCase
|
|
226
200
|
mod.send :undef_method, name if mod.public_method_defined? name
|
227
201
|
end
|
228
202
|
end
|
203
|
+
|
204
|
+
def self.create(name, desc) # :nodoc:
|
205
|
+
cls = Class.new(self) do
|
206
|
+
@name = name
|
207
|
+
@desc = desc
|
208
|
+
|
209
|
+
nuke_test_methods!
|
210
|
+
end
|
211
|
+
|
212
|
+
children << cls
|
213
|
+
|
214
|
+
cls
|
215
|
+
end
|
216
|
+
|
217
|
+
def self.to_s # :nodoc:
|
218
|
+
defined?(@name) ? @name : super
|
219
|
+
end
|
220
|
+
|
221
|
+
# :stopdoc:
|
222
|
+
class << self
|
223
|
+
attr_reader :name, :desc
|
224
|
+
end
|
225
|
+
# :startdoc:
|
229
226
|
end
|
230
227
|
|
231
228
|
Object.infect_with_assertions(:must, :wont,
|
data/lib/minitest/unit.rb
CHANGED
@@ -485,7 +485,7 @@ module MiniTest
|
|
485
485
|
# Fails if +obj+ is empty.
|
486
486
|
|
487
487
|
def refute_empty obj, msg = nil
|
488
|
-
msg = message(msg) { "Expected #{obj
|
488
|
+
msg = message(msg) { "Expected #{mu_pp(obj)} to not be empty" }
|
489
489
|
assert_respond_to obj, :empty?
|
490
490
|
refute obj.empty?, msg
|
491
491
|
end
|
@@ -614,7 +614,7 @@ module MiniTest
|
|
614
614
|
end
|
615
615
|
|
616
616
|
class Unit
|
617
|
-
VERSION = "2.
|
617
|
+
VERSION = "2.3.0" # :nodoc:
|
618
618
|
|
619
619
|
attr_accessor :report, :failures, :errors, :skips # :nodoc:
|
620
620
|
attr_accessor :test_count, :assertion_count # :nodoc:
|
@@ -939,6 +939,7 @@ module MiniTest
|
|
939
939
|
begin
|
940
940
|
@passed = nil
|
941
941
|
self.setup
|
942
|
+
self.run_setup_hooks
|
942
943
|
self.__send__ self.__name__
|
943
944
|
result = "." unless io?
|
944
945
|
@passed = true
|
@@ -949,6 +950,7 @@ module MiniTest
|
|
949
950
|
result = runner.puke self.class, self.__name__, e
|
950
951
|
ensure
|
951
952
|
begin
|
953
|
+
self.run_teardown_hooks
|
952
954
|
self.teardown
|
953
955
|
rescue *PASSTHROUGH_EXCEPTIONS
|
954
956
|
raise
|
@@ -983,6 +985,8 @@ module MiniTest
|
|
983
985
|
|
984
986
|
def self.inherited klass # :nodoc:
|
985
987
|
@@test_suites[klass] = true
|
988
|
+
klass.reset_setup_teardown_hooks
|
989
|
+
super
|
986
990
|
end
|
987
991
|
|
988
992
|
##
|
@@ -1029,6 +1033,111 @@ module MiniTest
|
|
1029
1033
|
|
1030
1034
|
def teardown; end
|
1031
1035
|
|
1036
|
+
def self.reset_setup_teardown_hooks # :nodoc:
|
1037
|
+
@setup_hooks = []
|
1038
|
+
@teardown_hooks = []
|
1039
|
+
end
|
1040
|
+
|
1041
|
+
reset_setup_teardown_hooks
|
1042
|
+
|
1043
|
+
##
|
1044
|
+
# Adds a block of code that will be executed before every TestCase is
|
1045
|
+
# run. Equivalent to +setup+, but usable multiple times and without
|
1046
|
+
# re-opening any classes.
|
1047
|
+
#
|
1048
|
+
# All of the setup hooks will run in order after the +setup+ method, if
|
1049
|
+
# one is defined.
|
1050
|
+
#
|
1051
|
+
# The argument can be any object that responds to #call or a block.
|
1052
|
+
# That means that this call,
|
1053
|
+
#
|
1054
|
+
# MiniTest::TestCase.add_setup_hook { puts "foo" }
|
1055
|
+
#
|
1056
|
+
# ... is equivalent to:
|
1057
|
+
#
|
1058
|
+
# module MyTestSetup
|
1059
|
+
# def call
|
1060
|
+
# puts "foo"
|
1061
|
+
# end
|
1062
|
+
# end
|
1063
|
+
#
|
1064
|
+
# MiniTest::TestCase.add_setup_hook MyTestSetup
|
1065
|
+
#
|
1066
|
+
# The blocks passed to +add_setup_hook+ take an optional parameter that
|
1067
|
+
# will be the TestCase instance that is executing the block.
|
1068
|
+
|
1069
|
+
def self.add_setup_hook arg=nil, &block
|
1070
|
+
hook = arg || block
|
1071
|
+
@setup_hooks << hook
|
1072
|
+
end
|
1073
|
+
|
1074
|
+
def self.setup_hooks # :nodoc:
|
1075
|
+
if superclass.respond_to? :setup_hooks then
|
1076
|
+
superclass.setup_hooks
|
1077
|
+
else
|
1078
|
+
[]
|
1079
|
+
end + @setup_hooks
|
1080
|
+
end
|
1081
|
+
|
1082
|
+
def run_setup_hooks # :nodoc:
|
1083
|
+
self.class.setup_hooks.each do |hook|
|
1084
|
+
if hook.respond_to?(:arity) && hook.arity == 1
|
1085
|
+
hook.call(self)
|
1086
|
+
else
|
1087
|
+
hook.call
|
1088
|
+
end
|
1089
|
+
end
|
1090
|
+
end
|
1091
|
+
|
1092
|
+
##
|
1093
|
+
# Adds a block of code that will be executed after every TestCase is
|
1094
|
+
# run. Equivalent to +teardown+, but usable multiple times and without
|
1095
|
+
# re-opening any classes.
|
1096
|
+
#
|
1097
|
+
# All of the teardown hooks will run in reverse order after the
|
1098
|
+
# +teardown+ method, if one is defined.
|
1099
|
+
#
|
1100
|
+
# The argument can be any object that responds to #call or a block.
|
1101
|
+
# That means that this call,
|
1102
|
+
#
|
1103
|
+
# MiniTest::TestCase.add_teardown_hook { puts "foo" }
|
1104
|
+
#
|
1105
|
+
# ... is equivalent to:
|
1106
|
+
#
|
1107
|
+
# module MyTestTeardown
|
1108
|
+
# def call
|
1109
|
+
# puts "foo"
|
1110
|
+
# end
|
1111
|
+
# end
|
1112
|
+
#
|
1113
|
+
# MiniTest::TestCase.add_teardown_hook MyTestTeardown
|
1114
|
+
#
|
1115
|
+
# The blocks passed to +add_teardown_hook+ take an optional parameter
|
1116
|
+
# that will be the TestCase instance that is executing the block.
|
1117
|
+
|
1118
|
+
def self.add_teardown_hook arg=nil, &block
|
1119
|
+
hook = arg || block
|
1120
|
+
@teardown_hooks << hook
|
1121
|
+
end
|
1122
|
+
|
1123
|
+
def self.teardown_hooks # :nodoc:
|
1124
|
+
if superclass.respond_to? :teardown_hooks then
|
1125
|
+
superclass.teardown_hooks
|
1126
|
+
else
|
1127
|
+
[]
|
1128
|
+
end + @teardown_hooks
|
1129
|
+
end
|
1130
|
+
|
1131
|
+
def run_teardown_hooks # :nodoc:
|
1132
|
+
self.class.teardown_hooks.reverse.each do |hook|
|
1133
|
+
if hook.respond_to?(:arity) && hook.arity == 1
|
1134
|
+
hook.call(self)
|
1135
|
+
else
|
1136
|
+
hook.call
|
1137
|
+
end
|
1138
|
+
end
|
1139
|
+
end
|
1140
|
+
|
1032
1141
|
include MiniTest::Assertions
|
1033
1142
|
end # class TestCase
|
1034
1143
|
end # class Unit
|
data/test/test_minitest_mock.rb
CHANGED
@@ -43,20 +43,16 @@ class TestMiniTestMock < MiniTest::Unit::TestCase
|
|
43
43
|
util_verify_bad
|
44
44
|
end
|
45
45
|
|
46
|
-
def test_not_verify_if_unexpected_method_is_called
|
47
|
-
assert_raises NoMethodError do
|
48
|
-
@mock.unexpected
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
46
|
def test_blow_up_on_wrong_number_of_arguments
|
53
47
|
@mock.foo
|
54
48
|
@mock.meaning_of_life
|
55
49
|
@mock.expect(:sum, 3, [1, 2])
|
56
50
|
|
57
|
-
assert_raises ArgumentError do
|
51
|
+
e = assert_raises ArgumentError do
|
58
52
|
@mock.sum
|
59
53
|
end
|
54
|
+
|
55
|
+
assert_equal "mocked method 'sum' expects 2 arguments, got 0", e.message
|
60
56
|
end
|
61
57
|
|
62
58
|
def test_blow_up_on_wrong_arguments
|
@@ -75,9 +71,13 @@ class TestMiniTestMock < MiniTest::Unit::TestCase
|
|
75
71
|
end
|
76
72
|
|
77
73
|
def test_no_method_error_on_unexpected_methods
|
78
|
-
assert_raises NoMethodError do
|
74
|
+
e = assert_raises NoMethodError do
|
79
75
|
@mock.bar
|
80
76
|
end
|
77
|
+
|
78
|
+
expected = "unmocked method 'bar', expected one of 'foo', 'meaning_of_life'"
|
79
|
+
|
80
|
+
assert_equal expected, e.message
|
81
81
|
end
|
82
82
|
|
83
83
|
def test_assign_per_mock_return_values
|
@@ -98,6 +98,30 @@ class TestMiniTestMock < MiniTest::Unit::TestCase
|
|
98
98
|
assert !MiniTest::Mock.new.respond_to?(:foo)
|
99
99
|
end
|
100
100
|
|
101
|
+
def test_mock_is_a_blank_slate
|
102
|
+
@mock.expect :kind_of?, true, [Fixnum]
|
103
|
+
@mock.expect :==, true, [1]
|
104
|
+
|
105
|
+
assert @mock.kind_of?(Fixnum), "didn't mock :kind_of?"
|
106
|
+
assert @mock == 1, "didn't mock :=="
|
107
|
+
end
|
108
|
+
|
109
|
+
def test_verify_allows_called_args_to_be_loosely_specified
|
110
|
+
mock = MiniTest::Mock.new
|
111
|
+
mock.expect :loose_expectation, true, [Integer]
|
112
|
+
mock.loose_expectation 1
|
113
|
+
|
114
|
+
assert mock.verify
|
115
|
+
end
|
116
|
+
|
117
|
+
def test_verify_raises_with_strict_args
|
118
|
+
mock = MiniTest::Mock.new
|
119
|
+
mock.expect :strict_expectation, true, [2]
|
120
|
+
mock.strict_expectation 1
|
121
|
+
|
122
|
+
util_verify_bad
|
123
|
+
end
|
124
|
+
|
101
125
|
def util_verify_bad
|
102
126
|
assert_raises MockExpectationError do
|
103
127
|
@mock.verify
|
data/test/test_minitest_spec.rb
CHANGED
@@ -239,8 +239,8 @@ class TestMeta < MiniTest::Unit::TestCase
|
|
239
239
|
assert_equal "inner thingy", y.desc
|
240
240
|
assert_equal "very inner thingy", z.desc
|
241
241
|
|
242
|
-
top_methods = %w(
|
243
|
-
inner_methods = %w(
|
242
|
+
top_methods = %w(test_0001_top_level_it)
|
243
|
+
inner_methods = %w(test_0001_inner_it)
|
244
244
|
|
245
245
|
assert_equal top_methods, x.instance_methods(false).sort.map {|o| o.to_s }
|
246
246
|
assert_equal inner_methods, y.instance_methods(false).sort.map {|o| o.to_s }
|
@@ -251,8 +251,9 @@ class TestMeta < MiniTest::Unit::TestCase
|
|
251
251
|
_, _, z, before_list, after_list = util_structure
|
252
252
|
|
253
253
|
tc = z.new(nil)
|
254
|
-
|
255
|
-
tc.
|
254
|
+
|
255
|
+
tc.run_setup_hooks
|
256
|
+
tc.run_teardown_hooks
|
256
257
|
|
257
258
|
assert_equal [1, 2, 3], before_list
|
258
259
|
assert_equal [3, 2, 1], after_list
|
data/test/test_minitest_unit.rb
CHANGED
@@ -436,6 +436,149 @@ Finished tests in 0.00
|
|
436
436
|
assert_report expected
|
437
437
|
end
|
438
438
|
|
439
|
+
def with_overridden_include
|
440
|
+
Class.class_eval do
|
441
|
+
def inherited_with_hacks klass
|
442
|
+
throw :inherited_hook
|
443
|
+
end
|
444
|
+
|
445
|
+
alias inherited_without_hacks inherited
|
446
|
+
alias inherited inherited_with_hacks
|
447
|
+
alias IGNORE_ME! inherited # 1.8 bug. god I love venture bros
|
448
|
+
end
|
449
|
+
|
450
|
+
yield
|
451
|
+
|
452
|
+
ensure
|
453
|
+
Class.class_eval do
|
454
|
+
alias inherited inherited_without_hacks
|
455
|
+
|
456
|
+
undef_method :inherited_with_hacks
|
457
|
+
undef_method :inherited_without_hacks
|
458
|
+
end
|
459
|
+
|
460
|
+
refute_respond_to Class, :inherited_with_hacks
|
461
|
+
refute_respond_to Class, :inherited_without_hacks
|
462
|
+
end
|
463
|
+
|
464
|
+
def test_inherited_hook_plays_nice_with_others
|
465
|
+
with_overridden_include do
|
466
|
+
assert_throws :inherited_hook do
|
467
|
+
Class.new MiniTest::Unit::TestCase
|
468
|
+
end
|
469
|
+
end
|
470
|
+
end
|
471
|
+
|
472
|
+
def test_setup_hooks
|
473
|
+
call_order = []
|
474
|
+
|
475
|
+
tc = Class.new(MiniTest::Unit::TestCase) do
|
476
|
+
define_method :setup do
|
477
|
+
super()
|
478
|
+
call_order << :method
|
479
|
+
end
|
480
|
+
|
481
|
+
define_method :test2 do
|
482
|
+
call_order << :test2
|
483
|
+
end
|
484
|
+
|
485
|
+
define_method :test1 do
|
486
|
+
call_order << :test1
|
487
|
+
end
|
488
|
+
end
|
489
|
+
|
490
|
+
tc.add_setup_hook lambda { call_order << :proc }
|
491
|
+
|
492
|
+
argument = nil
|
493
|
+
|
494
|
+
tc.add_setup_hook do |arg|
|
495
|
+
argument = arg
|
496
|
+
call_order << :block
|
497
|
+
end
|
498
|
+
|
499
|
+
@tu.run %w[--seed 42]
|
500
|
+
|
501
|
+
assert_kind_of tc, argument
|
502
|
+
|
503
|
+
expected = [:method, :proc, :block, :test1,
|
504
|
+
:method, :proc, :block, :test2]
|
505
|
+
|
506
|
+
assert_equal expected, call_order
|
507
|
+
end
|
508
|
+
|
509
|
+
def test_teardown_hooks
|
510
|
+
call_order = []
|
511
|
+
|
512
|
+
tc = Class.new(MiniTest::Unit::TestCase) do
|
513
|
+
define_method :teardown do
|
514
|
+
super()
|
515
|
+
call_order << :method
|
516
|
+
end
|
517
|
+
|
518
|
+
define_method :test2 do
|
519
|
+
call_order << :test2
|
520
|
+
end
|
521
|
+
|
522
|
+
define_method :test1 do
|
523
|
+
call_order << :test1
|
524
|
+
end
|
525
|
+
end
|
526
|
+
|
527
|
+
tc.add_teardown_hook lambda { call_order << :proc }
|
528
|
+
|
529
|
+
argument = nil
|
530
|
+
|
531
|
+
tc.add_teardown_hook do |arg|
|
532
|
+
argument = arg
|
533
|
+
call_order << :block
|
534
|
+
end
|
535
|
+
|
536
|
+
@tu.run %w[--seed 42]
|
537
|
+
|
538
|
+
assert_kind_of tc, argument
|
539
|
+
|
540
|
+
expected = [:test1, :block, :proc, :method,
|
541
|
+
:test2, :block, :proc, :method]
|
542
|
+
|
543
|
+
assert_equal expected, call_order
|
544
|
+
end
|
545
|
+
|
546
|
+
def test_setup_and_teardown_hooks_survive_inheritance
|
547
|
+
call_order = []
|
548
|
+
|
549
|
+
parent = Class.new(MiniTest::Unit::TestCase) do
|
550
|
+
define_method :setup do
|
551
|
+
super()
|
552
|
+
call_order << :setup_method
|
553
|
+
end
|
554
|
+
|
555
|
+
define_method :teardown do
|
556
|
+
super()
|
557
|
+
call_order << :teardown_method
|
558
|
+
end
|
559
|
+
|
560
|
+
define_method :test_something do
|
561
|
+
call_order << :test
|
562
|
+
end
|
563
|
+
end
|
564
|
+
|
565
|
+
parent.add_setup_hook { call_order << :setup_hook }
|
566
|
+
parent.add_teardown_hook { call_order << :teardown_hook }
|
567
|
+
|
568
|
+
_ = Class.new parent
|
569
|
+
|
570
|
+
parent.add_setup_hook { call_order << :setup_after }
|
571
|
+
parent.add_teardown_hook { call_order << :teardown_after }
|
572
|
+
|
573
|
+
@tu.run %w[--seed 42]
|
574
|
+
|
575
|
+
# Once for the parent class, once for the child
|
576
|
+
expected = [:setup_method, :setup_hook, :setup_after, :test,
|
577
|
+
:teardown_after, :teardown_hook, :teardown_method] * 2
|
578
|
+
|
579
|
+
assert_equal expected, call_order
|
580
|
+
end
|
581
|
+
|
439
582
|
def util_expand_bt bt
|
440
583
|
if RUBY_VERSION =~ /^1\.9/ then
|
441
584
|
bt.map { |f| (f =~ /^\./) ? File.expand_path(f) : f }
|
metadata
CHANGED
@@ -5,9 +5,9 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 2
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 2.
|
8
|
+
- 3
|
9
|
+
- 0
|
10
|
+
version: 2.3.0
|
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: 2011-06-
|
39
|
+
date: 2011-06-18 00:00:00 Z
|
40
40
|
dependencies:
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: minitest
|
metadata.gz.sig
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
{!��v(�ӒhGA�r꺤��D^���7� �Teؠ�݈^�>H~eTF0D���OQ��m�A�=��93:#[:
|