summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Davis <ryand-ruby@zenspider.com>2022-12-15 11:36:29 -0800
committerRyan Davis <ryand-ruby@zenspider.com>2022-12-15 11:36:29 -0800
commit58e04a76b43e88ea7783647314b5ff6edc5cfd74 (patch)
tree894fdc8d24709fbe9eb8eef0dc84c9cf962e6a01
parenta5a1153a8482bf60aaa05cf5fd7f8828755c15ea (diff)
downloadhoe-58e04a76b43e88ea7783647314b5ff6edc5cfd74.tar.gz
! Removed Minitest::TestTask. Shipped with minitest 5.16+ now!
! Removed direct support for rspec, test/unit. Still extendable tho. ! Removed support for old style readme parsing. [git-p4: depot-paths = "//src/hoe/dev/": change = 13614]
-rw-r--r--Manifest.txt1
-rw-r--r--lib/hoe.rb7
-rw-r--r--lib/hoe/test.rb130
-rw-r--r--lib/minitest/test_task.rb314
-rw-r--r--test/test_hoe.rb8
-rw-r--r--test/test_hoe_test.rb48
6 files changed, 6 insertions, 502 deletions
diff --git a/Manifest.txt b/Manifest.txt
index be04a7a..cf7c93e 100644
--- a/Manifest.txt
+++ b/Manifest.txt
@@ -24,7 +24,6 @@ lib/hoe/rake.rb
lib/hoe/rdoc.rb
lib/hoe/signing.rb
lib/hoe/test.rb
-lib/minitest/test_task.rb
template/.autotest.erb
template/History.txt.erb
template/Manifest.txt.erb
diff --git a/lib/hoe.rb b/lib/hoe.rb
index b022352..34583b2 100644
--- a/lib/hoe.rb
+++ b/lib/hoe.rb
@@ -87,7 +87,7 @@ class Hoe
include Rake::DSL if defined?(Rake::DSL)
# duh
- VERSION = "3.26.0"
+ VERSION = "4.0.0"
@@plugins = [:clean, :debug, :deps, :flay, :flog, :newb, :package,
:publish, :gemcutter, :signing, :test]
@@ -726,10 +726,7 @@ class Hoe
if lines.first =~ /::/ then
Hash[lines.map { |line| line.split(/\s*::\s*/) }]
else
- warn "DEPRECATED: Please switch readme to hash format for urls."
- warn " Only defining 'home' url."
- warn " This will be removed on or after 2020-10-28."
- { "home" => lines.first }
+ raise "Please switch readme to hash format for urls."
end
end
diff --git a/lib/hoe/test.rb b/lib/hoe/test.rb
index a19d6ca..f59d36d 100644
--- a/lib/hoe/test.rb
+++ b/lib/hoe/test.rb
@@ -10,17 +10,10 @@
# test_deps:: Show which test files fail when run alone.
module Hoe::Test
- def deprecate msg # :nodoc:
- where = caller_locations[1]
-
- warn "DEPRECATED: %s from %s" % [msg, where]
- end
-
##
# Configuration for the supported test frameworks for test task.
SUPPORTED_TEST_FRAMEWORKS = {
- :testunit => "test/unit",
:minitest => "minitest/autorun",
:none => nil,
}
@@ -47,16 +40,6 @@ module Hoe::Test
attr_accessor :test_prelude
##
- # Optional: RSpec dirs. [default: %w(spec lib)]
-
- attr_accessor :rspec_dirs
-
- ##
- # Optional: RSpec options. [default: []]
-
- attr_accessor :rspec_options
-
- ##
# The test task created for this plugin.
attr_accessor :test_task
@@ -68,8 +51,7 @@ module Hoe::Test
self.multiruby_skip ||= []
self.testlib ||= :minitest
self.test_prelude ||= nil
- self.rspec_dirs ||= %w[spec lib]
- self.rspec_options ||= []
+ self.test_task = nil
end
##
@@ -83,44 +65,13 @@ module Hoe::Test
if File.directory? "test" then
case testlib
when :minitest then
- require "minitest/test_task" # currently in hoe, but will move
+ require "minitest/test_task" # in minitest 5.16+
test_prelude = self.test_prelude
self.test_task = Minitest::TestTask.create :test do |t|
t.test_prelude = test_prelude
t.libs.prepend Hoe.include_dirs.uniq
end
- when :testunit 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 "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
when :none then
# do nothing
else
@@ -140,16 +91,6 @@ module Hoe::Test
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
@@ -159,71 +100,4 @@ module Hoe::Test
sh "zentest -I=#{libs} #{spec.files.grep(/^(lib|test)/).join(" ")}"
end
end
-
- ##
- # Generate the test command-line.
-
- def make_test_cmd
- unless SUPPORTED_TEST_FRAMEWORKS.key?(testlib)
- raise "unsupported test framework #{testlib}"
- end
-
- deprecate "Moving to Minitest::TestTask. Let me know if you use this!"
-
- framework = SUPPORTED_TEST_FRAMEWORKS[testlib]
-
- tests = ["rubygems"]
- tests << framework if framework
- tests << test_globs.sort.map { |g| Dir.glob(g) }
- tests.flatten!
- tests.map! { |f| %(require "#{f}") }
-
- tests.insert 1, test_prelude if test_prelude
-
- filter = (ENV["FILTER"] || ENV["TESTOPTS"] || "").dup
- filter << " -n #{ENV["N"]}" if ENV["N"]
- filter << " -e #{ENV["X"]}" if ENV["X"]
-
- "#{Hoe::RUBY_FLAGS} -e '#{tests.join("; ")}' -- #{filter}"
- end
-
- ##
- # Attempt to load RSpec 2, returning true if successful
-
- def try_loading_rspec2
- deprecate "I want to drop this entirely. Let me know if you use this!"
-
- require "rspec/core/rake_task"
-
- desc "Run all specifications"
- RSpec::Core::RakeTask.new(:spec) do |t|
- t.rspec_opts = self.rspec_options
- t.rspec_opts << "-I#{self.rspec_dirs.join(":")}" unless
- rspec_dirs.empty?
- end
-
- true
- rescue LoadError => err
- warn "%p while trying to load RSpec 2: %s" % [ err.class, err.message ]
- false
- end
-
- ##
- # Attempt to load RSpec 1, returning true if successful
-
- def try_loading_rspec1
- deprecate "I want to drop this entirely. Let me know if you use this!"
-
- require "spec/rake/spectask"
-
- desc "Run all specifications"
- Spec::Rake::SpecTask.new(:spec) do |t|
- t.libs = self.rspec_dirs
- t.spec_opts = self.rspec_options
- end
- true
- rescue LoadError => err
- warn "%p while trying to load RSpec 1: %s" % [ err.class, err.message ]
- false
- end
end
diff --git a/lib/minitest/test_task.rb b/lib/minitest/test_task.rb
deleted file mode 100644
index cee8c4e..0000000
--- a/lib/minitest/test_task.rb
+++ /dev/null
@@ -1,314 +0,0 @@
-require "shellwords"
-require "rbconfig"
-require "rake/tasklib"
-
-warn <<~EOM
- minitest/test_task.rb is now packaged with minitest. If you see
- this, you are getting it from hoe instead. If you're NOT able to
- upgrade minitest to pick this up, please drop an issue on
- seattlerb/hoe and let me know.
-
- Required from #{caller[2]}
-EOM
-
-module Minitest # :nodoc:
-
- ##
- # Minitest::TestTask is a rake helper that generates several rake
- # tasks under the main test task's name-space.
- #
- # task <name> :: the main test task
- # task <name>:cmd :: prints the command to use
- # task <name>:deps :: runs each test file by itself to find dependency errors
- # task <name>:slow :: runs the tests and reports the slowest 25 tests.
- #
- # Examples:
- #
- # Minitest::TestTask.create
- #
- # The most basic and default setup.
- #
- # Minitest::TestTask.create :my_tests
- #
- # The most basic/default setup, but with a custom name
- #
- # Minitest::TestTask.create :unit do |t|
- # t.test_globs = ["test/unit/**/*_test.rb"]
- # t.warning = false
- # end
- #
- # Customize the name and only run unit tests.
-
- class TestTask < Rake::TaskLib
- WINDOWS = RbConfig::CONFIG["host_os"] =~ /mswin|mingw/ # :nodoc:
-
- ##
- # Create several test-oriented tasks under +name+. Takes an
- # optional block to customize variables.
-
- def self.create name = :test, &block
- task = new name
- task.instance_eval(&block) if block
- task.process_env
- task.define
- task
- end
-
- ##
- # Extra arguments to pass to the tests. Defaults empty but gets
- # populated by a number of enviroment variables:
- #
- # N (-n flag) :: a string or regexp of tests to run.
- # X (-e flag) :: a string or regexp of tests to exclude.
- # A (arg) :: quick way to inject an arbitrary argument (eg A=--help).
- #
- # See #process_env
-
- attr_accessor :extra_args
-
- ##
- # The code to load the framework. Defaults to requiring
- # minitest/autorun...
- #
- # Why do I have this as an option?
-
- attr_accessor :framework
-
- ##
- # Extra library directories to include. Defaults to %w[lib test
- # .]. Also uses $MT_LIB_EXTRAS allowing you to dynamically
- # override/inject directories for custom runs.
-
- attr_accessor :libs
-
- ##
- # The name of the task and base name for the other tasks generated.
-
- attr_accessor :name
-
- ##
- # File globs to find test files. Defaults to something sensible to
- # find test files under the test directory.
-
- attr_accessor :test_globs
-
- ##
- # Turn on ruby warnings (-w flag). Defaults to true.
-
- attr_accessor :warning
-
- ##
- # Optional: Additional ruby to run before the test framework is loaded.
-
- attr_accessor :test_prelude
-
- ##
- # Print out commands as they run. Defaults to Rake's +trace+ (-t
- # flag) option.
-
- attr_accessor :verbose
-
- ##
- # Use TestTask.create instead.
-
- def initialize name = :test # :nodoc:
- self.extra_args = []
- self.framework = %(require "minitest/autorun")
- self.libs = %w[lib test .]
- self.name = name
- self.test_globs = ["test/**/{test,spec}_*.rb",
- "test/**/*_{test,spec}.rb"]
- self.test_prelude = nil
- self.verbose = Rake.application.options.trace
- self.warning = true
- end
-
- ##
- # Extract variables from the environment and convert them to
- # command line arguments. See #extra_args.
- #
- # Environment Variables:
- #
- # MT_LIB_EXTRAS :: Extra libs to dynamically override/inject for custom runs.
- # N :: Tests to run (string or /regexp/).
- # X :: Tests to exclude (string or /regexp/).
- # A :: Any extra arguments. Honors shell quoting.
- #
- # Deprecated:
- #
- # TESTOPTS :: For argument passing, use +A+.
- # N :: For parallel testing, use +MT_CPU+.
- # FILTER :: Same as +TESTOPTS+.
-
- def process_env
- warn "TESTOPTS is deprecated in Minitest::TestTask. Use A instead" if
- ENV["TESTOPTS"]
- warn "FILTER is deprecated in Minitest::TestTask. Use A instead" if
- ENV["FILTER"]
- warn "N is deprecated in Minitest::TestTask. Use MT_CPU instead" if
- ENV["N"] && ENV["N"].to_i > 0
-
- lib_extras = (ENV["MT_LIB_EXTRAS"] || "").split File::PATH_SEPARATOR
- self.libs[0,0] = lib_extras
-
- extra_args << "-n" << ENV["N"] if ENV["N"]
- extra_args << "-e" << ENV["X"] if ENV["X"]
- extra_args.concat Shellwords.split(ENV["TESTOPTS"]) if ENV["TESTOPTS"]
- extra_args.concat Shellwords.split(ENV["FILTER"]) if ENV["FILTER"]
- extra_args.concat Shellwords.split(ENV["A"]) if ENV["A"]
-
- ENV.delete "N" if ENV["N"]
-
- # TODO? RUBY_DEBUG = ENV["RUBY_DEBUG"]
- # TODO? ENV["RUBY_FLAGS"]
-
- extra_args.compact!
- end
-
- def define # :nodoc:
- default_tasks = []
-
- desc "Run the test suite. Use N, X, A, and TESTOPTS to add flags/args."
- task name do
- ruby make_test_cmd, verbose:verbose
- end
-
- desc "Print out the test command. Good for profiling and other tools."
- task "#{name}:cmd" do
- puts "ruby #{make_test_cmd}"
- end
-
- desc "Show which test files fail when run in isolation."
- task "#{name}:isolated" do
- tests = Dir[*self.test_globs].uniq
-
- # 3 seems to be the magic number... (tho not by that much)
- bad, good, n = {}, [], (ENV.delete("K") || 3).to_i
- file = ENV.delete("F")
- times = {}
-
- tt0 = Time.now
-
- n.threads_do tests.sort do |path|
- t0 = Time.now
- output = `#{Gem.ruby} #{make_test_cmd path} 2>&1`
- t1 = Time.now - t0
-
- times[path] = t1
-
- if $?.success?
- $stderr.print "."
- good << path
- else
- $stderr.print "x"
- bad[path] = output
- end
- end
-
- puts "done"
- puts "Ran in %.2f seconds" % [ Time.now - tt0 ]
-
- if file then
- require "json"
- File.open file, "w" do |io|
- io.puts JSON.pretty_generate times
- end
- end
-
- unless good.empty?
- puts
- puts "# Good tests:"
- puts
- good.sort.each do |path|
- puts "%.2fs: %s" % [times[path], path]
- end
- end
-
- unless bad.empty?
- puts
- puts "# Bad tests:"
- puts
- bad.keys.sort.each do |path|
- puts "%.2fs: %s" % [times[path], path]
- end
- puts
- puts "# Bad Test Output:"
- puts
- bad.sort.each do |path, output|
- puts
- puts "# #{path}:"
- puts output
- end
- exit 1
- end
- end
-
- task "#{name}:deps" => "#{name}:isolated" # now just an alias
-
- desc "Show bottom 25 tests wrt time."
- task "#{name}:slow" do
- sh ["rake #{name} TESTOPTS=-v",
- "egrep '#test_.* s = .'",
- "sort -n -k2 -t=",
- "tail -25"].join " | "
- end
-
- default_tasks << name
-
- desc "Run the default task(s)."
- task :default => default_tasks
- end
-
- ##
- # Generate the test command-line.
-
- def make_test_cmd globs = test_globs
- tests = []
- tests.concat Dir[*globs].sort.shuffle # TODO: SEED -> srand first?
- tests.map! { |f| %(require "#{f}") }
-
- runner = []
- runner << test_prelude if test_prelude
- runner << framework
- runner.concat tests
- runner = runner.join "; "
-
- args = []
- args << "-I#{libs.join(File::PATH_SEPARATOR)}" unless libs.empty?
- args << "-w" if warning
- args << '-e'
- args << "'#{runner}'"
- args << '--'
- args << extra_args.map(&:shellescape)
-
- args.join " "
- end
- end
-end
-
-class Work < Queue
- def initialize jobs = []
- super()
-
- jobs.each do |job|
- self << job
- end
-
- close
- end
-end
-
-class Integer
- def threads_do(jobs) # :nodoc:
- require "thread"
- q = Work.new jobs
-
- self.times.map {
- Thread.new do
- while job = q.pop # go until quit value
- yield job
- end
- end
- }.each(&:join)
- end
-end
diff --git a/test/test_hoe.rb b/test/test_hoe.rb
index 5e34b4a..7b996cd 100644
--- a/test/test_hoe.rb
+++ b/test/test_hoe.rb
@@ -1,4 +1,3 @@
-# coding: utf-8
require "minitest/autorun"
require "hoe"
require "tempfile"
@@ -192,11 +191,8 @@ class TestHoe < Minitest::Test
"* http://docs.seattlerb.org/hoe/Hoe.pdf",
"* http://github.com/jbarnette/hoe-plugin-examples"].join "\n"
- exp = { "home" => "https://github.com/seattlerb/hoe" }
- err = /DEPRECATED: Please switch readme to hash format/
-
- assert_output "", err do
- assert_equal exp, hoe.parse_urls(ary)
+ assert_raises RuntimeError do
+ hoe.parse_urls ary
end
end
diff --git a/test/test_hoe_test.rb b/test/test_hoe_test.rb
index 011e4e3..90fd3d0 100644
--- a/test/test_hoe_test.rb
+++ b/test/test_hoe_test.rb
@@ -19,14 +19,6 @@ class TestHoeTest < Minitest::Test
end
end
- def assert_deprecated
- err_re = /DEPRECATED:/
-
- assert_output "", err_re do
- yield
- end
- end
-
path = %w[lib bin test .].join File::PATH_SEPARATOR
mt_path = %w[lib test .].join File::PATH_SEPARATOR
@@ -38,26 +30,6 @@ class TestHoeTest < Minitest::Test
-e '%srequire "test/test_hoe_test.rb"'
--].join(" ") + " "
- def test_make_test_cmd_defaults_to_minitest
- skip "Using TESTOPTS... skipping" if ENV["TESTOPTS"]
-
- # default
- assert_deprecated do
- autorun = %(require "minitest/autorun"; )
- assert_equal EXPECTED % autorun, @tester.make_test_cmd
- end
- end
-
- def test_make_test_cmd_for_testunit
- skip "Using TESTOPTS... skipping" if ENV["TESTOPTS"]
-
- assert_deprecated do
- @tester.testlib = :testunit
- testunit = %(require "test/unit"; )
- assert_equal EXPECTED % testunit, @tester.make_test_cmd
- end
- end
-
def test_make_test_cmd_for_minitest
skip "Using TESTOPTS... skipping" if ENV["TESTOPTS"]
@@ -85,24 +57,4 @@ class TestHoeTest < Minitest::Test
assert_equal MT_EXPECTED % [prelude, framework].join("; "), @tester.make_test_cmd
end
-
- def test_make_test_cmd_for_no_framework
- skip "Using TESTOPTS... skipping" if ENV["TESTOPTS"]
-
- assert_deprecated do
- @tester.testlib = :none
- assert_equal EXPECTED % "", @tester.make_test_cmd
- end
- end
-
- def test_make_test_cmd_for_faketestlib
- skip "Using TESTOPTS... skipping" if ENV["TESTOPTS"]
-
- @tester.testlib = :faketestlib
- e = assert_raises(RuntimeError) do
- @tester.make_test_cmd
- end
-
- assert_equal "unsupported test framework faketestlib", e.to_s
- end
end