diff options
Diffstat (limited to 'test/rubygems/test_gem_command_manager.rb')
-rw-r--r-- | test/rubygems/test_gem_command_manager.rb | 94 |
1 files changed, 60 insertions, 34 deletions
diff --git a/test/rubygems/test_gem_command_manager.rb b/test/rubygems/test_gem_command_manager.rb index 6b34156187..f04ec0cafa 100644 --- a/test/rubygems/test_gem_command_manager.rb +++ b/test/rubygems/test_gem_command_manager.rb @@ -1,9 +1,10 @@ # frozen_string_literal: true + require_relative "helper" require "rubygems/command_manager" class TestGemCommandManager < Gem::TestCase - PROJECT_DIR = File.expand_path("../..", __dir__).tap(&Gem::UNTAINT) + PROJECT_DIR = File.expand_path("../..", __dir__) def setup super @@ -149,7 +150,7 @@ class TestGemCommandManager < Gem::TestCase end end - assert_match(/install isn't a directory./i, @ui.error) + assert_match(/install isn't a directory\./i, @ui.error) end def test_process_args_with_c_flag_path_not_found @@ -163,7 +164,7 @@ class TestGemCommandManager < Gem::TestCase end end - assert_match(/#{custom_start_point} isn't a directory./i, @ui.error) + assert_match(/#{Regexp.quote(custom_start_point)} isn't a directory\./i, @ui.error) end def test_process_args_bad_arg @@ -176,9 +177,9 @@ class TestGemCommandManager < Gem::TestCase assert_match(/invalid option: --bad-arg/i, @ui.error) end - # HACK move to install command test + # HACK: move to install command test def test_process_args_install - #capture all install options + # capture all install options use_ui @ui do check_options = nil @command_manager["install"].when_invoked do |options| @@ -186,7 +187,7 @@ class TestGemCommandManager < Gem::TestCase true end - #check defaults + # check defaults @command_manager.process_args %w[install] assert_equal %w[ri], check_options[:document].sort assert_equal false, check_options[:force] @@ -196,7 +197,7 @@ class TestGemCommandManager < Gem::TestCase assert_nil check_options[:install_dir] assert_nil check_options[:bin_dir] - #check settings + # check settings check_options = nil @command_manager.process_args %w[ install --force --local --document=ri,rdoc --install-dir . @@ -210,91 +211,91 @@ class TestGemCommandManager < Gem::TestCase assert_equal Dir.pwd, check_options[:install_dir] assert_equal Dir.pwd, check_options[:bin_dir] - #check remote domain + # check remote domain check_options = nil @command_manager.process_args %w[install --remote] assert_equal :remote, check_options[:domain] - #check both domain + # check both domain check_options = nil @command_manager.process_args %w[install --both] assert_equal :both, check_options[:domain] - #check both domain + # check both domain check_options = nil @command_manager.process_args %w[install --both] assert_equal :both, check_options[:domain] end end - # HACK move to uninstall command test + # HACK: move to uninstall command test def test_process_args_uninstall - #capture all uninstall options + # capture all uninstall options check_options = nil @command_manager["uninstall"].when_invoked do |options| check_options = options true end - #check defaults + # check defaults @command_manager.process_args %w[uninstall] assert_equal Gem::Requirement.default, check_options[:version] - #check settings + # check settings check_options = nil @command_manager.process_args %w[uninstall foobar --version 3.0] assert_equal "foobar", check_options[:args].first assert_equal Gem::Requirement.new("3.0"), check_options[:version] end - # HACK move to check command test + # HACK: move to check command test def test_process_args_check - #capture all check options + # capture all check options check_options = nil @command_manager["check"].when_invoked do |options| check_options = options true end - #check defaults + # check defaults @command_manager.process_args %w[check] assert_equal true, check_options[:alien] - #check settings + # check settings check_options = nil @command_manager.process_args %w[check foobar --alien] assert_equal true, check_options[:alien] end - # HACK move to build command test + # HACK: move to build command test def test_process_args_build - #capture all build options + # capture all build options check_options = nil @command_manager["build"].when_invoked do |options| check_options = options true end - #check defaults + # check defaults @command_manager.process_args %w[build] - #NOTE: Currently no defaults + # NOTE: Currently no defaults - #check settings + # check settings check_options = nil @command_manager.process_args %w[build foobar.rb] assert_equal "foobar.rb", check_options[:args].first end - # HACK move to query command test + # HACK: move to query command test def test_process_args_query - #capture all query options + # capture all query options check_options = nil @command_manager["query"].when_invoked do |options| check_options = options true end - #check defaults + # check defaults Gem::Deprecate.skip_during do @command_manager.process_args %w[query] end @@ -302,7 +303,7 @@ class TestGemCommandManager < Gem::TestCase assert_equal :local, check_options[:domain] assert_equal false, check_options[:details] - #check settings + # check settings check_options = nil Gem::Deprecate.skip_during do @command_manager.process_args %w[query --name foobar --local --details] @@ -311,14 +312,14 @@ class TestGemCommandManager < Gem::TestCase assert_equal :local, check_options[:domain] assert_equal true, check_options[:details] - #remote domain + # remote domain check_options = nil Gem::Deprecate.skip_during do @command_manager.process_args %w[query --remote] end assert_equal :remote, check_options[:domain] - #both (local/remote) domains + # both (local/remote) domains check_options = nil Gem::Deprecate.skip_during do @command_manager.process_args %w[query --both] @@ -326,20 +327,20 @@ class TestGemCommandManager < Gem::TestCase assert_equal :both, check_options[:domain] end - # HACK move to update command test + # HACK: move to update command test def test_process_args_update - #capture all update options + # capture all update options check_options = nil @command_manager["update"].when_invoked do |options| check_options = options true end - #check defaults + # check defaults @command_manager.process_args %w[update] assert_includes check_options[:document], "ri" - #check settings + # check settings check_options = nil @command_manager.process_args %w[update --force --document=ri --install-dir .] assert_includes check_options[:document], "ri" @@ -367,7 +368,32 @@ class TestGemCommandManager < Gem::TestCase end assert_equal "pew pew!\n", @ui.output - assert_match(/WARNING: foo command is deprecated. It will be removed in Rubygems [0-9]+/, @ui.error) + assert_match(/WARNING: foo command is deprecated\. It will be removed in Rubygems [0-9]+/, @ui.error) + ensure + Gem::Commands.send(:remove_const, :FooCommand) + end + + def test_deprecated_command_with_version + require "rubygems/command" + foo_command = Class.new(Gem::Command) do + extend Gem::Deprecate + + rubygems_deprecate_command("9.9.9") + + def execute + say "pew pew!" + end + end + + Gem::Commands.send(:const_set, :FooCommand, foo_command) + @command_manager.register_command(:foo, foo_command.new("foo")) + + use_ui @ui do + @command_manager.process_args(%w[foo]) + end + + assert_equal "pew pew!\n", @ui.output + assert_match(/WARNING: foo command is deprecated\. It will be removed in Rubygems 9\.9\.9/, @ui.error) ensure Gem::Commands.send(:remove_const, :FooCommand) end |