diff options
author | Ryan Davis <ryand-ruby@zenspider.com> | 2022-12-15 11:36:29 -0800 |
---|---|---|
committer | Ryan Davis <ryand-ruby@zenspider.com> | 2022-12-15 11:36:29 -0800 |
commit | 58e04a76b43e88ea7783647314b5ff6edc5cfd74 (patch) | |
tree | 894fdc8d24709fbe9eb8eef0dc84c9cf962e6a01 | |
parent | a5a1153a8482bf60aaa05cf5fd7f8828755c15ea (diff) | |
download | hoe-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.txt | 1 | ||||
-rw-r--r-- | lib/hoe.rb | 7 | ||||
-rw-r--r-- | lib/hoe/test.rb | 130 | ||||
-rw-r--r-- | lib/minitest/test_task.rb | 314 | ||||
-rw-r--r-- | test/test_hoe.rb | 8 | ||||
-rw-r--r-- | test/test_hoe_test.rb | 48 |
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 @@ -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 |