You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
2.1 KiB
75 lines
2.1 KiB
2 years ago
|
# -*- ruby -*-
|
||
|
|
||
|
require "rubygems"
|
||
|
require "hoe"
|
||
|
|
||
|
Hoe.plugin :seattlerb
|
||
|
Hoe.plugin :rdoc
|
||
|
|
||
|
Hoe.spec "minitest" do
|
||
|
developer "Ryan Davis", "ryand-ruby@zenspider.com"
|
||
|
|
||
|
license "MIT"
|
||
|
|
||
|
require_ruby_version [">= 2.2", "< 4.0"]
|
||
|
end
|
||
|
|
||
|
desc "Find missing expectations"
|
||
|
task :specs do
|
||
|
$:.unshift "lib"
|
||
|
require "minitest/test"
|
||
|
require "minitest/spec"
|
||
|
|
||
|
pos_prefix, neg_prefix = "must", "wont"
|
||
|
skip_re = /^(must|wont)$|wont_(throw)|must_(block|not?_|nothing|send|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",
|
||
|
/(must|wont)_predicate/ => '\1_be',
|
||
|
/(must|wont)_path_exists/ => 'path_\1_exist',
|
||
|
}
|
||
|
|
||
|
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
|
||
|
|
||
|
task :bugs do
|
||
|
sh "for f in bug*.rb ; do echo $f; echo; #{Gem.ruby} -Ilib $f && rm $f ; done"
|
||
|
end
|
||
|
|
||
|
# vim: syntax=Ruby
|