-
Notifications
You must be signed in to change notification settings - Fork 193
/
unit.rb
66 lines (57 loc) · 1.5 KB
/
unit.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# test/unit compatibility layer using minitest.
require 'minitest/unit'
require 'test/unit/assertions'
require 'test/unit/testcase'
module Test
module Unit
TEST_UNIT_IMPLEMENTATION = 'test/unit compatibility layer using minitest'
def self.setup_argv(original_argv=ARGV)
minitest_argv = []
files = []
reject = []
original_argv = original_argv.dup
while arg = original_argv.shift
case arg
when '-v'
minitest_argv << '-v'
when '-n', '--name'
minitest_argv << arg
minitest_argv << original_argv.shift
when '-x'
reject << original_argv.shift
else
files << arg
end
end
if block_given?
files = yield files
end
files.map! {|f|
f = f.gsub(Regexp.compile(Regexp.quote(File::ALT_SEPARATOR)), File::SEPARATOR) if File::ALT_SEPARATOR
if File.directory? f
Dir["#{f}/**/test_*.rb"]
elsif File.file? f
f
else
raise ArgumentError, "file not found: #{f}"
end
}
files.flatten!
reject_pat = Regexp.union(reject.map {|r| /#{r}/ })
files.reject! {|f| reject_pat =~ f }
files.each {|f|
d = File.dirname(File.expand_path(f))
unless $:.include? d
$: << d
end
begin
require f
rescue LoadError
puts "#{f}: #{$!}"
end
}
ARGV.replace minitest_argv
end
end
end
MiniTest::Unit.autorun