Skip to content

Instantly share code, notes, and snippets.

@tadman
Created May 11, 2011 04:28
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save tadman/965921 to your computer and use it in GitHub Desktop.
Rubygems 1.8.1 Deprecate Warning Patch
diff --git a/Manifest.txt b/Manifest.txt
index 6e79ebd..6a2f480 100644
--- a/Manifest.txt
+++ b/Manifest.txt
@@ -121,6 +121,7 @@ test/rubygems/rubygems_plugin.rb
test/rubygems/sff/discover.rb
test/rubygems/simple_gem.rb
test/rubygems/test_config.rb
+test/rubygems/test_deprecate.rb
test/rubygems/test_gem.rb
test/rubygems/test_gem_builder.rb
test/rubygems/test_gem_command.rb
diff --git a/lib/rubygems/deprecate.rb b/lib/rubygems/deprecate.rb
index 4827a05..c8783e8 100644
--- a/lib/rubygems/deprecate.rb
+++ b/lib/rubygems/deprecate.rb
@@ -23,7 +23,7 @@
module Deprecate
def self.skip # :nodoc:
- @skip ||= false
+ @skip.nil? ? (@skip = true) : @skip
end
def self.skip= v # :nodoc:
@@ -33,8 +33,8 @@ module Deprecate
##
# Temporarily turn off warnings. Intended for tests only.
- def skip_during
- Deprecate.skip, original = true, Deprecate.skip
+ def skip_during(will_skip = true)
+ Deprecate.skip, original = will_skip, Deprecate.skip
yield
ensure
Deprecate.skip = original
diff --git a/lib/rubygems/install_update_options.rb b/lib/rubygems/install_update_options.rb
index 3ee6432..eea930b 100644
--- a/lib/rubygems/install_update_options.rb
+++ b/lib/rubygems/install_update_options.rb
@@ -115,6 +115,11 @@ module Gem::InstallUpdateOptions
"meeting version requirement") do |value, options|
options[:conservative] = true
end
+
+ add_option(:"Install/Update", "--[no-]warnings",
+ "Display warnings about deprecated methods") do |value, options|
+ Deprecate.skip = !value
+ end
end
##
diff --git a/test/rubygems/test_deprecate.rb b/test/rubygems/test_deprecate.rb
new file mode 100644
index 0000000..08d0744
--- /dev/null
+++ b/test/rubygems/test_deprecate.rb
@@ -0,0 +1,46 @@
+require 'rubygems/test_case'
+require 'rubygems/builder'
+require 'rubygems/package'
+
+require 'rubygems/deprecate'
+
+class TestDeprecate < Gem::TestCase
+
+ def test_defaults
+ assert_equal true, Deprecate.skip
+ end
+
+ def test_assignment
+ Deprecate.skip = false
+
+ assert_equal false, Deprecate.skip
+
+ Deprecate.skip = nil
+
+ assert_equal true, Deprecate.skip
+
+ Deprecate.skip = false
+
+ assert_equal false, Deprecate.skip
+
+ Deprecate.skip = nil
+ end
+
+ def test_skip
+ Deprecate.skip = false
+
+ Deprecate.skip_during do
+ assert_equal true, Deprecate.skip
+ end
+
+ Deprecate.skip_during(false) do
+ assert_equal false, Deprecate.skip
+ end
+
+ Deprecate.skip_during(nil) do
+ assert_equal true, Deprecate.skip
+ end
+
+ Deprecate.skip = nil
+ end
+end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment