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
|
# File 'lib/minitest/spec.rb', line 6
def infect_with_assertions pos_prefix, neg_prefix, skip_re, map = {}
MiniTest::Assertions.public_instance_methods(false).each do |meth|
meth = meth.to_s
new_name = case meth
when /^assert/ then
meth.sub(/^assert/, pos_prefix.to_s)
when /^refute/ then
meth.sub(/^refute/, neg_prefix.to_s)
end
next unless new_name
next if new_name =~ skip_re
regexp, replacement = map.find { |re, _| new_name =~ re }
new_name.sub! regexp, replacement if replacement
self.class_eval <<-EOM
def #{new_name} *args, &block
return MiniTest::Spec.current.#{meth}(*args, &self) if Proc === self
return MiniTest::Spec.current.#{meth}(args.first, self) if args.size == 1
return MiniTest::Spec.current.#{meth}(self, *args)
end
EOM
end
end
|