forked from minitest/minitest
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Rakefile
94 lines (75 loc) · 2.47 KB
/
Rakefile
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
# -*- ruby -*-
$TESTING_MINIUNIT = true
require 'rubygems'
require 'hoe'
Hoe.plugin :seattlerb
Hoe.spec 'minitest' do
developer 'Ryan Davis', '[email protected]'
self.rubyforge_name = "bfts"
self.testlib = :minitest
end
def loc dir
system "find #{dir} -name \\*.rb | xargs wc -l | tail -1"
end
desc "Find missing expectations"
task :specs do
$:.unshift "lib"
require "minitest/unit"
require "minitest/spec"
pos_prefix, neg_prefix = "must", "wont"
skip_re = /^(must|wont)$|wont_(throw)|must_(block|not?_|nothing|raise$)/x
dont_flip_re = /(must|wont)_(include|respond_to)/
map = {
/(must_throw)s/ => '\1',
/(?!not)_same/ => '_be_same_as',
/_in_/ => '_be_within_',
/_operator/ => '_be',
/_includes/ => '_include',
/(must|wont)_(.*_of|nil|silent|empty)/ => '\1_be_\2',
/must_raises/ => 'must_raise',
}
expectations = MiniTest::Expectations.public_instance_methods.map(&:to_s)
assertions = MiniTest::Assertions.public_instance_methods.map(&:to_s)
assertions.sort.each do |assertion|
expectation = case assertion
when /^assert/ then
assertion.sub(/^assert/, pos_prefix.to_s)
when /^refute/ then
assertion.sub(/^refute/, neg_prefix.to_s)
end
next unless expectation
next if expectation =~ skip_re
regexp, replacement = map.find { |re, _| expectation =~ re }
expectation.sub! regexp, replacement if replacement
next if expectations.include? expectation
args = [assertion, expectation].map(&:to_sym).map(&:inspect)
args << :reverse if expectation =~ dont_flip_re
puts
puts "##"
puts "# :method: #{expectation}"
puts "# See MiniTest::Assertions##{assertion}"
puts
puts "infect_an_assertion #{args.join ", "}"
end
end
desc "stupid line count"
task :dickwag do
puts
puts "miniunit"
puts
print " lib loc"; loc "lib"
print " test loc"; loc "test"
print " totl loc"; loc "lib test"
print " flog = "; system "flog -s lib"
puts
puts "test/unit"
puts
Dir.chdir File.expand_path("~/Work/svn/ruby/ruby_1_8") do
print " lib loc"; loc "lib/test"
print " test loc"; loc "test/testunit"
print " totl loc"; loc "lib/test test/testunit"
print " flog = "; system "flog -s lib/test"
end
puts
end
# vim: syntax=Ruby