def define_test_tasks
default_tasks = []
task :test
if File.directory? "test" then
desc "Run the test suite. Use FILTER or TESTOPTS to add flags/args."
task :test do
ruby make_test_cmd
end
desc "Print out the test command. Good for profiling and other tools."
task :test_cmd do
puts make_test_cmd
end
desc "Run the test suite using multiruby."
task :multi do
ENV["EXCLUDED_VERSIONS"] = multiruby_skip.join(":")
system "multiruby -S rake"
end
desc "Show which test files fail when run alone."
task :test_deps do
tests = Dir[*self.test_globs].uniq
paths = %w[bin lib test].join(File::PATH_SEPARATOR)
null_dev = Hoe::WINDOZE ? "> NUL 2>&1" : "> /dev/null 2>&1"
tests.each do |test|
unless system "ruby -I#{paths} #{test} #{null_dev}" then
puts "Dependency Issues: #{test}"
end
end
end
if testlib == :minitest then
desc "Show bottom 25 tests wrt time."
task "test:slow" do
sh "rake TESTOPTS=-v | sort -n -k2 -t= | tail -25"
end
end
default_tasks << :test
end
if File.directory? "spec" then
found = try_loading_rspec2 || try_loading_rspec1
if found then
default_tasks << :spec
else
warn "Found spec dir, but couldn't load rspec (1 or 2) task. skipping."
end
end
desc "Run the default task(s)."
task :default => default_tasks
unless default_tasks.empty? then
gemtest = ".gemtest"
gemtest.encode!(Encoding::UTF_8) if gemtest.respond_to?(:encoding)
self.spec.files += [gemtest]
pkg = pkg_path
turd = "#{pkg}/.gemtest"
file turd => pkg_path do
touch turd
end
file "#{pkg}.gem" => turd
end
desc "Run ZenTest against the package."
task :audit do
libs = %w[lib test ext].join(File::PATH_SEPARATOR)
sh "zentest -I=#{libs} #{spec.files.grep(/^(lib|test)/).join(" ")}"
end
end