minitest_tu_shim 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/.autotest ADDED
@@ -0,0 +1,47 @@
1
+ # -*- ruby -*-
2
+
3
+ require 'autotest/restart'
4
+
5
+ Autotest.add_hook :initialize do |at|
6
+ at.extra_class_map["MiniSpec"] = "test/test_mini_spec.rb"
7
+ at.extra_class_map["TestMiniTestTestCase"] = "test/test_mini_test.rb"
8
+
9
+ at.libs << ":../../minitest/dev/lib"
10
+
11
+ at.add_exception 'coverage.info'
12
+ at.add_exception 'coverage'
13
+ end
14
+
15
+ # require 'autotest/rcov'
16
+ # Autotest::RCov.command = 'rcov_info'
17
+
18
+
19
+
20
+ # require 'autotest/restart'
21
+
22
+ # Autotest.add_hook :initialize do |at|
23
+ # at.extra_files << "../../ParseTree/dev/test/pt_testcase.rb"
24
+ # at.libs << ":../../ParseTree/dev/lib:../../ParseTree/dev/test:../../sexp_processor/dev/lib"
25
+ # at.add_exception 'unit'
26
+ # at.add_exception 'coverage'
27
+ # at.add_exception '.diff'
28
+ # at.add_exception 'coverage.info'
29
+
30
+ # at.unit_diff = "unit_diff -u -b"
31
+
32
+ # at.add_mapping(/^lib\/.*\.y$/) do |f, _|
33
+ # at.files_matching %r%^test/.*#{File.basename(f, '.y').gsub '_', '_?'}.rb$%
34
+ # end
35
+
36
+ # at.add_mapping(/pt_testcase.rb/) do |f, _|
37
+ # at.files_matching(/test_.*rb$/)
38
+ # end
39
+
40
+ # %w(TestEnvironment TestStackState).each do |klass|
41
+ # at.extra_class_map[klass] = "test/test_ruby_parser_extras.rb"
42
+ # end
43
+
44
+ # %w(TestRubyParser TestParseTree).each do |klass| # HACK
45
+ # at.extra_class_map[klass] = "test/test_ruby_parser.rb"
46
+ # end
47
+ # end
data/History.txt ADDED
@@ -0,0 +1,5 @@
1
+ === 1.3.0 / 2008-10-09
2
+
3
+ * 1 major enhancement:
4
+
5
+ * split out of miniunit (now minitest)
data/Manifest.txt ADDED
@@ -0,0 +1,12 @@
1
+ .autotest
2
+ History.txt
3
+ Manifest.txt
4
+ README.txt
5
+ Rakefile
6
+ bin/use_minitest
7
+ lib/test/unit.rb
8
+ lib/test/unit/assertions.rb
9
+ lib/test/unit/deprecate.rb
10
+ lib/test/unit/error.rb
11
+ lib/test/unit/testcase.rb
12
+ test/test_mini_test.rb
data/README.txt ADDED
@@ -0,0 +1,54 @@
1
+ = minitest_tu_shim
2
+
3
+ * http://rubyforge.org/projects/bfts
4
+
5
+ == DESCRIPTION:
6
+
7
+ minitest_te_shim bridges the gap between the small and fast minitest
8
+ and ruby's huge and slow test/unit.
9
+
10
+ == FEATURES/PROBLEMS:
11
+
12
+ * Fully test/unit compatible assertions.
13
+ * Allows test/unit to be required, firing up an autorunner.
14
+ * Incompatible at the runner level. Does not replicate test/unit's internals.
15
+
16
+ == HOW TO USE:
17
+
18
+ + sudo gem install minitest_tu_shim
19
+ + sudo use_minitest yes
20
+ + there is no step 3.
21
+
22
+ == REQUIREMENTS:
23
+
24
+ + minitest
25
+ + Ruby 1.8, maybe even 1.6 or lower. No magic is involved.
26
+
27
+ == INSTALL:
28
+
29
+ + sudo gem install minitest_tu_shim
30
+
31
+ == LICENSE:
32
+
33
+ (The MIT License)
34
+
35
+ Copyright (c) Ryan Davis, Seattle.rb
36
+
37
+ Permission is hereby granted, free of charge, to any person obtaining
38
+ a copy of this software and associated documentation files (the
39
+ 'Software'), to deal in the Software without restriction, including
40
+ without limitation the rights to use, copy, modify, merge, publish,
41
+ distribute, sublicense, and/or sell copies of the Software, and to
42
+ permit persons to whom the Software is furnished to do so, subject to
43
+ the following conditions:
44
+
45
+ The above copyright notice and this permission notice shall be
46
+ included in all copies or substantial portions of the Software.
47
+
48
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
49
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
50
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
51
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
52
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
53
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
54
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile ADDED
@@ -0,0 +1,20 @@
1
+ # -*- ruby -*-
2
+
3
+ $TESTING_MINIUNIT = true
4
+
5
+ require 'rubygems'
6
+ require 'hoe'
7
+
8
+ Hoe.add_include_dirs "../../minitest/dev/lib", "lib"
9
+
10
+ require 'test/unit/testcase'
11
+
12
+ Hoe.new('minitest_tu_shim', Test::Unit::TestCase::VERSION) do |shim|
13
+ shim.rubyforge_name = "bfts"
14
+
15
+ shim.developer('Ryan Davis', 'ryand-ruby@zenspider.com')
16
+
17
+ shim.extra_deps << 'minitest'
18
+ end
19
+
20
+ # vim: syntax=Ruby
data/bin/use_minitest ADDED
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rbconfig'
4
+
5
+ use_miniunit = ARGV.shift
6
+ sitelib = Config::CONFIG["sitelibdir"]
7
+ projdir = File.dirname(File.dirname(File.expand_path(__FILE__)))
8
+ minidir = File.join(projdir, "lib")
9
+
10
+ case use_miniunit
11
+ when /^y/ then
12
+ File.symlink File.join(minidir, "minitest"), File.join(sitelib, "minitest")
13
+ File.symlink File.join(minidir, "test"), File.join(sitelib, "test")
14
+ puts "Added links to #{sitelib}"
15
+ when /^n/ then
16
+ File.unlink File.join(sitelib, "minitest")
17
+ File.unlink File.join(sitelib, "test")
18
+ puts "Removed links from #{sitelib}"
19
+ else
20
+ pgm = File.basename __FILE__
21
+ puts "usage: #{pgm} (yes|no)"
22
+ exit 1
23
+ end
@@ -0,0 +1,53 @@
1
+ require 'minitest/unit'
2
+ require 'test/unit/deprecate'
3
+
4
+ module Test; end
5
+ module Test::Unit # patch up bastards that that extend improperly.
6
+ if defined? Assertions then
7
+ warn "ARGH! someone defined Test::Unit::Assertions rather than requiring"
8
+ CRAP_ASSERTIONS = Assertions
9
+ remove_const :Assertions
10
+
11
+ # this will break on junit and rubinius... *sigh*
12
+ ObjectSpace.each_object(Module) do |offender|
13
+ offender.send :include, ::MiniTest::Assertions if offender < CRAP_ASSERTIONS
14
+ end rescue nil
15
+
16
+ Test::Unit::TestCase.send :include, CRAP_ASSERTIONS
17
+ end
18
+
19
+ Assertions = ::MiniTest::Assertions
20
+
21
+ module Assertions
22
+ def self.included mod
23
+ mod.send :include, Test::Unit::CRAP_ASSERTIONS
24
+ end if defined? Test::Unit::CRAP_ASSERTIONS
25
+ end
26
+ end
27
+
28
+ module Test::Unit
29
+ module Assertions # deprecations
30
+ tu_deprecate :assert_nothing_thrown, :assert_nothing_raised # 2009-06-01
31
+ tu_deprecate :assert_raise, :assert_raises # 2010-06-01
32
+ tu_deprecate :assert_not_equal, :refute_equal # 2009-06-01
33
+ tu_deprecate :assert_no_match, :refute_match # 2009-06-01
34
+ tu_deprecate :assert_not_nil, :refute_nil # 2009-06-01
35
+ tu_deprecate :assert_not_same, :refute_same # 2009-06-01
36
+
37
+ def assert_nothing_raised _ = :ignored # 2009-06-01
38
+ self.class.tu_deprecation_warning :assert_nothing_raised
39
+ self._assertions += 1
40
+ yield
41
+ rescue => e
42
+ raise MiniTest::Assertion, exception_details(e, "Exception raised:")
43
+ end
44
+
45
+ def build_message(user_message, template_message, *args) # 2009-06-01
46
+ self.class.tu_deprecation_warning :build_message
47
+ user_message ||= ''
48
+ user_message += ' ' unless user_message.empty?
49
+ msg = template_message.split(/<\?>/).zip(args.map { |o| o.inspect })
50
+ user_message + msg.join
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,24 @@
1
+ class Module # define deprecation api
2
+ DEPS = Hash.new { |h,k| h[k] = {} }
3
+
4
+ def tu_deprecation_warning old, new = nil, kaller = nil
5
+ kaller ||= caller[1]
6
+ unless DEPS[old][kaller] then
7
+ msg = "#{self}##{old} deprecated. "
8
+ msg += new ? "Use ##{new}" : "No replacement is provided"
9
+ msg += ". From #{kaller}."
10
+ warn msg
11
+ end
12
+ DEPS[old][kaller] = true
13
+ end
14
+
15
+ def tu_deprecate old, new
16
+ class_eval <<-EOM
17
+ def #{old} *args, &block
18
+ cls, clr = self.class, caller.first
19
+ self.class.tu_deprecation_warning #{old.inspect}, #{new.inspect}, clr
20
+ #{new}(*args, &block)
21
+ end
22
+ EOM
23
+ end
24
+ end
@@ -0,0 +1,11 @@
1
+ require 'test/unit/deprecate'
2
+
3
+ # rails currently needs this file and this one method.
4
+ module Test::Unit
5
+ class Error
6
+ def message
7
+ self.class.tu_deprecation_warning :message # 2009-06-01
8
+ "you're a loser"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,25 @@
1
+ require 'minitest/unit'
2
+ require 'test/unit/deprecate'
3
+
4
+ module Test; end
5
+ module Test::Unit # was ::Mini::Test, but rails' horrid code forced my hand
6
+ if defined? TestCase then
7
+ warn "ARGH! someone defined Test::Unit::TestCase rather than requiring"
8
+ remove_const :TestCase
9
+ end
10
+
11
+ AssertionFailedError = ::MiniTest::Assertion
12
+
13
+ class TestCase < ::MiniTest::Unit::TestCase
14
+
15
+ VERSION = '1.3.0'
16
+
17
+ tu_deprecate :method_name, :name # 2009-06-01
18
+
19
+ def self.test_order # 2009-06-01
20
+ :sorted
21
+ end
22
+ end
23
+ end
24
+
25
+ require 'test/unit/assertions' # brings in deprecated methods
data/lib/test/unit.rb ADDED
@@ -0,0 +1,4 @@
1
+ require 'minitest/unit'
2
+ require 'test/unit/testcase' # pull in deprecated functionality
3
+
4
+ MiniTest::Unit.autorun
@@ -0,0 +1,851 @@
1
+ require 'stringio'
2
+ require 'minitest/unit'
3
+
4
+ MiniTest::Unit.autorun
5
+
6
+ class TestMiniTest < MiniTest::Unit::TestCase
7
+
8
+ def setup
9
+ srand 42
10
+ MiniTest::Unit::TestCase.reset
11
+ @tu = MiniTest::Unit.new
12
+ @output = StringIO.new("")
13
+ MiniTest::Unit.output = @output
14
+ assert_equal [0, 0], @tu.run_test_suites
15
+ end
16
+
17
+ def teardown
18
+ MiniTest::Unit.output = $stdout
19
+ Object.send :remove_const, :ATestCase if defined? ATestCase
20
+ end
21
+
22
+ BT_MIDDLE = ["./lib/mini/test.rb:165:in `run_test_suites'",
23
+ "./lib/mini/test.rb:161:in `each'",
24
+ "./lib/mini/test.rb:161:in `run_test_suites'",
25
+ "./lib/mini/test.rb:158:in `each'",
26
+ "./lib/mini/test.rb:158:in `run_test_suites'",
27
+ "./lib/mini/test.rb:139:in `run'",
28
+ "./lib/mini/test.rb:106:in `run'"]
29
+
30
+ # def test_filter_backtrace
31
+ # # this is a semi-lame mix of relative paths.
32
+ # # I cheated by making the autotest parts not have ./
33
+ # bt = (["lib/autotest.rb:571:in `add_exception'",
34
+ # "test/test_autotest.rb:62:in `test_add_exception'",
35
+ # "./lib/mini/test.rb:165:in `__send__'"] +
36
+ # BT_MIDDLE +
37
+ # ["./lib/mini/test.rb:29",
38
+ # "test/test_autotest.rb:422"])
39
+ # bt = util_expand_bt bt
40
+
41
+ # ex = ["lib/autotest.rb:571:in `add_exception'",
42
+ # "test/test_autotest.rb:62:in `test_add_exception'"]
43
+ # ex = util_expand_bt ex
44
+
45
+ # fu = MiniTest::filter_backtrace(bt)
46
+
47
+ # assert_equal ex, fu
48
+ # end
49
+
50
+ def util_expand_bt bt
51
+ if RUBY_VERSION =~ /^1\.9/ then
52
+ bt.map { |f| (f =~ /^\./) ? File.expand_path(f) : f }
53
+ else
54
+ bt
55
+ end
56
+ end
57
+
58
+ def test_filter_backtrace_all_unit
59
+ bt = (["./lib/mini/test.rb:165:in `__send__'"] +
60
+ BT_MIDDLE +
61
+ ["./lib/mini/test.rb:29"])
62
+ ex = bt.clone
63
+ fu = MiniTest::filter_backtrace(bt)
64
+ assert_equal ex, fu
65
+ end
66
+
67
+ # def test_filter_backtrace_unit_starts
68
+ # bt = (["./lib/mini/test.rb:165:in `__send__'"] +
69
+ # BT_MIDDLE +
70
+ # ["./lib/mini/test.rb:29",
71
+ # "-e:1"])
72
+
73
+ # bt = util_expand_bt bt
74
+
75
+ # ex = ["-e:1"]
76
+ # fu = MiniTest::filter_backtrace(bt)
77
+ # assert_equal ex, fu
78
+ # end
79
+
80
+ def test_class_puke_with_assertion_failed
81
+ exception = MiniTest::Assertion.new "Oh no!"
82
+ exception.set_backtrace ["unhappy"]
83
+ assert_equal 'F', @tu.puke('SomeClass', 'method_name', exception)
84
+ assert_equal 1, @tu.failures
85
+ assert_match(/^Failure.*Oh no!/m, @tu.report.first)
86
+ end
87
+
88
+ def test_class_puke_with_failure_and_flunk_in_backtrace
89
+ exception = begin
90
+ MiniTest::Unit::TestCase.new('fake tc').flunk
91
+ rescue MiniTest::Assertion => failure
92
+ failure
93
+ end
94
+ assert_equal 'F', @tu.puke('SomeClass', 'method_name', exception)
95
+ refute @tu.report.any?{|line| line =~ /in .flunk/}
96
+ end
97
+
98
+ def test_class_puke_with_non_failure_exception
99
+ exception = Exception.new("Oh no again!")
100
+ assert_equal 'E', @tu.puke('SomeClass', 'method_name', exception)
101
+ assert_equal 1, @tu.errors
102
+ assert_match(/^Exception.*Oh no again!/m, @tu.report.first)
103
+ end
104
+
105
+ def test_class_run_test_suites
106
+ tc = Class.new(MiniTest::Unit::TestCase) do
107
+ def test_something
108
+ assert true
109
+ end
110
+ end
111
+
112
+ Object.const_set(:ATestCase, tc)
113
+
114
+ assert_equal [1, 1], @tu.run_test_suites
115
+ end
116
+
117
+ def test_run_failing # TODO: add error test
118
+ tc = Class.new(MiniTest::Unit::TestCase) do
119
+ def test_something
120
+ assert true
121
+ end
122
+
123
+ def test_failure
124
+ assert false
125
+ end
126
+ end
127
+
128
+ Object.const_set(:ATestCase, tc)
129
+
130
+ @tu.run
131
+
132
+ expected = "Loaded suite blah
133
+ Started
134
+ F.
135
+ Finished in 0.00
136
+
137
+ 1) Failure:
138
+ test_failure(ATestCase) [FILE:LINE]:
139
+ Failed assertion, no message given.
140
+
141
+ 2 tests, 2 assertions, 1 failures, 0 errors, 0 skips
142
+ "
143
+ util_assert_report expected
144
+ end
145
+
146
+ def test_run_error
147
+ tc = Class.new(MiniTest::Unit::TestCase) do
148
+ def test_something
149
+ assert true
150
+ end
151
+
152
+ def test_error
153
+ raise "unhandled exception"
154
+ end
155
+ end
156
+
157
+ Object.const_set(:ATestCase, tc)
158
+
159
+ @tu.run
160
+
161
+ expected = "Loaded suite blah
162
+ Started
163
+ E.
164
+ Finished in 0.00
165
+
166
+ 1) Error:
167
+ test_error(ATestCase):
168
+ RuntimeError: unhandled exception
169
+ FILE:LINE:in `test_error'
170
+
171
+ 2 tests, 1 assertions, 0 failures, 1 errors, 0 skips
172
+ "
173
+ util_assert_report expected
174
+ end
175
+
176
+ def test_run_error_teardown
177
+ tc = Class.new(MiniTest::Unit::TestCase) do
178
+ def test_something
179
+ assert true
180
+ end
181
+
182
+ def teardown
183
+ raise "unhandled exception"
184
+ end
185
+ end
186
+
187
+ Object.const_set(:ATestCase, tc)
188
+
189
+ @tu.run
190
+
191
+ expected = "Loaded suite blah
192
+ Started
193
+ E
194
+ Finished in 0.00
195
+
196
+ 1) Error:
197
+ test_something(ATestCase):
198
+ RuntimeError: unhandled exception
199
+ FILE:LINE:in `teardown'
200
+
201
+ 1 tests, 1 assertions, 0 failures, 1 errors, 0 skips
202
+ "
203
+ util_assert_report expected
204
+ end
205
+
206
+ def test_run_skip
207
+ tc = Class.new(MiniTest::Unit::TestCase) do
208
+ def test_something
209
+ assert true
210
+ end
211
+
212
+ def test_skip
213
+ skip "not yet"
214
+ end
215
+ end
216
+
217
+ Object.const_set(:ATestCase, tc)
218
+
219
+ @tu.run
220
+
221
+ expected = "Loaded suite blah
222
+ Started
223
+ S.
224
+ Finished in 0.00
225
+
226
+ 1) Skipped:
227
+ test_skip(ATestCase) [FILE:LINE]:
228
+ not yet
229
+
230
+ 2 tests, 1 assertions, 0 failures, 0 errors, 1 skips
231
+ "
232
+ util_assert_report expected
233
+ end
234
+
235
+ def util_assert_report expected = nil
236
+ expected ||= "Loaded suite blah
237
+ Started
238
+ .
239
+ Finished in 0.00
240
+
241
+ 1 tests, 1 assertions, 0 failures, 0 errors, 0 skips
242
+ "
243
+ output = @output.string.sub(/Finished in .*/, "Finished in 0.00")
244
+ output.sub!(/Loaded suite .*/, 'Loaded suite blah')
245
+ output.sub!(/[\w\/\.]+:\d+/, 'FILE:LINE')
246
+ assert_equal(expected, output)
247
+ end
248
+
249
+ def test_run_failing_filtered
250
+ tc = Class.new(MiniTest::Unit::TestCase) do
251
+ def test_something
252
+ assert true
253
+ end
254
+
255
+ def test_failure
256
+ assert false
257
+ end
258
+ end
259
+
260
+ Object.const_set(:ATestCase, tc)
261
+
262
+ @tu.run(%w(-n /something/))
263
+
264
+ util_assert_report
265
+ end
266
+
267
+ def test_run_passing
268
+ tc = Class.new(MiniTest::Unit::TestCase) do
269
+ def test_something
270
+ assert true
271
+ end
272
+ end
273
+
274
+ Object.const_set(:ATestCase, tc)
275
+
276
+ @tu.run
277
+
278
+ util_assert_report
279
+ end
280
+ end
281
+
282
+ class TestMiniTestTestCase < MiniTest::Unit::TestCase
283
+ def setup
284
+ MiniTest::Unit::TestCase.reset
285
+
286
+ @tc = MiniTest::Unit::TestCase.new 'fake tc'
287
+ @zomg = "zomg ponies!"
288
+ @assertion_count = 1
289
+ end
290
+
291
+ def teardown
292
+ assert_equal(@assertion_count, @tc._assertions,
293
+ "expected #{@assertion_count} assertions to be fired during the test, not #{@tc._assertions}") if @tc._assertions
294
+ Object.send :remove_const, :ATestCase if defined? ATestCase
295
+ end
296
+
297
+ def test_class_inherited
298
+ @assertion_count = 0
299
+
300
+ Object.const_set(:ATestCase, Class.new(MiniTest::Unit::TestCase))
301
+
302
+ assert_equal [ATestCase], MiniTest::Unit::TestCase.test_suites
303
+ end
304
+
305
+ def test_class_test_suites
306
+ @assertion_count = 0
307
+
308
+ Object.const_set(:ATestCase, Class.new(MiniTest::Unit::TestCase))
309
+
310
+ assert_equal 1, MiniTest::Unit::TestCase.test_suites.size
311
+ assert_equal [ATestCase], MiniTest::Unit::TestCase.test_suites
312
+ end
313
+
314
+ def test_class_asserts_match_refutes
315
+ @assertion_count = 0
316
+
317
+ methods = MiniTest::Assertions.public_instance_methods
318
+ methods.map! { |m| m.to_s } if Symbol === methods.first
319
+
320
+ ignores = %w(assert_block assert_no_match assert_not_equal assert_not_nil
321
+ assert_not_same assert_nothing_thrown assert_raise
322
+ assert_nothing_raised assert_raises assert_throws assert_send)
323
+ asserts = methods.grep(/^assert/).sort - ignores
324
+ refutes = methods.grep(/^refute/).sort - ignores
325
+
326
+ assert_empty refutes.map { |n| n.sub(/^refute/, 'assert') } - asserts
327
+ assert_empty asserts.map { |n| n.sub(/^assert/, 'refute') } - refutes
328
+ end
329
+
330
+ def test_assert
331
+ @assertion_count = 2
332
+
333
+ @tc.assert_equal true, @tc.assert(true), "returns true on success"
334
+ end
335
+
336
+ def test_assert__triggered
337
+ util_assert_triggered "Failed assertion, no message given." do
338
+ @tc.assert false
339
+ end
340
+ end
341
+
342
+ def test_assert__triggered_message
343
+ util_assert_triggered @zomg do
344
+ @tc.assert false, @zomg
345
+ end
346
+ end
347
+
348
+ def test_assert_block
349
+ @tc.assert_block do
350
+ true
351
+ end
352
+ end
353
+
354
+ def test_assert_block_triggered
355
+ util_assert_triggered 'Expected block to return true value.' do
356
+ @tc.assert_block do
357
+ false
358
+ end
359
+ end
360
+ end
361
+
362
+ def test_assert_empty
363
+ @assertion_count = 2
364
+
365
+ @tc.assert_empty []
366
+ end
367
+
368
+ def test_assert_empty_triggered
369
+ @assertion_count = 2
370
+
371
+ util_assert_triggered "Expected [1] to be empty." do
372
+ @tc.assert_empty [1]
373
+ end
374
+ end
375
+
376
+ def test_assert_equal
377
+ @tc.assert_equal 1, 1
378
+ end
379
+
380
+ def test_assert_equal_different
381
+ util_assert_triggered "Expected 1, not 2." do
382
+ @tc.assert_equal 1, 2
383
+ end
384
+ end
385
+
386
+ def test_assert_in_delta
387
+ @tc.assert_in_delta 0.0, 1.0 / 1000, 0.1
388
+ end
389
+
390
+ def test_assert_in_delta_triggered
391
+ util_assert_triggered 'Expected 0.0 - 0.001 (0.001) to be < 1.0e-06.' do
392
+ @tc.assert_in_delta 0.0, 1.0 / 1000, 0.000001
393
+ end
394
+ end
395
+
396
+ def test_assert_in_epsilon
397
+ @assertion_count = 8
398
+
399
+ @tc.assert_in_epsilon 10000, 9991
400
+ @tc.assert_in_epsilon 9991, 10000
401
+ @tc.assert_in_epsilon 1.0, 1.001
402
+ @tc.assert_in_epsilon 1.001, 1.0
403
+
404
+ @tc.assert_in_epsilon 10000, 9999.1, 0.0001
405
+ @tc.assert_in_epsilon 9999.1, 10000, 0.0001
406
+ @tc.assert_in_epsilon 1.0, 1.0001, 0.0001
407
+ @tc.assert_in_epsilon 1.0001, 1.0, 0.0001
408
+ end
409
+
410
+ def test_assert_in_epsilon_triggered
411
+ util_assert_triggered 'Expected 10000 - 9990 (10) to be < 9.99.' do
412
+ @tc.assert_in_epsilon 10000, 9990
413
+ end
414
+ end
415
+
416
+ def test_assert_includes
417
+ @assertion_count = 2
418
+
419
+ @tc.assert_includes [true], true
420
+ end
421
+
422
+ def test_assert_includes_triggered
423
+ @assertion_count = 4
424
+
425
+ e = @tc.assert_raises MiniTest::Assertion do
426
+ @tc.assert_includes [true], false
427
+ end
428
+
429
+ expected = "Expected [true] to include false."
430
+ assert_equal expected, e.message
431
+ end
432
+
433
+ def test_assert_instance_of
434
+ @tc.assert_instance_of String, "blah"
435
+ end
436
+
437
+ def test_assert_instance_of_triggered
438
+ util_assert_triggered 'Expected "blah" to be an instance of Array, not String.' do
439
+ @tc.assert_instance_of Array, "blah"
440
+ end
441
+ end
442
+
443
+ def test_assert_kind_of
444
+ @tc.assert_kind_of String, "blah"
445
+ end
446
+
447
+ def test_assert_kind_of_triggered
448
+ util_assert_triggered 'Expected "blah" to be a kind of Array, not String.' do
449
+ @tc.assert_kind_of Array, "blah"
450
+ end
451
+ end
452
+
453
+ def test_assert_match
454
+ @assertion_count = 2
455
+ @tc.assert_match "blah blah blah", /\w+/
456
+ end
457
+
458
+ def test_assert_match_triggered
459
+ @assertion_count = 2
460
+ util_assert_triggered 'Expected /\d+/ to match "blah blah blah".' do
461
+ @tc.assert_match "blah blah blah", /\d+/
462
+ end
463
+ end
464
+
465
+ def test_assert_nil
466
+ @tc.assert_nil nil
467
+ end
468
+
469
+ def test_assert_nil_triggered
470
+ util_assert_triggered 'Expected 42 to be nil.' do
471
+ @tc.assert_nil 42
472
+ end
473
+ end
474
+
475
+ def test_assert_operator
476
+ @tc.assert_operator 2, :>, 1
477
+ end
478
+
479
+ def test_assert_operator_triggered
480
+ util_assert_triggered "Expected 2 to be < 1." do
481
+ @tc.assert_operator 2, :<, 1
482
+ end
483
+ end
484
+
485
+ def test_assert_raises
486
+ @assertion_count = 2
487
+
488
+ @tc.assert_raises RuntimeError do
489
+ raise "blah"
490
+ end
491
+ end
492
+
493
+ def test_assert_raises_triggered_different
494
+ @assertion_count = 2
495
+
496
+ e = assert_raises MiniTest::Assertion do
497
+ @tc.assert_raises RuntimeError do
498
+ raise SyntaxError, "icky"
499
+ end
500
+ end
501
+
502
+ expected = "<[RuntimeError]> exception expected, not
503
+ Class: <SyntaxError>
504
+ Message: <\"icky\">
505
+ ---Backtrace---
506
+ FILE:LINE:in `test_assert_raises_triggered_different'
507
+ ---------------.
508
+ Expected [RuntimeError] to include SyntaxError."
509
+
510
+ assert_equal expected, expected.gsub(/[\w\/\.]+:\d+/, 'FILE:LINE')
511
+ end
512
+
513
+ def test_assert_raises_triggered_none
514
+ e = assert_raises MiniTest::Assertion do
515
+ @tc.assert_raises MiniTest::Assertion do
516
+ # do nothing
517
+ end
518
+ end
519
+
520
+ expected = "MiniTest::Assertion expected but nothing was raised."
521
+
522
+ assert_equal expected, e.message
523
+ end
524
+
525
+ def test_assert_respond_to
526
+ @tc.assert_respond_to "blah", :empty?
527
+ end
528
+
529
+ def test_assert_respond_to_triggered
530
+ util_assert_triggered 'Expected "blah" (String) to respond to #rawr!.' do
531
+ @tc.assert_respond_to "blah", :rawr!
532
+ end
533
+ end
534
+
535
+ def test_assert_same
536
+ @assertion_count = 3
537
+
538
+ o = "blah"
539
+ @tc.assert_same 1, 1
540
+ @tc.assert_same :blah, :blah
541
+ @tc.assert_same o, o
542
+ end
543
+
544
+ def test_assert_same_triggered
545
+ @assertion_count = 2
546
+
547
+ util_assert_triggered 'Expected 2 (0xXXX) to be the same as 1 (0xXXX).' do
548
+ @tc.assert_same 1, 2
549
+ end
550
+
551
+ s1 = "blah"
552
+ s2 = "blah"
553
+
554
+ util_assert_triggered 'Expected "blah" (0xXXX) to be the same as "blah" (0xXXX).' do
555
+ @tc.assert_same s1, s2
556
+ end
557
+ end
558
+
559
+ def test_assert_send
560
+ @tc.assert_send [1, :<, 2]
561
+ end
562
+
563
+ def test_assert_send_bad
564
+ util_assert_triggered "Expected 1.>(*[2]) to return true." do
565
+ @tc.assert_send [1, :>, 2]
566
+ end
567
+ end
568
+
569
+ def test_assert_throws
570
+ @tc.assert_throws(:blah) do
571
+ throw :blah
572
+ end
573
+ end
574
+
575
+ def test_assert_throws_different
576
+ util_assert_triggered 'Expected :blah to have been thrown, not :not_blah.' do
577
+ @tc.assert_throws(:blah) do
578
+ throw :not_blah
579
+ end
580
+ end
581
+ end
582
+
583
+ def test_assert_throws_unthrown
584
+ util_assert_triggered 'Expected :blah to have been thrown.' do
585
+ @tc.assert_throws(:blah) do
586
+ # do nothing
587
+ end
588
+ end
589
+ end
590
+
591
+ def test_capture_io
592
+ @assertion_count = 0
593
+
594
+ out, err = capture_io do
595
+ puts 'hi'
596
+ warn 'bye!'
597
+ end
598
+
599
+ assert_equal "hi\n", out
600
+ assert_equal "bye!\n", err
601
+ end
602
+
603
+ def test_flunk
604
+ util_assert_triggered 'Epic Fail!' do
605
+ @tc.flunk
606
+ end
607
+ end
608
+
609
+ def test_flunk_message
610
+ util_assert_triggered @zomg do
611
+ @tc.flunk @zomg
612
+ end
613
+ end
614
+
615
+ def test_message
616
+ @assertion_count = 0
617
+
618
+ assert_equal "blah2.", @tc.message { "blah2" }.call
619
+ assert_equal "blah2.", @tc.message("") { "blah2" }.call
620
+ assert_equal "blah1.\nblah2.", @tc.message("blah1") { "blah2" }.call
621
+ end
622
+
623
+ def test_pass
624
+ @tc.pass
625
+ end
626
+
627
+ def test_test_methods_sorted
628
+ @assertion_count = 0
629
+
630
+ sample_test_case = Class.new(MiniTest::Unit::TestCase)
631
+
632
+ class << sample_test_case
633
+ def test_order; :sorted end
634
+ end
635
+
636
+ sample_test_case.instance_eval do
637
+ define_method :test_test3 do assert "does not matter" end
638
+ define_method :test_test2 do assert "does not matter" end
639
+ define_method :test_test1 do assert "does not matter" end
640
+ end
641
+
642
+ expected = %w(test_test1 test_test2 test_test3)
643
+ assert_equal expected, sample_test_case.test_methods
644
+ end
645
+
646
+ def test_test_methods_random
647
+ @assertion_count = 0
648
+
649
+ sample_test_case = Class.new(MiniTest::Unit::TestCase)
650
+
651
+ class << sample_test_case
652
+ def test_order; :random end
653
+ end
654
+
655
+ sample_test_case.instance_eval do
656
+ define_method :test_test1 do assert "does not matter" end
657
+ define_method :test_test2 do assert "does not matter" end
658
+ define_method :test_test3 do assert "does not matter" end
659
+ end
660
+
661
+ srand 42
662
+ expected = %w(test_test1 test_test2 test_test3)
663
+ max = expected.size
664
+ expected = expected.sort_by { rand(max) }
665
+
666
+ srand 42
667
+ result = sample_test_case.test_methods
668
+
669
+ assert_equal expected, result
670
+ end
671
+
672
+ def test_refute
673
+ @assertion_count = 2
674
+
675
+ @tc.assert_equal false, @tc.refute(false), "returns false on success"
676
+ end
677
+
678
+ def test_refute_empty
679
+ @assertion_count = 2
680
+
681
+ @tc.refute_empty [1]
682
+ end
683
+
684
+ def test_refute_empty_triggered
685
+ @assertion_count = 2
686
+
687
+ util_assert_triggered "Expected [] to not be empty." do
688
+ @tc.refute_empty []
689
+ end
690
+ end
691
+
692
+ def test_refute_equal
693
+ @tc.refute_equal "blah", "yay"
694
+ end
695
+
696
+ def test_refute_equal_triggered
697
+ util_assert_triggered 'Expected "blah" to not be equal to "blah".' do
698
+ @tc.refute_equal "blah", "blah"
699
+ end
700
+ end
701
+
702
+ def test_refute_in_delta
703
+ @tc.refute_in_delta 0.0, 1.0 / 1000, 0.000001
704
+ end
705
+
706
+ def test_refute_in_delta_triggered
707
+ util_assert_triggered 'Expected 0.0 - 0.001 (0.001) to not be < 0.1.' do
708
+ @tc.refute_in_delta 0.0, 1.0 / 1000, 0.1
709
+ end
710
+ end
711
+
712
+ def test_refute_in_epsilon
713
+ @tc.refute_in_epsilon 10000, 9990
714
+ end
715
+
716
+ def test_refute_in_epsilon_triggered
717
+ util_assert_triggered 'Expected 10000 - 9991 (9) to not be < 10.0.' do
718
+ @tc.refute_in_epsilon 10000, 9991
719
+ fail
720
+ end
721
+ end
722
+
723
+ def test_refute_includes
724
+ @assertion_count = 2
725
+
726
+ @tc.refute_includes [true], false
727
+ end
728
+
729
+ def test_refute_includes_triggered
730
+ @assertion_count = 4
731
+
732
+ e = @tc.assert_raises MiniTest::Assertion do
733
+ @tc.refute_includes [true], true
734
+ end
735
+
736
+ expected = "Expected [true] to not include true."
737
+ assert_equal expected, e.message
738
+ end
739
+
740
+ def test_refute_instance_of
741
+ @tc.refute_instance_of Array, "blah"
742
+ end
743
+
744
+ def test_refute_instance_of_triggered
745
+ util_assert_triggered 'Expected "blah" to not be an instance of String.' do
746
+ @tc.refute_instance_of String, "blah"
747
+ end
748
+ end
749
+
750
+ def test_refute_kind_of
751
+ @tc.refute_kind_of Array, "blah"
752
+ end
753
+
754
+ def test_refute_kind_of_triggered
755
+ util_assert_triggered 'Expected "blah" to not be a kind of String.' do
756
+ @tc.refute_kind_of String, "blah"
757
+ end
758
+ end
759
+
760
+ def test_refute_match
761
+ @tc.refute_match "blah blah blah", /\d+/
762
+ end
763
+
764
+ def test_refute_match_triggered
765
+ util_assert_triggered 'Expected /\w+/ to not match "blah blah blah".' do
766
+ @tc.refute_match "blah blah blah", /\w+/
767
+ end
768
+ end
769
+
770
+ def test_refute_nil
771
+ @tc.refute_nil 42
772
+ end
773
+
774
+ def test_refute_nil_triggered
775
+ util_assert_triggered 'Expected nil to not be nil.' do
776
+ @tc.refute_nil nil
777
+ end
778
+ end
779
+
780
+ def test_refute_operator
781
+ @tc.refute_operator 2, :<, 1
782
+ end
783
+
784
+ def test_refute_operator_triggered
785
+ util_assert_triggered "Expected 2 to not be > 1." do
786
+ @tc.refute_operator 2, :>, 1
787
+ end
788
+ end
789
+
790
+ def test_refute_respond_to
791
+ @tc.refute_respond_to "blah", :rawr!
792
+ end
793
+
794
+ def test_refute_respond_to_triggered
795
+ util_assert_triggered 'Expected "blah" to not respond to empty?.' do
796
+ @tc.refute_respond_to "blah", :empty?
797
+ end
798
+ end
799
+
800
+ def test_refute_same
801
+ @tc.refute_same 1, 2
802
+ end
803
+
804
+ # TODO: "with id <id>" crap from assertions.rb
805
+ def test_refute_same_triggered
806
+ util_assert_triggered 'Expected 1 to not be the same as 1.' do
807
+ @tc.refute_same 1, 1
808
+ end
809
+ end
810
+
811
+ def test_skip
812
+ @assertion_count = 0
813
+
814
+ util_assert_triggered "haha!", MiniTest::Skip do
815
+ @tc.skip "haha!"
816
+ end
817
+ end
818
+
819
+ def util_assert_triggered expected, klass = MiniTest::Assertion
820
+ e = assert_raises(klass) do
821
+ yield
822
+ end
823
+
824
+ msg = e.message.sub(/(---Backtrace---).*/m, '\1')
825
+ msg.gsub!(/\(0x[0-9a-f]+\)/, '(0xXXX)')
826
+
827
+ assert_equal expected, msg
828
+ end
829
+
830
+ if ENV['DEPRECATED'] then
831
+ require 'test/unit/assertions'
832
+ def test_assert_nothing_raised
833
+ @tc.assert_nothing_raised do
834
+ # do nothing
835
+ end
836
+ end
837
+
838
+ def test_assert_nothing_raised_triggered
839
+ expected = 'Exception raised:
840
+ Class: <RuntimeError>
841
+ Message: <"oops!">
842
+ ---Backtrace---'
843
+
844
+ util_assert_triggered expected do
845
+ @tc.assert_nothing_raised do
846
+ raise "oops!"
847
+ end
848
+ end
849
+ end
850
+ end
851
+ end
metadata ADDED
@@ -0,0 +1,87 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: minitest_tu_shim
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.3.0
5
+ platform: ruby
6
+ authors:
7
+ - Ryan Davis
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-10-09 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: minitest
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: hoe
27
+ type: :development
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 1.8.0
34
+ version:
35
+ description: minitest_te_shim bridges the gap between the small and fast minitest and ruby's huge and slow test/unit.
36
+ email:
37
+ - ryand-ruby@zenspider.com
38
+ executables:
39
+ - use_minitest
40
+ extensions: []
41
+
42
+ extra_rdoc_files:
43
+ - History.txt
44
+ - Manifest.txt
45
+ - README.txt
46
+ files:
47
+ - .autotest
48
+ - History.txt
49
+ - Manifest.txt
50
+ - README.txt
51
+ - Rakefile
52
+ - bin/use_minitest
53
+ - lib/test/unit.rb
54
+ - lib/test/unit/assertions.rb
55
+ - lib/test/unit/deprecate.rb
56
+ - lib/test/unit/error.rb
57
+ - lib/test/unit/testcase.rb
58
+ - test/test_mini_test.rb
59
+ has_rdoc: true
60
+ homepage: http://rubyforge.org/projects/bfts
61
+ post_install_message:
62
+ rdoc_options:
63
+ - --main
64
+ - README.txt
65
+ require_paths:
66
+ - lib
67
+ required_ruby_version: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: "0"
72
+ version:
73
+ required_rubygems_version: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: "0"
78
+ version:
79
+ requirements: []
80
+
81
+ rubyforge_project: bfts
82
+ rubygems_version: 1.3.0
83
+ signing_key:
84
+ specification_version: 2
85
+ summary: minitest_te_shim bridges the gap between the small and fast minitest and ruby's huge and slow test/unit.
86
+ test_files:
87
+ - test/test_mini_test.rb