summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/rubygems.rb24
-rw-r--r--lib/rubygems/bundler_version_finder.rb6
-rw-r--r--lib/rubygems/commands/push_command.rb2
-rw-r--r--lib/rubygems/commands/setup_command.rb2
-rw-r--r--lib/rubygems/commands/unpack_command.rb2
-rw-r--r--lib/rubygems/dependency.rb1
-rw-r--r--lib/rubygems/dependency_installer.rb6
-rw-r--r--lib/rubygems/exceptions.rb6
-rw-r--r--lib/rubygems/indexer.rb2
-rw-r--r--lib/rubygems/installer.rb6
-rw-r--r--lib/rubygems/package.rb12
-rw-r--r--lib/rubygems/remote_fetcher.rb2
-rw-r--r--lib/rubygems/request_set.rb4
-rw-r--r--lib/rubygems/server.rb6
-rw-r--r--lib/rubygems/source.rb2
-rw-r--r--lib/rubygems/specification.rb17
-rw-r--r--lib/rubygems/test_case.rb10
-rw-r--r--lib/rubygems/test_utilities.rb2
-rw-r--r--lib/rubygems/user_interaction.rb4
-rw-r--r--lib/rubygems/version.rb1
-rw-r--r--test/rubygems/test_gem.rb14
-rw-r--r--test/rubygems/test_gem_commands_setup_command.rb2
-rw-r--r--test/rubygems/test_gem_package.rb59
-rw-r--r--test/rubygems/test_gem_package_tar_header.rb2
-rw-r--r--test/rubygems/test_gem_remote_fetcher.rb2
-rw-r--r--test/rubygems/test_gem_security_policy.rb6
-rw-r--r--test/rubygems/test_gem_server.rb16
-rw-r--r--test/rubygems/test_gem_specification.rb2
-rw-r--r--test/rubygems/test_gem_version.rb1
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