summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/rubygems/rubygems_plugin.rb9
-rw-r--r--test/rubygems/test_gem.rb11
2 files changed, 20 insertions, 0 deletions
diff --git a/test/rubygems/rubygems_plugin.rb b/test/rubygems/rubygems_plugin.rb
index c18f13d2ed..b538487bbf 100644
--- a/test/rubygems/rubygems_plugin.rb
+++ b/test/rubygems/rubygems_plugin.rb
@@ -1,6 +1,15 @@
# frozen_string_literal: true
require "rubygems/command_manager"
+##
+# This is an example of exactly what NOT to do.
+#
+# DO NOT include code like this in your rubygems_plugin.rb
+
+module Gem::Commands
+ remove_const(:InterruptCommand) if defined?(InterruptCommand)
+end
+
class Gem::Commands::InterruptCommand < Gem::Command
def initialize
super("interrupt", "Raises an Interrupt Exception", {})
diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb
index f4c6e8ce76..dd2440b068 100644
--- a/test/rubygems/test_gem.rb
+++ b/test/rubygems/test_gem.rb
@@ -20,6 +20,8 @@ class TestGem < Gem::TestCase
common_installer_setup
@additional = %w[a b].map {|d| File.join @tempdir, d }
+
+ util_remove_interrupt_command
end
def test_self_finish_resolve
@@ -1548,10 +1550,14 @@ class TestGem < Gem::TestCase
with_plugin("load") { Gem.load_env_plugins }
assert_equal :loaded, TEST_PLUGIN_LOAD rescue nil
+ util_remove_interrupt_command
+
# Should attempt to cause a StandardError
with_plugin("standarderror") { Gem.load_env_plugins }
assert_equal :loaded, TEST_PLUGIN_STANDARDERROR rescue nil
+ util_remove_interrupt_command
+
# Should attempt to cause an Exception
with_plugin("exception") { Gem.load_env_plugins }
assert_equal :loaded, TEST_PLUGIN_EXCEPTION rescue nil
@@ -2101,6 +2107,11 @@ You may need to `bundle install` to install missing gems
spec
end
+ def util_remove_interrupt_command
+ Gem::Commands.send :remove_const, :InterruptCommand if
+ Gem::Commands.const_defined? :InterruptCommand
+ end
+
def util_cache_dir
File.join Gem.dir, "cache"
end