diff options
29 files changed, 161 insertions, 60 deletions
@@ -10,7 +10,7 @@ require 'rbconfig' require 'thread' module Gem - VERSION = "2.7.6" end # Must be first since it unloads the prelude from 1.9.2 @@ -604,7 +604,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]} private_class_method :find_home - # FIXME deprecate these in 3.0 ## # Zlib::GzipReader wrapper that unzips +data+. @@ -613,6 +613,11 @@ An Array (#{env.inspect}) was passed in from #{caller[3]} Gem::Util.gunzip data end ## # Zlib::GzipWriter wrapper that zips +data+. @@ -620,6 +625,11 @@ An Array (#{env.inspect}) was passed in from #{caller[3]} Gem::Util.gzip data end ## # A Zlib::Inflate#inflate wrapper @@ -627,6 +637,11 @@ An Array (#{env.inspect}) was passed in from #{caller[3]} Gem::Util.inflate data end ## # Top level install helper method. Allows you to install gems interactively: # @@ -1225,9 +1240,12 @@ An Array (#{env.inspect}) was passed in from #{caller[3]} class << self ## - # TODO remove with RubyGems 3.0 alias detect_gemdeps use_gemdeps # :nodoc: end # FIX: Almost everywhere else we use the `def self.` way of defining class @@ -1,3 +1,7 @@ module Gem::BundlerVersionFinder @without_filtering = false @@ -102,7 +106,7 @@ To install the missing version, run `gem install bundler:#{vr.first}` lockfile = case gemfile when "gems.rb" then "gems.locked" else "#{gemfile}.lock" - end.untaint return unless File.file?(lockfile) @@ -13,7 +13,7 @@ class Gem::Commands::PushCommand < Gem::Command The push command uploads a gem to the push server (the default is https://rubygems.org) and adds it to the index. -The gem can be removed from the index (but only the index) using the yank command. For further discussion see the help for the yank command. EOF end @@ -385,7 +385,7 @@ By default, this RubyGems will install gem as: each {|default_gem| rm_r File.join(bundler_spec.gems_dir, default_gem) } end - bundler_bin_dir = File.join(Gem.default_dir, 'gems', bundler_spec.full_name, bundler_spec.bindir) bundler_bin_dir = File.join(options[:destdir], bundler_bin_dir) unless Gem.win_platform? mkdir_p bundler_bin_dir bundler_spec.executables.each do |e| @@ -183,7 +183,7 @@ command help for an example. when 'metadata' then metadata = entry.read when 'metadata.gz' then - metadata = Gem.gunzip entry.read end end end @@ -2,6 +2,7 @@ ## # The Dependency class holds a Gem name and a Gem::Requirement. require "rubygems/requirement" class Gem::Dependency @@ -113,7 +113,7 @@ class Gem::DependencyInstaller ## #-- - # TODO remove, no longer used def add_found_dependencies to_do, dependency_list # :nodoc: seen = {} @@ -163,6 +163,7 @@ class Gem::DependencyInstaller dependency_list.remove_specs_unsatisfied_by dependencies end ## # Creates an AvailableSet to install from based on +dep_or_name+ and @@ -321,7 +322,7 @@ class Gem::DependencyInstaller # Gathers all dependencies necessary for the installation from local and # remote sources unless the ignore_dependencies was given. #-- - # TODO remove at RubyGems 3 def gather_dependencies # :nodoc: specs = @available.all_specs @@ -354,6 +355,7 @@ class Gem::DependencyInstaller @gems_to_install = dependency_list.dependency_order.reverse end def in_background what # :nodoc: fork_happened = false @@ -4,6 +4,8 @@ # Each exception needs a brief description and the scenarios where it is # likely to be raised ## # Base exception class for RubyGems. All exception raised by RubyGems are a # subclass of this one. @@ -11,10 +13,12 @@ class Gem::Exception < RuntimeError ## #-- - # TODO: remove in RubyGems 3, nobody sets this attr_accessor :source_exception # :nodoc: end class Gem::CommandLineError < Gem::Exception; end @@ -347,7 +347,7 @@ class Gem::Indexer data = Gem.read_binary path compressed_data = Gem.read_binary "#{path}.#{extension}" - unless data == Gem.inflate(compressed_data) then raise "Compressed file #{compressed_path} does not match uncompressed file #{path}" end end @@ -7,6 +7,7 @@ require 'rubygems/command' require 'rubygems/exceptions' require 'rubygems/package' require 'rubygems/ext' require 'rubygems/user_interaction' @@ -27,6 +28,8 @@ require 'fileutils' class Gem::Installer ## # Paths where env(1) might live. Some systems are broken and have it in # /bin @@ -777,13 +780,14 @@ TEXT ## # Logs the build +output+ in +build_dir+, then raises Gem::Ext::BuildError. # - # TODO: Delete this for RubyGems 3. It remains for API compatibility def extension_build_error(build_dir, output, backtrace = nil) # :nodoc: builder = Gem::Ext::Builder.new spec, @build_args builder.build_error build_dir, output, backtrace end ## # Reads the file index and extracts each file into the gem directory. @@ -429,6 +429,14 @@ EOM destination end def mkdir_p_safe mkdir, mkdir_options, destination_dir, file_name destination_dir = realpath File.expand_path(destination_dir) parts = mkdir.split(File::SEPARATOR) @@ -437,7 +445,7 @@ EOM path = File.expand_path(path + File::SEPARATOR + basename) lstat = File.lstat path rescue nil if !lstat || !lstat.directory? - unless path.start_with? destination_dir and (FileUtils.mkdir path, mkdir_options rescue false) raise Gem::Package::PathError.new(file_name, destination_dir) end end @@ -591,7 +599,7 @@ EOM end case file_name - when /^metadata(.gz)?$/ then load_spec entry when 'data.tar.gz' then verify_gz entry @@ -293,7 +293,7 @@ class Gem::RemoteFetcher if data and !head and uri.to_s =~ /\.gz$/ begin - data = Gem.gunzip data rescue Zlib::GzipFile::Error raise FetchError.new("server did not return a valid file", uri.to_s) end @@ -171,7 +171,9 @@ class Gem::RequestSet rescue Gem::RuntimeRequirementNotMetError => e recent_match = req.spec.set.find_all(req.request).sort_by(&:version).reverse_each.find do |s| s = s.spec - s.required_ruby_version.satisfied_by?(Gem.ruby_version) && s.required_rubygems_version.satisfied_by?(Gem.rubygems_version) end if recent_match suggestion = "The last version of #{req.request} to support your Ruby & RubyGems was #{recent_match.version}. Try installing it with `gem install #{recent_match.name} -v #{recent_match.version}`" @@ -492,7 +492,7 @@ div.method-source-code pre { color: #ffdead; overflow: hidden; } specs = Marshal.dump specs if req.path =~ /\.gz$/ then - specs = Gem.gzip specs res['content-type'] = 'application/x-gzip' else res['content-type'] = 'application/octet-stream' @@ -553,7 +553,7 @@ div.method-source-code pre { color: #ffdead; overflow: hidden; } specs = Marshal.dump specs if req.path =~ /\.gz$/ then - specs = Gem.gzip specs res['content-type'] = 'application/x-gzip' else res['content-type'] = 'application/octet-stream' @@ -852,7 +852,7 @@ div.method-source-code pre { color: #ffdead; overflow: hidden; } specs = Marshal.dump specs if req.path =~ /\.gz$/ then - specs = Gem.gzip specs res['content-type'] = 'application/x-gzip' else res['content-type'] = 'application/octet-stream' @@ -155,7 +155,7 @@ class Gem::Source uri.path << '.rz' spec = fetcher.fetch_path uri - spec = Gem.inflate spec if update_cache? then FileUtils.mkdir_p cache_dir @@ -40,6 +40,8 @@ require 'uri' class Gem::Specification < Gem::BasicSpecification # REFACTOR: Consider breaking out this version stuff into a separate # module. There's enough special stuff around it that it may justify # a separate class. @@ -715,6 +717,7 @@ class Gem::Specification < Gem::BasicSpecification # Deprecated: You must now specify the executable name to Gem.bin_path. attr_writer :default_executable ## # Allows deinstallation of gems with legacy platforms. @@ -1810,6 +1813,7 @@ class Gem::Specification < Gem::BasicSpecification end result end ## # The default value for specification attribute +name+ @@ -2018,6 +2022,7 @@ class Gem::Specification < Gem::BasicSpecification def has_rdoc # :nodoc: true end ## # Deprecated and ignored. @@ -2027,8 +2032,10 @@ class Gem::Specification < Gem::BasicSpecification def has_rdoc= ignored # :nodoc: @has_rdoc = true end alias :has_rdoc? :has_rdoc # :nodoc: ## # True if this gem has files in test_files @@ -3074,16 +3081,6 @@ open-ended dependency on #{dep} is not recommended @require_paths end - extend Gem::Deprecate - - # TODO: - # deprecate :has_rdoc, :none, 2011, 10 - # deprecate :has_rdoc?, :none, 2011, 10 - # deprecate :has_rdoc=, :none, 2011, 10 - # deprecate :default_executable, :none, 2011, 10 - # deprecate :default_executable=, :none, 2011, 10 - # deprecate :file_name, :cache_file, 2011, 10 - # deprecate :full_gem_path, :cache_file, 2011, 10 end # DOC: What is this and why is it here, randomly, at the end of this file? @@ -88,6 +88,8 @@ end class Gem::TestCase < MiniTest::Unit::TestCase attr_accessor :fetcher # :nodoc: attr_accessor :gem_repo # :nodoc: @@ -672,11 +674,13 @@ class Gem::TestCase < MiniTest::Unit::TestCase end ## - # TODO: remove in RubyGems 3.0 def quick_spec name, version = '2' # :nodoc: util_spec name, version end ## # Builds a gem from +spec+ and places it in <tt>File.join @gemhome, @@ -774,7 +778,7 @@ class Gem::TestCase < MiniTest::Unit::TestCase ## # new_spec is deprecated as it is never used. # - # TODO: remove in RubyGems 3.0 def new_spec name, version, deps = nil, *files # :nodoc: require 'rubygems/specification' @@ -815,6 +819,8 @@ class Gem::TestCase < MiniTest::Unit::TestCase spec end def new_default_spec(name, version, deps = nil, *files) spec = util_spec name, version, deps @@ -64,7 +64,7 @@ class Gem::FakeFetcher data.call else if path.to_s =~ /gz$/ and not data.nil? and not data.empty? then - data = Gem.gunzip data end data @@ -6,6 +6,7 @@ #++ require 'rubygems/util' ## # Module that defines the default UserInteraction. Any class including this @@ -170,6 +171,8 @@ end class Gem::StreamUI ## # The input stream @@ -384,6 +387,7 @@ class Gem::StreamUI def debug(statement) @errs.puts statement end ## # Terminate the application with exit code +status+, running any exit @@ -170,6 +170,7 @@ class Gem::Version # True if the +version+ string matches RubyGems' requirements. def self.correct? version !!(version.to_s =~ ANCHORED_VERSION_PATTERN) end @@ -387,7 +387,7 @@ class TestGem < Gem::TestCase assert_equal %w[https://rubygems.org/], Gem.default_sources end - def test_self_detect_gemdeps skip 'Insecure operation - chdir' if RUBY_VERSION <= "1.8.7" rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], '-' @@ -399,7 +399,7 @@ class TestGem < Gem::TestCase begin Dir.chdir 'detect/a/b' - assert_equal add_bundler_full_name([]), Gem.detect_gemdeps.map(&:full_name) ensure Dir.chdir @tempdir end @@ -1214,7 +1214,7 @@ class TestGem < Gem::TestCase input = "\x1F\x8B\b\0\xED\xA3\x1AQ\0\x03\xCBH" + "\xCD\xC9\xC9\a\0\x86\xA6\x106\x05\0\0\0" - output = Gem.gunzip input assert_equal 'hello', output @@ -1226,7 +1226,7 @@ class TestGem < Gem::TestCase def test_self_gzip input = 'hello' - output = Gem.gzip input zipped = StringIO.new output @@ -1450,12 +1450,12 @@ class TestGem < Gem::TestCase ENV['RUBYGEMS_GEMDEPS'] = path - Gem.detect_gemdeps assert_equal add_bundler_full_name(%W(a-1 b-1 c-1)), loaded_spec_names end - def test_auto_activation_of_detected_gemdeps_file skip 'Insecure operation - chdir' if RUBY_VERSION <= "1.8.7" util_clear_gems @@ -1476,7 +1476,7 @@ class TestGem < Gem::TestCase ENV['RUBYGEMS_GEMDEPS'] = "-" expected_specs = [a, b, (Gem::USE_BUNDLER_FOR_GEMDEPS || nil) && util_spec("bundler", Bundler::VERSION), c].compact - assert_equal expected_specs, Gem.detect_gemdeps.sort_by { |s| s.name } end LIB_PATH = File.expand_path "../../../lib".dup.untaint, __FILE__.dup.untaint @@ -10,7 +10,7 @@ class TestGemCommandsSetupCommand < Gem::TestCase if File.exist?(bundler_gemspec) BUNDLER_VERS = File.read(bundler_gemspec).match(/VERSION = "(#{Gem::Version::VERSION_PATTERN})"/)[1] else - BUNDLER_VERS = "1.16.1" end def setup @@ -524,6 +524,21 @@ class TestGemPackage < Gem::Package::TarTestCase assert_path_exists extracted end def test_install_location package = Gem::Package.new @gem @@ -607,7 +622,7 @@ class TestGemPackage < Gem::Package::TarTestCase end def test_load_spec - entry = StringIO.new Gem.gzip @spec.to_yaml def entry.full_name() 'metadata.gz' end package = Gem::Package.new 'nonexistent.gem' @@ -637,7 +652,7 @@ class TestGemPackage < Gem::Package::TarTestCase data_tgz = data_tgz.string gem = util_tar do |tar| - metadata_gz = Gem.gzip @spec.to_yaml tar.add_file 'metadata.gz', 0444 do |io| io.write metadata_gz @@ -684,7 +699,7 @@ class TestGemPackage < Gem::Package::TarTestCase data_tgz = data_tgz.string gem = util_tar do |tar| - metadata_gz = Gem.gzip @spec.to_yaml tar.add_file 'metadata.gz', 0444 do |io| io.write metadata_gz @@ -721,7 +736,7 @@ class TestGemPackage < Gem::Package::TarTestCase def test_verify_corrupt tf = Tempfile.open 'corrupt' do |io| - data = Gem.gzip 'a' * 10 io.write \ tar_file_header('metadata.gz', "\000x", 0644, data.length, Time.now) io.write data @@ -845,7 +860,7 @@ class TestGemPackage < Gem::Package::TarTestCase build.add_contents gem # write bogus data.tar.gz to foil signature - bogus_data = Gem.gzip 'hello' fake_signer = Class.new do def digest_name; 'SHA512'; end def digest_algorithm; Digest(:SHA512); end @@ -903,6 +918,40 @@ class TestGemPackage < Gem::Package::TarTestCase end assert_equal "package is corrupt, exception while verifying: whatever (ArgumentError) in #{@gem}", e.message end def test_spec @@ -158,7 +158,7 @@ group\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 header_s[124, 12] = val io = TempIO.new header_s assert_raises ArgumentError do - new_header = Gem::Package::TarHeader.from io end io.close! if io.respond_to? :close! end @@ -541,7 +541,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg== @fetcher = fetcher def fetcher.fetch_http(uri, mtime, head = nil) - Gem.gzip 'foo' end assert_equal 'foo', fetcher.fetch_path(@uri + 'foo.gz') @@ -450,7 +450,7 @@ class TestGemSecurityPolicy < Gem::TestCase @spec.cert_chain = [PUBLIC_CERT.to_s] - metadata_gz = Gem.gzip @spec.to_yaml package = Gem::Package.new 'nonexistent.gem' package.checksums[Gem::Security::DIGEST_NAME] = {} @@ -473,7 +473,7 @@ class TestGemSecurityPolicy < Gem::TestCase @spec.cert_chain = [PUBLIC_CERT.to_s] - metadata_gz = Gem.gzip @spec.to_yaml package = Gem::Package.new 'nonexistent.gem' package.checksums[Gem::Security::DIGEST_NAME] = {} @@ -502,7 +502,7 @@ class TestGemSecurityPolicy < Gem::TestCase @spec.cert_chain = [PUBLIC_CERT.to_s] - metadata_gz = Gem.gzip @spec.to_yaml package = Gem::Package.new 'nonexistent.gem' package.checksums[Gem::Security::DIGEST_NAME] = {} @@ -127,7 +127,7 @@ class TestGemServer < Gem::TestCase assert_match %r| \d\d:\d\d:\d\d |, @res['date'] assert_equal 'application/x-gzip', @res['content-type'] assert_equal [['a', Gem::Version.new(2), Gem::Platform::RUBY]], - Marshal.load(Gem.gunzip(@res.body)) end def test_listen @@ -177,7 +177,7 @@ class TestGemServer < Gem::TestCase assert_match %r| \d\d:\d\d:\d\d |, @res['date'] assert_equal 'application/x-gzip', @res['content-type'] assert_equal [['a', v('3.a'), Gem::Platform::RUBY]], - Marshal.load(Gem.gunzip(@res.body)) end def test_quick_gemdirs @@ -236,7 +236,7 @@ class TestGemServer < Gem::TestCase assert @res['date'] assert_equal 'application/x-deflate', @res['content-type'] - spec = Marshal.load Gem.inflate(@res.body) assert_equal 'a', spec.name assert_equal Gem::Version.new(1), spec.version end @@ -253,7 +253,7 @@ class TestGemServer < Gem::TestCase assert @res['date'] assert_equal 'application/x-deflate', @res['content-type'] - spec = Marshal.load Gem.inflate(@res.body) assert_equal 'a', spec.name assert_equal Gem::Version.new(1), spec.version assert_equal Gem::Platform.local, spec.platform @@ -269,7 +269,7 @@ class TestGemServer < Gem::TestCase assert @res['date'] assert_equal 'application/x-deflate', @res['content-type'] - spec = Marshal.load Gem.inflate(@res.body) assert_equal 'a', spec.name assert_equal v('3.a'), spec.version end @@ -286,7 +286,7 @@ class TestGemServer < Gem::TestCase assert @res['date'] assert_equal 'application/x-deflate', @res['content-type'] - spec = Marshal.load Gem.inflate(@res.body) assert_equal 'a-b', spec.name assert_equal v('3.a'), spec.version end @@ -303,7 +303,7 @@ class TestGemServer < Gem::TestCase assert @res['date'] assert_equal 'application/x-deflate', @res['content-type'] - spec = Marshal.load Gem.inflate(@res.body) assert_equal 'a-b-1', spec.name assert_equal v('3.a'), spec.version end @@ -571,7 +571,7 @@ class TestGemServer < Gem::TestCase assert_equal [['a', Gem::Version.new(1), Gem::Platform::RUBY], ['a', Gem::Version.new(2), Gem::Platform::RUBY], ['a', v('3.a'), Gem::Platform::RUBY]], - Marshal.load(Gem.gunzip(@res.body)) end def test_uri_encode @@ -1133,7 +1133,7 @@ dependencies: [] def test_handles_private_null_type path = File.join DATA_PATH, "null-type.gemspec.rz" - data = Marshal.load Gem.inflate(Gem.read_binary(path)) assert_equal nil, data.rubyforge_project end @@ -46,6 +46,7 @@ class TestGemVersion < Gem::TestCase def test_class_correct assert_equal true, Gem::Version.correct?("5.1") assert_equal false, Gem::Version.correct?("an incorrect version") end def test_class_new_subclass |