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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
# test/unit compatibility layer using minitest.
require 'minitest/unit'
require 'pp'
module Test
module Unit
TEST_UNIT_IMPLEMENTATION = 'test/unit compatibility layer using minitest'
def self.setup_argv(original_argv=ARGV)
argv = []
files = nil
reject = []
original_argv = original_argv.dup
while arg = original_argv.shift
case arg
when '-v'
argv << '-v'
when '-n', '--name'
argv << arg
argv << original_argv.shift
when '-x'
reject << original_argv.shift
else
files ||= []
if File.directory? arg
files.concat Dir["#{arg}/**/test_*.rb"]
elsif File.file? arg
files << arg
else
raise ArgumentError, "file not found: #{arg}"
end
end
end
if files == nil
files = Dir["test/**/test_*.rb"]
end
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 $!
end
}
argv.concat files
ARGV.replace argv
end
module Assertions
include MiniTest::Assertions
def mu_pp(obj)
obj.pretty_inspect.chomp
end
def assert_raise(*args, &b)
assert_raises(*args, &b)
end
def assert_nothing_raised(*args)
if Module === args.last
msg = nil
else
msg = args.pop
end
begin
yield
rescue Exception => e
if ((args.empty? && !e.instance_of?(MiniTest::Assertion)) ||
args.any? {|a| a.instance_of?(Module) ? e.is_a?(a) : e.class == a })
msg = message(msg) { "Exception raised:\n<#{mu_pp(act)}>" }
assert(false, msg)
else
raise
end
end
nil
end
def assert_equal(exp, act, msg = nil)
msg = message(msg) { "Expected\n<#{mu_pp(exp)}> but\n<#{mu_pp(act)}>" }
assert(exp == act, msg)
end
def assert_not_nil(exp, msg=nil)
msg = message(msg) { "<#{mu_pp(exp)}> expected to not be nil" }
assert(!exp.nil?, msg)
end
def assert_not_equal(exp, act, msg=nil)
msg = message(msg) { "<#{mu_pp(exp)}> expected to be != to\n<#{mu_pp(act)}>" }
assert(exp != act, msg)
end
def assert_no_match(regexp, string, msg=nil)
assert_instance_of(Regexp, regexp, "The first argument to assert_no_match should be a Regexp.")
msg = message(msg) { "<#{mu_pp(regexp)}> expected to not match\n<#{mu_pp(string)}>" }
assert(regexp !~ string, msg)
end
def assert_not_same(expected, actual, message="")
msg = message(msg) { build_message(message, <<EOT, expected, expected.__id__, actual, actual.__id__) }
<?>
with id <?> expected to not be equal\\? to
<?>
with id <?>.
EOT
assert(!actual.equal?(expected), msg)
end
def build_message(head, template=nil, *arguments)
template &&= template.chomp
template.gsub(/\?/) { mu_pp(arguments.shift) }
end
end
class TestCase < MiniTest::Unit::TestCase
include Assertions
end
end
end
MiniTest::Unit.autorun
|