aboutsummaryrefslogtreecommitdiffstats
path: root/test/rubygems
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-02-22 02:52:35 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-02-22 02:52:35 +0000
commitb551e8c8b36766651be4e782e09e3b02e7d14a10 (patch)
treee164a1ef908bd4451568abf05b688f1593915b81 /test/rubygems
parent65544f575b25b18dc27f9364f973556ddb48538f (diff)
downloadruby-b551e8c8b36766651be4e782e09e3b02e7d14a10.tar.gz
* lib/rubygems: update to 1.3.6.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26728 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/rubygems')
-rw-r--r--test/rubygems/fake_certlib/openssl.rb2
-rw-r--r--test/rubygems/functional.rb7
-rw-r--r--test/rubygems/gem_installer_test_case.rb6
-rw-r--r--test/rubygems/gemutilities.rb68
-rw-r--r--test/rubygems/insure_session.rb8
-rw-r--r--test/rubygems/mockgemui.rb8
-rw-r--r--test/rubygems/simple_gem.rb10
-rw-r--r--test/rubygems/test_config.rb7
-rw-r--r--test/rubygems/test_gem.rb6
-rw-r--r--test/rubygems/test_gem_builder.rb6
-rw-r--r--test/rubygems/test_gem_command.rb7
-rw-r--r--test/rubygems/test_gem_command_manager.rb6
-rw-r--r--test/rubygems/test_gem_commands_build_command.rb6
-rw-r--r--test/rubygems/test_gem_commands_check_command.rb6
-rw-r--r--test/rubygems/test_gem_commands_dependency_command.rb46
-rw-r--r--test/rubygems/test_gem_commands_fetch_command.rb24
-rw-r--r--test/rubygems/test_gem_commands_install_command.rb36
-rw-r--r--test/rubygems/test_gem_commands_mirror_command.rb8
-rw-r--r--test/rubygems/test_gem_commands_outdated_command.rb6
-rw-r--r--test/rubygems/test_gem_commands_owner_command.rb105
-rw-r--r--test/rubygems/test_gem_commands_pristine_command.rb2
-rw-r--r--test/rubygems/test_gem_commands_push_command.rb61
-rw-r--r--test/rubygems/test_gem_commands_query_command.rb77
-rw-r--r--test/rubygems/test_gem_commands_sources_command.rb69
-rw-r--r--test/rubygems/test_gem_commands_specification_command.rb5
-rw-r--r--test/rubygems/test_gem_commands_uninstall_command.rb2
-rw-r--r--test/rubygems/test_gem_commands_update_command.rb24
-rw-r--r--test/rubygems/test_gem_commands_which_command.rb66
-rw-r--r--test/rubygems/test_gem_config_file.rb18
-rw-r--r--test/rubygems/test_gem_dependency.rb214
-rw-r--r--test/rubygems/test_gem_dependency_installer.rb83
-rw-r--r--test/rubygems/test_gem_dependency_list.rb33
-rw-r--r--test/rubygems/test_gem_digest.rb46
-rw-r--r--test/rubygems/test_gem_doc_manager.rb6
-rw-r--r--test/rubygems/test_gem_format.rb21
-rw-r--r--test/rubygems/test_gem_gem_path_searcher.rb11
-rw-r--r--test/rubygems/test_gem_gemcutter_utilities.rb103
-rw-r--r--test/rubygems/test_gem_indexer.rb92
-rw-r--r--test/rubygems/test_gem_install_update_options.rb5
-rw-r--r--test/rubygems/test_gem_installer.rb99
-rw-r--r--test/rubygems/test_gem_package_tar_header.rb6
-rw-r--r--test/rubygems/test_gem_package_tar_input.rb6
-rw-r--r--test/rubygems/test_gem_package_tar_output.rb6
-rw-r--r--test/rubygems/test_gem_package_tar_reader.rb6
-rw-r--r--test/rubygems/test_gem_package_tar_reader_entry.rb6
-rw-r--r--test/rubygems/test_gem_package_tar_writer.rb6
-rw-r--r--test/rubygems/test_gem_package_task.rb24
-rw-r--r--test/rubygems/test_gem_remote_fetcher.rb50
-rw-r--r--test/rubygems/test_gem_requirement.rb348
-rw-r--r--test/rubygems/test_gem_server.rb35
-rw-r--r--test/rubygems/test_gem_source_index.rb18
-rw-r--r--test/rubygems/test_gem_source_info_cache.rb447
-rw-r--r--test/rubygems/test_gem_source_info_cache_entry.rb78
-rw-r--r--test/rubygems/test_gem_spec_fetcher.rb62
-rw-r--r--test/rubygems/test_gem_specification.rb27
-rw-r--r--test/rubygems/test_gem_stream_ui.rb20
-rw-r--r--test/rubygems/test_gem_validator.rb6
-rw-r--r--test/rubygems/test_gem_version.rb358
-rw-r--r--test/rubygems/test_kernel.rb6
59 files changed, 1164 insertions, 1766 deletions
diff --git a/test/rubygems/fake_certlib/openssl.rb b/test/rubygems/fake_certlib/openssl.rb
index 948110f078..9de90c0a10 100644
--- a/test/rubygems/fake_certlib/openssl.rb
+++ b/test/rubygems/fake_certlib/openssl.rb
@@ -4,4 +4,4 @@
# See LICENSE.txt for permissions.
#++
-fail LoadError, "no such file to load -- openssl"
+raise LoadError, "no such file to load -- openssl"
diff --git a/test/rubygems/functional.rb b/test/rubygems/functional.rb
index 98e7cf6661..62f8c64d2d 100644
--- a/test/rubygems/functional.rb
+++ b/test/rubygems/functional.rb
@@ -1,10 +1,3 @@
-#!/usr/bin/env ruby
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
require 'rubygems'
require 'minitest/unit'
require 'test/insure_session'
diff --git a/test/rubygems/gem_installer_test_case.rb b/test/rubygems/gem_installer_test_case.rb
index eeb328e7c4..ac353fbc43 100644
--- a/test/rubygems/gem_installer_test_case.rb
+++ b/test/rubygems/gem_installer_test_case.rb
@@ -20,12 +20,12 @@ class GemInstallerTestCase < RubyGemTestCase
super
@spec = quick_gem 'a'
- @gem = File.join @tempdir, "#{@spec.full_name}.gem"
+ @gem = File.join @tempdir, @spec.file_name
@installer = util_installer @spec, @gem, @gemhome
@user_spec = quick_gem 'b'
- @user_gem = File.join @tempdir, "#{@user_spec.full_name}.gem"
+ @user_gem = File.join @tempdir, @user_spec.file_name
@user_installer = util_installer @user_spec, @user_gem, Gem.user_dir
@user_installer.gem_dir = File.join(Gem.user_dir, 'gems',
@@ -82,7 +82,7 @@ class GemInstallerTestCase < RubyGemTestCase
def util_installer(spec, gem_path, gem_home)
util_build_gem spec
- FileUtils.mv File.join(@gemhome, 'cache', "#{spec.full_name}.gem"),
+ FileUtils.mv File.join(@gemhome, 'cache', spec.file_name),
@tempdir
installer = Gem::Installer.new gem_path
diff --git a/test/rubygems/gemutilities.rb b/test/rubygems/gemutilities.rb
index 43334f51e1..6a806a2367 100644
--- a/test/rubygems/gemutilities.rb
+++ b/test/rubygems/gemutilities.rb
@@ -1,9 +1,3 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
at_exit { $SAFE = 1 }
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
@@ -82,6 +76,8 @@ class RubyGemTestCase < MiniTest::Unit::TestCase
@orig_ruby = ruby
end
+ Gem.ensure_gem_subdirectories @gemhome
+
@orig_ENV_HOME = ENV['HOME']
ENV['HOME'] = @userhome
Gem.instance_variable_set :@user_home, nil
@@ -159,7 +155,7 @@ class RubyGemTestCase < MiniTest::Unit::TestCase
Gem.clear_paths
if ruby = @orig_ruby
- Gem.class_eval {@ruby = @ruby}
+ Gem.class_eval {@ruby = ruby}
end
if @orig_ENV_HOME then
@@ -178,7 +174,7 @@ class RubyGemTestCase < MiniTest::Unit::TestCase
end
end
- gem = File.join(@tempdir, "#{gem.full_name}.gem").untaint
+ gem = File.join(@tempdir, gem.file_name).untaint
Gem::Installer.new(gem, :wrappers => true).install
end
@@ -256,7 +252,7 @@ class RubyGemTestCase < MiniTest::Unit::TestCase
yield(s) if block_given?
end
- path = File.join "specifications", "#{spec.full_name}.gemspec"
+ path = File.join "specifications", spec.spec_name
written_path = write_file path do |io|
io.write(spec.to_ruby)
end
@@ -283,7 +279,7 @@ class RubyGemTestCase < MiniTest::Unit::TestCase
Gem::Builder.new(spec).build
end
- FileUtils.mv "#{spec.full_name}.gem",
+ FileUtils.mv spec.file_name,
File.join(@gemhome, 'cache', "#{spec.original_name}.gem")
end
end
@@ -302,8 +298,7 @@ class RubyGemTestCase < MiniTest::Unit::TestCase
cache_file = File.join @tempdir, 'gems', "#{spec.original_name}.gem"
FileUtils.mv File.join(@gemhome, 'cache', "#{spec.original_name}.gem"),
cache_file
- FileUtils.rm File.join(@gemhome, 'specifications',
- "#{spec.full_name}.gemspec")
+ FileUtils.rm File.join(@gemhome, 'specifications', spec.spec_name)
spec.loaded_from = nil
spec.loaded = false
@@ -417,26 +412,6 @@ Also, a list:
Gem::RemoteFetcher.fetcher = @fetcher
end
- def util_setup_source_info_cache(*specs)
- require 'rubygems/source_info_cache'
- require 'rubygems/source_info_cache_entry'
-
- specs = Hash[*specs.map { |spec| [spec.full_name, spec] }.flatten]
- si = Gem::SourceIndex.new specs
-
- sice = Gem::SourceInfoCacheEntry.new si, 0
- sic = Gem::SourceInfoCache.new
-
- sic.set_cache_data( { @gem_repo => sice } )
- sic.update
- sic.write_cache
- sic.reset_cache_data
-
- Gem::SourceInfoCache.instance_variable_set :@cache, sic
-
- si
- end
-
def util_setup_spec_fetcher(*specs)
specs = Hash[*specs.map { |spec| [spec.full_name, spec] }.flatten]
si = Gem::SourceIndex.new specs
@@ -583,6 +558,35 @@ Also, a list:
'rake'
end
+ ##
+ # Construct a new Gem::Dependency.
+
+ def dep name, *requirements
+ Gem::Dependency.new name, *requirements
+ end
+
+ ##
+ # Construct a new Gem::Requirement.
+
+ def req *requirements
+ return requirements.first if Gem::Requirement === requirements.first
+ Gem::Requirement.create requirements
+ end
+
+ ##
+ # Construct a new Gem::Specification.
+
+ def spec name, version, &block
+ Gem::Specification.new name, v(version), &block
+ end
+
+ ##
+ # Construct a new Gem::Version.
+
+ def v string
+ Gem::Version.create string
+ end
+
end
MiniTest::Unit.autorun
diff --git a/test/rubygems/insure_session.rb b/test/rubygems/insure_session.rb
index 4ae706494a..8a6df89246 100644
--- a/test/rubygems/insure_session.rb
+++ b/test/rubygems/insure_session.rb
@@ -1,11 +1,3 @@
-#!/usr/bin/env ruby
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-
require 'rubygems'
def install_session
diff --git a/test/rubygems/mockgemui.rb b/test/rubygems/mockgemui.rb
index d5624960df..30a4e6f25a 100644
--- a/test/rubygems/mockgemui.rb
+++ b/test/rubygems/mockgemui.rb
@@ -1,11 +1,3 @@
-#!/usr/bin/env ruby
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-
require 'stringio'
require 'rubygems/user_interaction'
diff --git a/test/rubygems/simple_gem.rb b/test/rubygems/simple_gem.rb
index 4667a08749..e9207f95cc 100644
--- a/test/rubygems/simple_gem.rb
+++ b/test/rubygems/simple_gem.rb
@@ -1,10 +1,4 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
- SIMPLE_GEM = <<-GEMDATA
+SIMPLE_GEM = <<-GEMDATA
MD5SUM = "b12a4d48febeb2289c539c2574c4b6f8"
if $0 == __FILE__
require 'optparse'
@@ -69,4 +63,4 @@ g1CKTjX9BGAj1w==
eJwDAAAAAAE=
---
eJwrKC0pVlAvzy9XyE3MU+cCACwiBP4=
- GEMDATA
+GEMDATA
diff --git a/test/rubygems/test_config.rb b/test/rubygems/test_config.rb
index 306562f585..3458a1a682 100644
--- a/test/rubygems/test_config.rb
+++ b/test/rubygems/test_config.rb
@@ -1,11 +1,4 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
require_relative 'gemutilities'
-require 'rbconfig'
require 'rubygems'
class TestConfig < RubyGemTestCase
diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb
index e6d3f896b4..72074916b2 100644
--- a/test/rubygems/test_gem.rb
+++ b/test/rubygems/test_gem.rb
@@ -181,7 +181,7 @@ class TestGem < RubyGemTestCase
end
def test_self_default_sources
- assert_equal %w[http://gems.rubyforge.org/], Gem.default_sources
+ assert_equal %w[http://rubygems.org/], Gem.default_sources
end
def test_self_dir
@@ -441,13 +441,13 @@ class TestGem < RubyGemTestCase
def test_self_refresh
util_make_gems
- a1_spec = File.join @gemhome, "specifications", "#{@a1.full_name}.gemspec"
+ a1_spec = File.join @gemhome, "specifications", @a1.spec_name
FileUtils.mv a1_spec, @tempdir
refute Gem.source_index.gems.include?(@a1.full_name)
- FileUtils.mv File.join(@tempdir, "#{@a1.full_name}.gemspec"), a1_spec
+ FileUtils.mv File.join(@tempdir, @a1.spec_name), a1_spec
Gem.refresh
diff --git a/test/rubygems/test_gem_builder.rb b/test/rubygems/test_gem_builder.rb
index 23895c45fa..e5493ffc13 100644
--- a/test/rubygems/test_gem_builder.rb
+++ b/test/rubygems/test_gem_builder.rb
@@ -1,9 +1,3 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
require_relative 'gemutilities'
require 'rubygems/builder'
diff --git a/test/rubygems/test_gem_command.rb b/test/rubygems/test_gem_command.rb
index 2fb1bb1ca5..7897979d8f 100644
--- a/test/rubygems/test_gem_command.rb
+++ b/test/rubygems/test_gem_command.rb
@@ -1,10 +1,3 @@
-#!/usr/bin/env ruby
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
require_relative 'gemutilities'
require 'rubygems/command'
diff --git a/test/rubygems/test_gem_command_manager.rb b/test/rubygems/test_gem_command_manager.rb
index 6cba52d3e2..143ea692bc 100644
--- a/test/rubygems/test_gem_command_manager.rb
+++ b/test/rubygems/test_gem_command_manager.rb
@@ -1,9 +1,3 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
require_relative 'gemutilities'
require 'rubygems/command_manager'
diff --git a/test/rubygems/test_gem_commands_build_command.rb b/test/rubygems/test_gem_commands_build_command.rb
index 32e66465d8..db29226b71 100644
--- a/test/rubygems/test_gem_commands_build_command.rb
+++ b/test/rubygems/test_gem_commands_build_command.rb
@@ -15,7 +15,7 @@ class TestGemCommandsBuildCommand < RubyGemTestCase
end
def test_execute
- gemspec_file = File.join(@tempdir, "#{@gem.full_name}.gemspec")
+ gemspec_file = File.join(@tempdir, @gem.spec_name)
File.open gemspec_file, 'w' do |gs|
gs.write @gem.to_ruby
@@ -25,7 +25,7 @@ class TestGemCommandsBuildCommand < RubyGemTestCase
end
def test_execute_yaml
- gemspec_file = File.join(@tempdir, "#{@gem.full_name}.gemspec")
+ gemspec_file = File.join(@tempdir, @gem.spec_name)
File.open gemspec_file, 'w' do |gs|
gs.write @gem.to_yaml
@@ -61,7 +61,7 @@ class TestGemCommandsBuildCommand < RubyGemTestCase
assert_equal [], output
assert_equal '', @ui.error
- gem_file = File.join @tempdir, "#{gem.full_name}.gem"
+ gem_file = File.join @tempdir, gem.file_name
assert File.exist?(gem_file)
spec = Gem::Format.from_file_by_path(gem_file).spec
diff --git a/test/rubygems/test_gem_commands_check_command.rb b/test/rubygems/test_gem_commands_check_command.rb
index 43ac982341..83065cf218 100644
--- a/test/rubygems/test_gem_commands_check_command.rb
+++ b/test/rubygems/test_gem_commands_check_command.rb
@@ -1,9 +1,3 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
require_relative 'gemutilities'
require 'rubygems/commands/check_command'
diff --git a/test/rubygems/test_gem_commands_dependency_command.rb b/test/rubygems/test_gem_commands_dependency_command.rb
index 66e9d86d52..8463017d50 100644
--- a/test/rubygems/test_gem_commands_dependency_command.rb
+++ b/test/rubygems/test_gem_commands_dependency_command.rb
@@ -9,12 +9,13 @@ class TestGemCommandsDependencyCommand < RubyGemTestCase
@cmd = Gem::Commands::DependencyCommand.new
@cmd.options[:domain] = :local
- util_setup_fake_fetcher
+ util_setup_fake_fetcher true
end
def test_execute
quick_gem 'foo' do |gem|
gem.add_dependency 'bar', '> 1'
+ gem.add_dependency 'baz', '> 1'
end
Gem.source_index = nil
@@ -25,7 +26,8 @@ class TestGemCommandsDependencyCommand < RubyGemTestCase
@cmd.execute
end
- assert_equal "Gem foo-2\n bar (> 1, runtime)\n\n", @ui.output
+ assert_equal "Gem foo-2\n bar (> 1, runtime)\n baz (> 1, runtime)\n\n",
+ @ui.output
assert_equal '', @ui.error
end
@@ -41,6 +43,8 @@ class TestGemCommandsDependencyCommand < RubyGemTestCase
expected = <<-EOF
Gem a-1
+Gem a-2.a
+
Gem a-2
Gem a-3.a
@@ -100,6 +104,8 @@ Gem pl-1-x86-linux
expected = <<-EOF
Gem a-1
+Gem a-2.a
+
Gem a-2
Gem a-3.a
@@ -173,8 +179,7 @@ ERROR: Only reverse dependencies for local gems are supported.
util_setup_spec_fetcher foo
- FileUtils.rm File.join(@gemhome, 'specifications',
- "#{foo.full_name}.gemspec")
+ FileUtils.rm File.join(@gemhome, 'specifications', foo.spec_name)
@cmd.options[:args] = %w[foo]
@cmd.options[:domain] = :remote
@@ -187,43 +192,24 @@ ERROR: Only reverse dependencies for local gems are supported.
assert_equal '', @ui.error
end
- def test_execute_remote_legacy
- foo = quick_gem 'foo' do |gem|
- gem.add_dependency 'bar', '> 1'
- end
-
+ def test_execute_prerelease
@fetcher = Gem::FakeFetcher.new
Gem::RemoteFetcher.fetcher = @fetcher
- Gem::SpecFetcher.fetcher = nil
- si = util_setup_source_info_cache foo
-
- @fetcher.data["#{@gem_repo}yaml"] = YAML.dump si
- @fetcher.data["#{@gem_repo}Marshal.#{Gem.marshal_version}"] =
- si.dump
-
- @fetcher.data.delete "#{@gem_repo}latest_specs.#{Gem.marshal_version}.gz"
+ util_setup_spec_fetcher @a2_pre
- FileUtils.rm File.join(@gemhome, 'specifications',
- "#{foo.full_name}.gemspec")
+ FileUtils.rm File.join(@gemhome, 'specifications', @a2_pre.spec_name)
- @cmd.options[:args] = %w[foo]
+ @cmd.options[:args] = %w[a]
@cmd.options[:domain] = :remote
+ @cmd.options[:prerelease] = true
use_ui @ui do
@cmd.execute
end
- assert_equal "Gem foo-2\n bar (> 1, runtime)\n\n", @ui.output
-
- expected = <<-EOF
-WARNING: RubyGems 1.2+ index not found for:
-\t#{@gem_repo}
-
-RubyGems will revert to legacy indexes degrading performance.
- EOF
-
- assert_equal expected, @ui.error
+ assert_equal "Gem a-2.a\n\n", @ui.output
+ assert_equal '', @ui.error
end
end
diff --git a/test/rubygems/test_gem_commands_fetch_command.rb b/test/rubygems/test_gem_commands_fetch_command.rb
index fe60680a67..07e38b4b99 100644
--- a/test/rubygems/test_gem_commands_fetch_command.rb
+++ b/test/rubygems/test_gem_commands_fetch_command.rb
@@ -15,8 +15,8 @@ class TestGemCommandsFetchCommand < RubyGemTestCase
util_setup_fake_fetcher
util_setup_spec_fetcher @a2
- @fetcher.data["#{@gem_repo}gems/#{@a2.full_name}.gem"] =
- File.read(File.join(@gemhome, 'cache', "#{@a2.full_name}.gem"))
+ @fetcher.data["#{@gem_repo}gems/#{@a2.file_name}"] =
+ File.read(File.join(@gemhome, 'cache', @a2.file_name))
@cmd.options[:args] = [@a2.name]
@@ -26,19 +26,21 @@ class TestGemCommandsFetchCommand < RubyGemTestCase
end
end
- assert File.exist?(File.join(@tempdir, "#{@a2.full_name}.gem")),
+ assert File.exist?(File.join(@tempdir, @a2.file_name)),
"#{@a2.full_name} fetched"
end
- def test_execute_legacy
- util_setup_fake_fetcher
- util_setup_source_info_cache @a2
+ def test_execute_prerelease
+ util_setup_fake_fetcher true
+ util_setup_spec_fetcher @a2, @a2_pre
- @fetcher.data["#{@gem_repo}yaml"] = ''
- @fetcher.data["#{@gem_repo}gems/#{@a2.full_name}.gem"] =
- File.read(File.join(@gemhome, 'cache', "#{@a2.full_name}.gem"))
+ @fetcher.data["#{@gem_repo}gems/#{@a2.file_name}"] =
+ File.read(File.join(@gemhome, 'cache', @a2.file_name))
+ @fetcher.data["#{@gem_repo}gems/#{@a2_pre.file_name}"] =
+ File.read(File.join(@gemhome, 'cache', @a2_pre.file_name))
@cmd.options[:args] = [@a2.name]
+ @cmd.options[:prerelease] = true
use_ui @ui do
Dir.chdir @tempdir do
@@ -46,8 +48,8 @@ class TestGemCommandsFetchCommand < RubyGemTestCase
end
end
- assert File.exist?(File.join(@tempdir, "#{@a2.full_name}.gem")),
- "#{@a2.full_name} fetched"
+ assert File.exist?(File.join(@tempdir, @a2_pre.file_name)),
+ "#{@a2_pre.full_name} not fetched"
end
end
diff --git a/test/rubygems/test_gem_commands_install_command.rb b/test/rubygems/test_gem_commands_install_command.rb
index d7bc20d6ae..0a3071b719 100644
--- a/test/rubygems/test_gem_commands_install_command.rb
+++ b/test/rubygems/test_gem_commands_install_command.rb
@@ -15,10 +15,10 @@ class TestGemCommandsInstallCommand < RubyGemTestCase
util_setup_fake_fetcher(:prerelease)
util_setup_spec_fetcher @a2, @a2_pre
- @fetcher.data["#{@gem_repo}gems/#{@a2.full_name}.gem"] =
- read_binary(File.join(@gemhome, 'cache', "#{@a2.full_name}.gem"))
- @fetcher.data["#{@gem_repo}gems/#{@a2_pre.full_name}.gem"] =
- read_binary(File.join(@gemhome, 'cache', "#{@a2_pre.full_name}.gem"))
+ @fetcher.data["#{@gem_repo}gems/#{@a2.file_name}"] =
+ read_binary(File.join(@gemhome, 'cache', @a2.file_name))
+ @fetcher.data["#{@gem_repo}gems/#{@a2_pre.file_name}"] =
+ read_binary(File.join(@gemhome, 'cache', @a2_pre.file_name))
@cmd.options[:args] = [@a2.name]
@@ -37,10 +37,10 @@ class TestGemCommandsInstallCommand < RubyGemTestCase
util_setup_fake_fetcher(:prerelease)
util_setup_spec_fetcher @a2, @a2_pre
- @fetcher.data["#{@gem_repo}gems/#{@a2.full_name}.gem"] =
- read_binary(File.join(@gemhome, 'cache', "#{@a2.full_name}.gem"))
- @fetcher.data["#{@gem_repo}gems/#{@a2_pre.full_name}.gem"] =
- read_binary(File.join(@gemhome, 'cache', "#{@a2_pre.full_name}.gem"))
+ @fetcher.data["#{@gem_repo}gems/#{@a2.file_name}"] =
+ read_binary(File.join(@gemhome, 'cache', @a2.file_name))
+ @fetcher.data["#{@gem_repo}gems/#{@a2_pre.file_name}"] =
+ read_binary(File.join(@gemhome, 'cache', @a2_pre.file_name))
@cmd.handle_options [@a2_pre.name, '--version', @a2_pre.version.to_s]
assert @cmd.options[:prerelease]
@@ -79,7 +79,7 @@ class TestGemCommandsInstallCommand < RubyGemTestCase
util_setup_fake_fetcher
@cmd.options[:domain] = :local
- FileUtils.mv File.join(@gemhome, 'cache', "#{@a2.full_name}.gem"),
+ FileUtils.mv File.join(@gemhome, 'cache', @a2.file_name),
File.join(@tempdir)
@cmd.options[:args] = [@a2.name]
@@ -109,7 +109,7 @@ class TestGemCommandsInstallCommand < RubyGemTestCase
util_setup_fake_fetcher
@cmd.options[:user_install] = false
- FileUtils.mv File.join(@gemhome, 'cache', "#{@a2.full_name}.gem"),
+ FileUtils.mv File.join(@gemhome, 'cache', @a2.file_name),
File.join(@tempdir)
@cmd.options[:args] = [@a2.name]
@@ -178,10 +178,10 @@ class TestGemCommandsInstallCommand < RubyGemTestCase
util_setup_fake_fetcher(:prerelease)
util_setup_spec_fetcher @a2, @a2_pre
- @fetcher.data["#{@gem_repo}gems/#{@a2.full_name}.gem"] =
- read_binary(File.join(@gemhome, 'cache', "#{@a2.full_name}.gem"))
- @fetcher.data["#{@gem_repo}gems/#{@a2_pre.full_name}.gem"] =
- read_binary(File.join(@gemhome, 'cache', "#{@a2_pre.full_name}.gem"))
+ @fetcher.data["#{@gem_repo}gems/#{@a2.file_name}"] =
+ read_binary(File.join(@gemhome, 'cache', @a2.file_name))
+ @fetcher.data["#{@gem_repo}gems/#{@a2_pre.file_name}"] =
+ read_binary(File.join(@gemhome, 'cache', @a2_pre.file_name))
@cmd.options[:prerelease] = true
@cmd.options[:args] = [@a2_pre.name]
@@ -204,8 +204,8 @@ class TestGemCommandsInstallCommand < RubyGemTestCase
util_setup_fake_fetcher
util_setup_spec_fetcher @a2
- @fetcher.data["#{@gem_repo}gems/#{@a2.full_name}.gem"] =
- read_binary(File.join(@gemhome, 'cache', "#{@a2.full_name}.gem"))
+ @fetcher.data["#{@gem_repo}gems/#{@a2.file_name}"] =
+ read_binary(File.join(@gemhome, 'cache', @a2.file_name))
@cmd.options[:args] = [@a2.name]
@@ -232,10 +232,10 @@ class TestGemCommandsInstallCommand < RubyGemTestCase
util_setup_fake_fetcher
@cmd.options[:domain] = :local
- FileUtils.mv File.join(@gemhome, 'cache', "#{@a2.full_name}.gem"),
+ FileUtils.mv File.join(@gemhome, 'cache', @a2.file_name),
File.join(@tempdir)
- FileUtils.mv File.join(@gemhome, 'cache', "#{@b2.full_name}.gem"),
+ FileUtils.mv File.join(@gemhome, 'cache', @b2.file_name),
File.join(@tempdir)
@cmd.options[:args] = [@a2.name, @b2.name]
diff --git a/test/rubygems/test_gem_commands_mirror_command.rb b/test/rubygems/test_gem_commands_mirror_command.rb
index 167d36f8c6..0c790ac24e 100644
--- a/test/rubygems/test_gem_commands_mirror_command.rb
+++ b/test/rubygems/test_gem_commands_mirror_command.rb
@@ -46,10 +46,10 @@ class TestGemCommandsMirrorCommand < RubyGemTestCase
@cmd.execute
end
- assert File.exist?(File.join(mirror, 'gems', "#{@a1.full_name}.gem"))
- assert File.exist?(File.join(mirror, 'gems', "#{@a2.full_name}.gem"))
- assert File.exist?(File.join(mirror, 'gems', "#{@b2.full_name}.gem"))
- assert File.exist?(File.join(mirror, 'gems', "#{@c1_2.full_name}.gem"))
+ assert File.exist?(File.join(mirror, 'gems', @a1.file_name))
+ assert File.exist?(File.join(mirror, 'gems', @a2.file_name))
+ assert File.exist?(File.join(mirror, 'gems', @b2.file_name))
+ assert File.exist?(File.join(mirror, 'gems', @c1_2.file_name))
assert File.exist?(File.join(mirror, "Marshal.#{@marshal_version}"))
ensure
orig_HOME.nil? ? ENV.delete('HOME') : ENV['HOME'] = orig_HOME
diff --git a/test/rubygems/test_gem_commands_outdated_command.rb b/test/rubygems/test_gem_commands_outdated_command.rb
index 8b0d8fe6f0..1abfe0f984 100644
--- a/test/rubygems/test_gem_commands_outdated_command.rb
+++ b/test/rubygems/test_gem_commands_outdated_command.rb
@@ -19,12 +19,10 @@ class TestGemCommandsOutdatedCommand < RubyGemTestCase
remote_10 = quick_gem 'foo', '1.0'
remote_20 = quick_gem 'foo', '2.0'
- remote_spec_file = File.join @gemhome, 'specifications',
- remote_10.full_name + ".gemspec"
+ remote_spec_file = File.join @gemhome, 'specifications', remote_10.spec_name
FileUtils.rm remote_spec_file
- remote_spec_file = File.join @gemhome, 'specifications',
- remote_20.full_name + ".gemspec"
+ remote_spec_file = File.join @gemhome, 'specifications', remote_20.spec_name
FileUtils.rm remote_spec_file
@fetcher = Gem::FakeFetcher.new
diff --git a/test/rubygems/test_gem_commands_owner_command.rb b/test/rubygems/test_gem_commands_owner_command.rb
new file mode 100644
index 0000000000..fa4281c6a7
--- /dev/null
+++ b/test/rubygems/test_gem_commands_owner_command.rb
@@ -0,0 +1,105 @@
+require_relative 'gemutilities'
+require 'rubygems/commands/owner_command'
+
+class TestGemCommandsOwnerCommand < RubyGemTestCase
+
+ def setup
+ super
+
+ @fetcher = Gem::FakeFetcher.new
+ Gem::RemoteFetcher.fetcher = @fetcher
+ Gem.configuration.rubygems_api_key = "ed244fbf2b1a52e012da8616c512fa47f9aa5250"
+
+ @cmd = Gem::Commands::OwnerCommand.new
+ end
+
+ def test_show_owners
+ response = <<EOF
+---
+- email: user1@example.com
+- email: user2@example.com
+EOF
+
+ @fetcher.data["https://rubygems.org/api/v1/gems/freewill/owners.yaml"] = [response, 200, 'OK']
+
+ use_ui @ui do
+ @cmd.show_owners("freewill")
+ end
+
+ assert_equal Net::HTTP::Get, @fetcher.last_request.class
+ assert_equal Gem.configuration.rubygems_api_key, @fetcher.last_request["Authorization"]
+
+ assert_match %r{Owners for gem: freewill}, @ui.output
+ assert_match %r{- user1@example.com}, @ui.output
+ assert_match %r{- user2@example.com}, @ui.output
+ end
+
+ def test_show_owners_denied
+ response = "You don't have permission to push to this gem"
+ @fetcher.data["https://rubygems.org/api/v1/gems/freewill/owners.yaml"] = [response, 403, 'Forbidden']
+
+ assert_raises MockGemUi::TermError do
+ use_ui @ui do
+ @cmd.show_owners("freewill")
+ end
+ end
+
+ assert_match response, @ui.output
+ end
+
+ def test_add_owners
+ response = "Owner added successfully."
+ @fetcher.data["https://rubygems.org/api/v1/gems/freewill/owners"] = [response, 200, 'OK']
+
+ use_ui @ui do
+ @cmd.add_owners("freewill", ["user-new1@example.com"])
+ end
+
+ assert_equal Net::HTTP::Post, @fetcher.last_request.class
+ assert_equal Gem.configuration.rubygems_api_key, @fetcher.last_request["Authorization"]
+ assert_equal "email=user-new1%40example.com", @fetcher.last_request.body
+
+ assert_match response, @ui.output
+ end
+
+ def test_add_owners_denied
+ response = "You don't have permission to push to this gem"
+ @fetcher.data["https://rubygems.org/api/v1/gems/freewill/owners"] = [response, 403, 'Forbidden']
+
+ assert_raises MockGemUi::TermError do
+ use_ui @ui do
+ @cmd.add_owners("freewill", ["user-new1@example.com"])
+ end
+ end
+
+ assert_match response, @ui.output
+ end
+
+ def test_remove_owners
+ response = "Owner removed successfully."
+ @fetcher.data["https://rubygems.org/api/v1/gems/freewill/owners"] = [response, 200, 'OK']
+
+ use_ui @ui do
+ @cmd.remove_owners("freewill", ["user-remove1@example.com"])
+ end
+
+ assert_equal Net::HTTP::Delete, @fetcher.last_request.class
+ assert_equal Gem.configuration.rubygems_api_key, @fetcher.last_request["Authorization"]
+ assert_equal "email=user-remove1%40example.com", @fetcher.last_request.body
+
+ assert_match response, @ui.output
+ end
+
+ def test_remove_owners_denied
+ response = "You don't have permission to push to this gem"
+ @fetcher.data["https://rubygems.org/api/v1/gems/freewill/owners"] = [response, 403, 'Forbidden']
+
+ assert_raises MockGemUi::TermError do
+ use_ui @ui do
+ @cmd.remove_owners("freewill", ["user-remove1@example.com"])
+ end
+ end
+
+ assert_match response, @ui.output
+ end
+end
diff --git a/test/rubygems/test_gem_commands_pristine_command.rb b/test/rubygems/test_gem_commands_pristine_command.rb
index e5cdbbc52f..06f43aa2b6 100644
--- a/test/rubygems/test_gem_commands_pristine_command.rb
+++ b/test/rubygems/test_gem_commands_pristine_command.rb
@@ -75,7 +75,7 @@ class TestGemCommandsPristineCommand < RubyGemTestCase
install_gem a
- FileUtils.rm File.join(@gemhome, 'cache', "#{a.full_name}.gem")
+ FileUtils.rm File.join(@gemhome, 'cache', a.file_name)
@cmd.options[:args] = %w[a]
diff --git a/test/rubygems/test_gem_commands_push_command.rb b/test/rubygems/test_gem_commands_push_command.rb
new file mode 100644
index 0000000000..d461bd8af6
--- /dev/null
+++ b/test/rubygems/test_gem_commands_push_command.rb
@@ -0,0 +1,61 @@
+require_relative 'gemutilities'
+require 'rubygems/commands/push_command'
+
+class TestGemCommandsPushCommand < RubyGemTestCase
+
+ def setup
+ super
+
+ @gems_dir = File.join @tempdir, 'gems'
+ @cache_dir = File.join @gemhome, 'cache'
+ FileUtils.mkdir @gems_dir
+ Gem.configuration.rubygems_api_key = "ed244fbf2b1a52e012da8616c512fa47f9aa5250"
+ @spec, @path = util_gem("freewill", "1.0.0")
+
+ @fetcher = Gem::FakeFetcher.new
+ Gem::RemoteFetcher.fetcher = @fetcher
+
+ @cmd = Gem::Commands::PushCommand.new
+ end
+
+ def test_sending_gem
+ response = "Successfully registered gem: freewill (1.0.0)"
+ @fetcher.data["https://rubygems.org/api/v1/gems"] = [response, 200, 'OK']
+
+ use_ui @ui do
+ @cmd.send_gem(@path)
+ end
+
+ assert_match %r{Pushing gem to RubyGems.org...}, @ui.output
+
+ assert_equal Net::HTTP::Post, @fetcher.last_request.class
+ assert_equal Gem.read_binary(@path), @fetcher.last_request.body
+ assert_equal File.size(@path), @fetcher.last_request["Content-Length"].to_i
+ assert_equal "application/octet-stream", @fetcher.last_request["Content-Type"]
+ assert_equal Gem.configuration.rubygems_api_key, @fetcher.last_request["Authorization"]
+
+ assert_match response, @ui.output
+ end
+
+ def test_raises_error_with_no_arguments
+ def @cmd.sign_in; end
+ assert_raises Gem::CommandLineError do
+ @cmd.execute
+ end
+ end
+
+ def test_sending_gem_denied
+ response = "You don't have permission to push to this gem"
+ @fetcher.data["https://rubygems.org/api/v1/gems"] = [response, 403, 'Forbidden']
+
+ assert_raises MockGemUi::TermError do
+ use_ui @ui do
+ @cmd.send_gem(@path)
+ end
+ end
+
+ assert_match response, @ui.output
+ end
+
+end
+
diff --git a/test/rubygems/test_gem_commands_query_command.rb b/test/rubygems/test_gem_commands_query_command.rb
index c47e5bf613..b56b33b639 100644
--- a/test/rubygems/test_gem_commands_query_command.rb
+++ b/test/rubygems/test_gem_commands_query_command.rb
@@ -58,6 +58,28 @@ pl (1)
assert_equal '', @ui.error
end
+ def test_execute_all_prerelease
+ a1_name = @a1.full_name
+ a2_name = @a2.full_name
+
+ @cmd.handle_options %w[-r --all --prerelease]
+
+ use_ui @ui do
+ @cmd.execute
+ end
+
+ expected = <<-EOF
+
+*** REMOTE GEMS ***
+
+a (3.a, 2, 1)
+pl (1)
+ EOF
+
+ assert_equal expected, @ui.output
+ assert_equal '', @ui.error
+ end
+
def test_execute_details
@a2.summary = 'This is a lot of text. ' * 4
@a2.authors = ['Abraham Lincoln', 'Hirohito']
@@ -216,61 +238,6 @@ pl (1)
assert_equal 1, e.exit_code
end
- def test_execute_legacy
- Gem::SpecFetcher.fetcher = nil
- si = util_setup_source_info_cache @a1, @a2, @pl1
-
- @fetcher.data["#{@gem_repo}yaml"] = YAML.dump si
- @fetcher.data["#{@gem_repo}Marshal.#{Gem.marshal_version}"] =
- si.dump
-
- @fetcher.data.delete "#{@gem_repo}latest_specs.#{Gem.marshal_version}.gz"
-
- @cmd.handle_options %w[-r]
-
- use_ui @ui do
- @cmd.execute
- end
-
- expected = <<-EOF
-
-*** REMOTE GEMS ***
-
-a (2)
-pl (1)
- EOF
-
- assert_equal expected, @ui.output
-
- expected = <<-EOF
-WARNING: RubyGems 1.2+ index not found for:
-\t#{@gem_repo}
-
-RubyGems will revert to legacy indexes degrading performance.
- EOF
-
- assert_equal expected, @ui.error
- end
-
- def test_execute_legacy_prerelease
- Gem::SpecFetcher.fetcher = nil
- si = util_setup_source_info_cache @a1, @a2, @pl1
-
- @fetcher.data["#{@gem_repo}yaml"] = YAML.dump si
- @fetcher.data["#{@gem_repo}Marshal.#{Gem.marshal_version}"] =
- si.dump
-
- @fetcher.data.delete "#{@gem_repo}latest_specs.#{Gem.marshal_version}.gz"
-
- @cmd.handle_options %w[-r --prerelease]
-
- e = assert_raises Gem::OperationNotSupportedError do
- @cmd.execute
- end
-
- assert_equal 'Prereleases not supported on legacy repositories', e.message
- end
-
def test_execute_local_details
@a3a.summary = 'This is a lot of text. ' * 4
@a3a.authors = ['Abraham Lincoln', 'Hirohito']
diff --git a/test/rubygems/test_gem_commands_sources_command.rb b/test/rubygems/test_gem_commands_sources_command.rb
index 77df59b16d..34632ea5f1 100644
--- a/test/rubygems/test_gem_commands_sources_command.rb
+++ b/test/rubygems/test_gem_commands_sources_command.rb
@@ -115,48 +115,9 @@ beta-gems.example.com is not a URI
assert_equal '', @ui.error
end
- def test_execute_add_legacy
- util_setup_fake_fetcher
- util_setup_source_info_cache
-
- si = Gem::SourceIndex.new
- si.add_spec @a1
-
- @fetcher.data["#{@new_repo}/yaml"] = ''
-
- @cmd.handle_options %W[--add #{@new_repo}]
-
- use_ui @ui do
- @cmd.execute
- end
-
- assert_equal [@gem_repo], Gem.sources
-
- expected = <<-EOF
-WARNING: RubyGems 1.2+ index not found for:
-\t#{@new_repo}
-
-Will cause RubyGems to revert to legacy indexes, degrading performance.
- EOF
-
- assert_equal "#{@new_repo} added to sources\n", @ui.output
- assert_equal expected, @ui.error
- end
-
def test_execute_clear_all
@cmd.handle_options %w[--clear-all]
- util_setup_source_info_cache
-
- cache = Gem::SourceInfoCache.cache
- cache.update
- cache.write_cache
-
- assert File.exist?(cache.system_cache_file),
- 'system cache file'
- assert File.exist?(cache.latest_system_cache_file),
- 'latest system cache file'
-
util_setup_spec_fetcher
fetcher = Gem::SpecFetcher.fetcher
@@ -179,11 +140,6 @@ Will cause RubyGems to revert to legacy indexes, degrading performance.
assert_equal expected, @ui.output
assert_equal '', @ui.error
- refute File.exist?(cache.system_cache_file),
- 'system cache file'
- refute File.exist?(cache.latest_system_cache_file),
- 'latest system cache file'
-
refute File.exist?(fetcher.dir), 'cache dir removed'
end
@@ -249,30 +205,5 @@ Will cause RubyGems to revert to legacy indexes, degrading performance.
assert_equal '', @ui.error
end
- def test_execute_update_legacy
- @cmd.handle_options %w[--update]
-
- util_setup_fake_fetcher
- util_setup_source_info_cache
- Gem::SourceInfoCache.reset
-
- si = Gem::SourceIndex.new
- si.add_spec @a1
- @fetcher.data["#{@gem_repo}yaml"] = YAML.dump si
- @fetcher.data["#{@gem_repo}Marshal.#{@marshal_version}"] = si.dump
-
- use_ui @ui do
- @cmd.execute
- end
-
- expected = <<-EOF
-Bulk updating Gem source index for: #{@gem_repo}
-source cache successfully updated
- EOF
-
- assert_equal expected, @ui.output
- assert_equal '', @ui.error
- end
-
end
diff --git a/test/rubygems/test_gem_commands_specification_command.rb b/test/rubygems/test_gem_commands_specification_command.rb
index 49b82f986a..6a43439969 100644
--- a/test/rubygems/test_gem_commands_specification_command.rb
+++ b/test/rubygems/test_gem_commands_specification_command.rb
@@ -80,7 +80,7 @@ class TestGemCommandsSpecificationCommand < RubyGemTestCase
@cmd.execute
end
- assert_equal "--- foo\n\n", @ui.output
+ assert_equal "foo", YAML.load(@ui.output)
end
def test_execute_marshal
@@ -106,8 +106,7 @@ class TestGemCommandsSpecificationCommand < RubyGemTestCase
util_setup_spec_fetcher foo
- FileUtils.rm File.join(@gemhome, 'specifications',
- "#{foo.full_name}.gemspec")
+ FileUtils.rm File.join(@gemhome, 'specifications', foo.spec_name)
@cmd.options[:args] = %w[foo]
@cmd.options[:domain] = :remote
diff --git a/test/rubygems/test_gem_commands_uninstall_command.rb b/test/rubygems/test_gem_commands_uninstall_command.rb
index 092a9072c0..cd440f63ee 100644
--- a/test/rubygems/test_gem_commands_uninstall_command.rb
+++ b/test/rubygems/test_gem_commands_uninstall_command.rb
@@ -59,7 +59,7 @@ class TestGemCommandsUninstallCommand < GemInstallerTestCase
def test_execute_prerelease
@spec = quick_gem "pre", "2.b"
- @gem = File.join @tempdir, "#{@spec.full_name}.gem"
+ @gem = File.join @tempdir, @spec.file_name
FileUtils.touch @gem
util_setup_gem
diff --git a/test/rubygems/test_gem_commands_update_command.rb b/test/rubygems/test_gem_commands_update_command.rb
index 8949897736..5264cd3955 100644
--- a/test/rubygems/test_gem_commands_update_command.rb
+++ b/test/rubygems/test_gem_commands_update_command.rb
@@ -13,14 +13,14 @@ class TestGemCommandsUpdateCommand < RubyGemTestCase
util_setup_fake_fetcher
- @a1_path = File.join @gemhome, 'cache', "#{@a1.full_name}.gem"
- @a2_path = File.join @gemhome, 'cache', "#{@a2.full_name}.gem"
+ @a1_path = File.join @gemhome, 'cache', @a1.file_name
+ @a2_path = File.join @gemhome, 'cache', @a2.file_name
util_setup_spec_fetcher @a1, @a2
- @fetcher.data["#{@gem_repo}gems/#{@a1.full_name}.gem"] =
+ @fetcher.data["#{@gem_repo}gems/#{@a1.file_name}"] =
read_binary @a1_path
- @fetcher.data["#{@gem_repo}gems/#{@a2.full_name}.gem"] =
+ @fetcher.data["#{@gem_repo}gems/#{@a2.file_name}"] =
read_binary @a2_path
end
@@ -65,9 +65,9 @@ class TestGemCommandsUpdateCommand < RubyGemTestCase
@a2.add_dependency 'c', '2'
@a2.add_dependency 'b', '2'
- @b2_path = File.join @gemhome, 'cache', "#{@b2.full_name}.gem"
- @c1_2_path = File.join @gemhome, 'cache', "#{@c1_2.full_name}.gem"
- @c2_path = File.join @gemhome, 'cache', "#{@c2.full_name}.gem"
+ @b2_path = File.join @gemhome, 'cache', @b2.file_name
+ @c1_2_path = File.join @gemhome, 'cache', @c1_2.file_name
+ @c2_path = File.join @gemhome, 'cache', @c2.file_name
@source_index = Gem::SourceIndex.new
@source_index.add_spec @a1
@@ -80,12 +80,12 @@ class TestGemCommandsUpdateCommand < RubyGemTestCase
util_build_gem @a2
util_build_gem @c2
- @fetcher.data["#{@gem_repo}gems/#{@a1.full_name}.gem"] = read_binary @a1_path
- @fetcher.data["#{@gem_repo}gems/#{@a2.full_name}.gem"] = read_binary @a2_path
- @fetcher.data["#{@gem_repo}gems/#{@b2.full_name}.gem"] = read_binary @b2_path
- @fetcher.data["#{@gem_repo}gems/#{@c1_2.full_name}.gem"] =
+ @fetcher.data["#{@gem_repo}gems/#{@a1.file_name}"] = read_binary @a1_path
+ @fetcher.data["#{@gem_repo}gems/#{@a2.file_name}"] = read_binary @a2_path
+ @fetcher.data["#{@gem_repo}gems/#{@b2.file_name}"] = read_binary @b2_path
+ @fetcher.data["#{@gem_repo}gems/#{@c1_2.file_name}"] =
read_binary @c1_2_path
- @fetcher.data["#{@gem_repo}gems/#{@c2.full_name}.gem"] = read_binary @c2_path
+ @fetcher.data["#{@gem_repo}gems/#{@c2.file_name}"] = read_binary @c2_path
util_setup_spec_fetcher @a1, @a2, @b2, @c1_2, @c2
util_clear_gems
diff --git a/test/rubygems/test_gem_commands_which_command.rb b/test/rubygems/test_gem_commands_which_command.rb
new file mode 100644
index 0000000000..137f598378
--- /dev/null
+++ b/test/rubygems/test_gem_commands_which_command.rb
@@ -0,0 +1,66 @@
+require_relative 'gemutilities'
+require 'rubygems/commands/which_command'
+
+class TestGemCommandsWhichCommand < RubyGemTestCase
+
+ def setup
+ super
+ @cmd = Gem::Commands::WhichCommand.new
+ end
+
+ def test_execute
+ util_foo_bar
+
+ @cmd.handle_options %w[foo_bar]
+
+ use_ui @ui do
+ @cmd.execute
+ end
+
+ assert_equal "#{@foo_bar.full_gem_path}/lib/foo_bar.rb\n", @ui.output
+ assert_equal '', @ui.error
+ end
+
+ def test_execute_one_missing
+ util_foo_bar
+
+ @cmd.handle_options %w[foo_bar missing]
+
+ use_ui @ui do
+ @cmd.execute
+ end
+
+ assert_equal "#{@foo_bar.full_gem_path}/lib/foo_bar.rb\n", @ui.output
+ assert_match %r%Can't find ruby library file or shared library missing\n%,
+ @ui.error
+ end
+
+ def test_execute_missing
+ @cmd.handle_options %w[missing]
+
+ use_ui @ui do
+ assert_raises MockGemUi::TermError do
+ @cmd.execute
+ end
+ end
+
+ assert_equal '', @ui.output
+ assert_match %r%Can't find ruby library file or shared library missing\n%,
+ @ui.error
+ end
+
+ def util_foo_bar
+ files = %w[lib/foo_bar.rb Rakefile]
+ @foo_bar = quick_gem 'foo_bar' do |gem|
+ gem.files = files
+ end
+
+ files.each do |file|
+ filename = @foo_bar.full_gem_path + "/#{file}"
+ FileUtils.mkdir_p File.dirname(filename)
+ FileUtils.touch filename
+ end
+ end
+
+end
+
diff --git a/test/rubygems/test_gem_config_file.rb b/test/rubygems/test_gem_config_file.rb
index 1dd0d448ff..4cd0790b92 100644
--- a/test/rubygems/test_gem_config_file.rb
+++ b/test/rubygems/test_gem_config_file.rb
@@ -1,9 +1,3 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
require_relative 'gemutilities'
require 'rubygems/config_file'
@@ -271,6 +265,18 @@ class TestGemConfigFile < RubyGemTestCase
assert_equal %w[http://even-more-gems.example.com], Gem.sources
end
+ def test_load_rubygems_api_key_from_credentials
+ temp_cred = File.join Gem.user_home, '.gem', 'credentials'
+ FileUtils.mkdir File.dirname(temp_cred)
+ File.open temp_cred, 'w' do |fp|
+ fp.puts ":rubygems_api_key: 701229f217cdf23b1344c7b4b54ca97"
+ end
+
+ util_config_file
+
+ assert_equal "701229f217cdf23b1344c7b4b54ca97", @cfg.rubygems_api_key
+ end
+
def util_config_file(args = @cfg_args)
@cfg = Gem::ConfigFile.new args
end
diff --git a/test/rubygems/test_gem_dependency.rb b/test/rubygems/test_gem_dependency.rb
index acaa3a8c4e..1f361229a4 100644
--- a/test/rubygems/test_gem_dependency.rb
+++ b/test/rubygems/test_gem_dependency.rb
@@ -1,189 +1,137 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
require_relative 'gemutilities'
-require 'rubygems/version'
+require 'rubygems/dependency'
class TestGemDependency < RubyGemTestCase
- def setup
- super
-
- @pkg1_0 = Gem::Dependency.new 'pkg', ['> 1.0']
- @pkg1_1 = Gem::Dependency.new 'pkg', ['> 1.1']
-
- @oth1_0 = Gem::Dependency.new 'other', ['> 1.0']
+ def test_subclass
+ sc = Class.new Gem::Dependency
+ def sc.requirement() bogus; end
- @r1_0 = Gem::Requirement.new ['> 1.0']
- end
+ out, err = capture_io do
+ assert_equal Gem::Requirement.default, sc.new('a').version_requirement
+ end
- def dep(name, version)
- Gem::Dependency.new name, version
+ assert_match %r%deprecated%, err
end
def test_initialize
- assert_equal "pkg", @pkg1_0.name
- assert_equal @r1_0, @pkg1_0.version_requirements
+ d = dep "pkg", "> 1.0"
+
+ assert_equal "pkg", d.name
+ assert_equal req("> 1.0"), d.requirement
end
def test_initialize_double
- dep = Gem::Dependency.new("pkg", ["> 1.0", "< 2.0"])
-
- assert_equal Gem::Requirement.new(["> 1.0", "< 2.0"]),
- dep.version_requirements
+ d = dep "pkg", "> 1.0", "< 2.0"
+ assert_equal req("> 1.0", "< 2.0"), d.requirement
end
def test_initialize_empty
- dep = Gem::Dependency.new("pkg", [])
- req = @r1_0
-
- req.instance_eval do
- @version = ">= 1.0"
- @op = ">="
- @nums = [1,0]
- @requirements = nil
- end
-
- dep.instance_eval do
- @version_requirement = req
- @version_requirements = nil
- end
-
- assert_equal Gem::Requirement.new([">= 1.0"]), dep.version_requirements
- end
-
- def test_initialize_version
- dep = Gem::Dependency.new 'pkg', Gem::Version.new('2')
-
- assert_equal 'pkg', dep.name
-
- assert_equal Gem::Requirement.new('= 2'), dep.version_requirements
+ d = dep "pkg"
+ assert_equal req(">= 0"), d.requirement
end
- def test_initialize_with_type
- dep = Gem::Dependency.new("pkg", [], :development)
- assert_equal(:development, dep.type)
- end
+ def test_initialize_type
+ assert_equal :runtime, dep("pkg").type
+ assert_equal :development, dep("pkg", [], :development).type
- def test_type_is_runtime_by_default
- assert_equal(:runtime, Gem::Dependency.new("pkg", []).type)
- end
-
- def test_type_is_restricted
assert_raises ArgumentError do
- Gem::Dependency.new("pkg", [:sometimes])
+ dep "pkg", :sometimes
end
end
+ def test_initialize_version
+ d = dep "pkg", v("2")
+ assert_equal req("= 2"), d.requirement
+ end
+
def test_equals2
- assert_equal @pkg1_0, @pkg1_0.dup
- assert_equal @pkg1_0.dup, @pkg1_0
+ o = dep "other"
+ d = dep "pkg", "> 1.0"
+ d1 = dep "pkg", "> 1.1"
+
+ assert_equal d, d.dup
+ assert_equal d.dup, d
- refute_equal @pkg1_0, @pkg1_1, "requirements different"
- refute_equal @pkg1_1, @pkg1_0, "requirements different"
+ refute_equal d, d1
+ refute_equal d1, d
- refute_equal @pkg1_0, @oth1_0, "names different"
- refute_equal @oth1_0, @pkg1_0, "names different"
+ refute_equal d, o
+ refute_equal o, d
- refute_equal @pkg1_0, Object.new
- refute_equal Object.new, @pkg1_0
+ refute_equal d, Object.new
+ refute_equal Object.new, d
end
def test_equals2_type
- runtime = Gem::Dependency.new("pkg", [])
- development = Gem::Dependency.new("pkg", [], :development)
-
- refute_equal(runtime, development)
+ refute_equal dep("pkg", :runtime), dep("pkg", :development)
end
def test_equals_tilde
- a0 = dep 'a', '0'
- a1 = dep 'a', '1'
- b0 = dep 'b', '0'
-
- pa0 = dep 'a', '>= 0'
- pa0r = dep(/a/, '>= 0')
- pab0r = dep(/a|b/, '>= 0')
-
- assert_match a0, a0, 'match self'
- assert_match pa0, a0, 'match version exact'
- assert_match pa0, a1, 'match version'
- assert_match pa0r, a0, 'match regex simple'
- assert_match pab0r, a0, 'match regex complex'
-
- refute_match pa0r, b0, 'fail match regex'
- refute_match pa0r, Object.new, 'fail match Object'
- end
+ d = dep "a", "0"
- def test_equals_tilde_escape
- a1 = Gem::Dependency.new 'a', '1'
+ assert_match d, d, "matche self"
+ assert_match dep("a", ">= 0"), d, "match version exact"
+ assert_match dep("a", ">= 0"), dep("a", "1"), "match version"
+ assert_match dep(/a/, ">= 0"), d, "match simple regexp"
+ assert_match dep(/a|b/, ">= 0"), d, "match scary regexp"
- pab1 = Gem::Dependency.new 'a|b', '>= 1'
- pab1r = Gem::Dependency.new(/a|b/, '>= 1')
+ refute_match dep(/a/), dep("b")
+ refute_match dep("a"), Object.new
+ end
- refute_match pab1, a1, 'escaped'
- assert_match pab1r, a1, 'exact regexp'
+ def test_equals_tilde_escape
+ refute_match dep("a|b"), dep("a", "1")
+ assert_match dep(/a|b/), dep("a", "1")
end
def test_equals_tilde_object
- a0 = Object.new
-
- def a0.name() 'a' end
- def a0.version() '0' end
-
- pa0 = Gem::Dependency.new 'a', '>= 0'
+ o = Object.new
+ def o.name ; 'a' end
+ def o.version ; '0' end
- assert_match pa0, a0, 'match version exact'
+ assert_match dep("a"), o
end
def test_equals_tilde_spec
- def spec(name, version)
- Gem::Specification.new do |spec|
- spec.name = name
- spec.version = version
- end
- end
+ assert_match dep("a", ">= 0"), spec("a", "0")
+ assert_match dep("a", "1"), spec("a", "1")
+ assert_match dep(/a/, ">= 0"), spec("a", "0")
+ assert_match dep(/a|b/, ">= 0"), spec("b", "0")
+ refute_match dep(/a/, ">= 0"), spec("b", "0")
+ end
- a0 = spec 'a', '0'
- a1 = spec 'a', '1'
- b0 = spec 'b', '0'
+ def test_hash
+ d = dep "pkg", "1.0"
- pa0 = dep 'a', '>= 0'
- pa0r = dep(/a/, '>= 0')
- pab0r = dep(/a|b/, '>= 0')
+ assert_equal d.hash, d.dup.hash
+ assert_equal d.dup.hash, d.hash
- assert_match pa0, a0, 'match version exact'
- assert_match pa0, a1, 'match version'
+ refute_equal dep("pkg", "1.0").hash, dep("pkg", "2.0").hash, "requirement"
+ refute_equal dep("pkg", "1.0").hash, dep("abc", "1.0").hash, "name"
+ refute_equal dep("pkg", :development), dep("pkg", :runtime), "type"
+ end
- assert_match pa0r, a0, 'match regex simple'
- assert_match pa0r, a1, 'match regex simple'
+ def test_prerelease_eh
+ d = dep "pkg", "= 1"
- assert_match pab0r, a0, 'match regex complex'
- assert_match pab0r, b0, 'match regex complex'
+ refute d.prerelease?
- refute_match pa0r, b0, 'fail match regex'
- refute_match pa0r, Object.new, 'fail match Object'
- end
+ d.prerelease = true
- def test_hash
- assert_equal @pkg1_0.hash, @pkg1_0.dup.hash
- assert_equal @pkg1_0.dup.hash, @pkg1_0.hash
+ assert d.prerelease?
- refute_equal @pkg1_0.hash, @pkg1_1.hash, "requirements different"
- refute_equal @pkg1_1.hash, @pkg1_0.hash, "requirements different"
+ d = dep "pkg", "= 1.a"
- refute_equal @pkg1_0.hash, @oth1_0.hash, "names different"
- refute_equal @oth1_0.hash, @pkg1_0.hash, "names different"
- end
+ assert d.prerelease?
+
+ d.prerelease = false
+
+ assert d.prerelease?
- def test_hash_type
- runtime = Gem::Dependency.new("pkg", [])
- development = Gem::Dependency.new("pkg", [], :development)
+ d = dep "pkg", "> 1.a", "> 2"
- refute_equal(runtime.hash, development.hash)
+ assert d.prerelease?
end
end
diff --git a/test/rubygems/test_gem_dependency_installer.rb b/test/rubygems/test_gem_dependency_installer.rb
index 76d541bb81..237c0a02a4 100644
--- a/test/rubygems/test_gem_dependency_installer.rb
+++ b/test/rubygems/test_gem_dependency_installer.rb
@@ -23,6 +23,16 @@ class TestGemDependencyInstaller < RubyGemTestCase
s.add_development_dependency 'aa'
end
+ @b1_pre, @b1_pre_gem = util_gem 'b', '1.a' do |s|
+ s.add_dependency 'a'
+ s.add_development_dependency 'aa'
+ end
+
+ @c1_pre, @c1_pre_gem = util_gem 'c', '1.a' do |s|
+ s.add_dependency 'a', '1.a'
+ s.add_dependency 'b', '1'
+ end
+
@d1, @d1_gem = util_gem 'd', '1'
@d2, @d2_gem = util_gem 'd', '2'
@@ -46,8 +56,8 @@ class TestGemDependencyInstaller < RubyGemTestCase
@fetcher = Gem::FakeFetcher.new
Gem::RemoteFetcher.fetcher = @fetcher
- si = util_setup_spec_fetcher(@a1, @a1_pre, @b1, @d1, @d2, @x1_m, @x1_o, @w1, @y1,
- @y1_1_p, @z1)
+ si = util_setup_spec_fetcher(@a1, @a1_pre, @b1, @b1_pre, @c1_pre, @d1, @d2,
+ @x1_m, @x1_o, @w1, @y1, @y1_1_p, @z1)
util_clear_gems
end
@@ -104,8 +114,8 @@ class TestGemDependencyInstaller < RubyGemTestCase
assert_equal %w[a-1 b-1], inst.installed_gems.map { |s| s.full_name }
- assert File.exist?(File.join(@tempdir, 'cache', "#{@a1.full_name}.gem"))
- assert File.exist?(File.join(@tempdir, 'cache', "#{@b1.full_name}.gem"))
+ assert File.exist?(File.join(@tempdir, 'cache', @a1.file_name))
+ assert File.exist?(File.join(@tempdir, 'cache', @b1.file_name))
end
def test_install_dependencies_satisfied
@@ -124,7 +134,7 @@ class TestGemDependencyInstaller < RubyGemTestCase
inst.install 'a-2'
end
- FileUtils.rm File.join(@tempdir, "#{a2.full_name}.gem")
+ FileUtils.rm File.join(@tempdir, a2.file_name)
Dir.chdir @tempdir do
inst = Gem::DependencyInstaller.new
@@ -259,7 +269,9 @@ class TestGemDependencyInstaller < RubyGemTestCase
inst.install 'a'
end
- assert_match %r|\A#!/\S+/env #{Gem::ConfigMap[:ruby_install_name]}\n|,
+ env = "/\\S+/env" unless Gem.win_platform?
+
+ assert_match %r|\A#!#{env} #{Gem::ConfigMap[:ruby_install_name]}\n|,
File.read(File.join(@gemhome, 'bin', 'a_bin'))
end
@@ -302,10 +314,8 @@ class TestGemDependencyInstaller < RubyGemTestCase
assert_equal %w[a-1], inst.installed_gems.map { |s| s.full_name }
- assert File.exist?(File.join(gemhome2, 'specifications',
- "#{@a1.full_name}.gemspec"))
- assert File.exist?(File.join(gemhome2, 'cache',
- "#{@a1.full_name}.gem"))
+ assert File.exist?(File.join(gemhome2, 'specifications', @a1.spec_name))
+ assert File.exist?(File.join(gemhome2, 'cache', @a1.file_name))
end
def test_install_domain_both
@@ -327,10 +337,8 @@ class TestGemDependencyInstaller < RubyGemTestCase
assert_equal %w[a-1 b-1], inst.installed_gems.map { |s| s.full_name }
a1, b1 = inst.installed_gems
- a1_expected = File.join(@gemhome, 'specifications',
- "#{a1.full_name}.gemspec")
- b1_expected = File.join(@gemhome, 'specifications',
- "#{b1.full_name}.gemspec")
+ a1_expected = File.join(@gemhome, 'specifications', a1.spec_name)
+ b1_expected = File.join(@gemhome, 'specifications', b1.spec_name)
assert_equal a1_expected, a1.loaded_from
assert_equal b1_expected, b1.loaded_from
@@ -463,9 +471,9 @@ class TestGemDependencyInstaller < RubyGemTestCase
File.open @a1_gem, 'rb' do |fp| a1_data = fp.read end
File.open a2_o_gem, 'rb' do |fp| a2_o_data = fp.read end
- @fetcher.data["http://gems.example.com/gems/#{@a1.full_name}.gem"] =
+ @fetcher.data["http://gems.example.com/gems/#{@a1.file_name}"] =
a1_data
- @fetcher.data["http://gems.example.com/gems/#{a2_o.full_name}.gem"] =
+ @fetcher.data["http://gems.example.com/gems/#{a2_o.file_name}"] =
a2_o_data
inst = Gem::DependencyInstaller.new :domain => :remote
@@ -576,10 +584,29 @@ class TestGemDependencyInstaller < RubyGemTestCase
local = gems.last
assert_equal 'a-1', local.first.full_name, 'local spec'
- assert_equal File.join(@tempdir, "#{@a1.full_name}.gem"),
+ assert_equal File.join(@tempdir, @a1.file_name),
local.last, 'local path'
end
+ def test_find_gems_with_sources_prerelease
+ installer = Gem::DependencyInstaller.new
+
+ dependency = Gem::Dependency.new('a', Gem::Requirement.default)
+
+ releases =
+ installer.find_gems_with_sources(dependency).map { |gems, *| gems }
+
+ assert releases.any? { |s| s.name == 'a' and s.version.to_s == '1' }
+ refute releases.any? { |s| s.name == 'a' and s.version.to_s == '1.a' }
+
+ dependency.prerelease = true
+
+ prereleases =
+ installer.find_gems_with_sources(dependency).map { |gems, *| gems }
+
+ assert_equal [@a1_pre], prereleases
+ end
+
def test_gather_dependencies
inst = Gem::DependencyInstaller.new
inst.find_spec_by_name_and_version 'b'
@@ -622,6 +649,15 @@ class TestGemDependencyInstaller < RubyGemTestCase
assert_equal %w[y-1 z-1], inst.gems_to_install.map { |s| s.full_name }
end
+ def test_gather_dependencies_prerelease
+ inst = Gem::DependencyInstaller.new :prerelease => true
+ inst.find_spec_by_name_and_version 'c', '1.a'
+ inst.gather_dependencies
+
+ assert_equal %w[a-1.a b-1 c-1.a],
+ inst.gems_to_install.map { |s| s.full_name }
+ end
+
def test_gather_dependencies_old_required
e1, = util_gem 'e', '1' do |s| s.add_dependency 'd', '= 1' end
@@ -636,16 +672,5 @@ class TestGemDependencyInstaller < RubyGemTestCase
assert_equal %w[d-1 e-1], inst.gems_to_install.map { |s| s.full_name }
end
- def test_prerelease_uses_pre_index
- installer = Gem::DependencyInstaller.new
- pre_installer = Gem::DependencyInstaller.new(:prerelease => true)
- dependency = Gem::Dependency.new('a', Gem::Requirement.default)
-
- releases = installer.find_gems_with_sources(dependency).map{ |gems, *| gems }
- prereleases = pre_installer.find_gems_with_sources(dependency).map{ |gems, *| gems }
-
- assert releases.select{ |s| s.name == 'a' and s.version.to_s == '1' }.first
- assert releases.select{ |s| s.name == 'a' and s.version.to_s == '1.a' }.empty?
- assert_equal [@a1_pre], prereleases
- end
end
+
diff --git a/test/rubygems/test_gem_dependency_list.rb b/test/rubygems/test_gem_dependency_list.rb
index d8066c9238..eacd912f7a 100644
--- a/test/rubygems/test_gem_dependency_list.rb
+++ b/test/rubygems/test_gem_dependency_list.rb
@@ -1,9 +1,3 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
require_relative 'gemutilities'
require 'rubygems/dependency_list'
@@ -71,6 +65,33 @@ class TestGemDependencyList < RubyGemTestCase
assert_equal %w[b-1 c-1 a-1], order.map { |s| s.full_name }
end
+ def test_dependency_order_development
+ e1 = quick_gem 'e', '1'
+ f1 = quick_gem 'f', '1'
+ g1 = quick_gem 'g', '1'
+
+ @a1.add_dependency 'e'
+ @a1.add_dependency 'f'
+ @a1.add_dependency 'g'
+ g1.add_development_dependency 'a'
+
+ deplist = Gem::DependencyList.new true
+ deplist.add @a1, e1, f1, g1
+
+ order = deplist.dependency_order
+
+ assert_equal %w[g-1 a-1 f-1 e-1], order.map { |s| s.full_name },
+ 'development on'
+
+ deplist2 = Gem::DependencyList.new
+ deplist2.add @a1, e1, f1, g1
+
+ order = deplist2.dependency_order
+
+ assert_equal %w[a-1 g-1 f-1 e-1], order.map { |s| s.full_name },
+ 'development off'
+ end
+
def test_dependency_order_diamond
util_diamond
e1 = quick_gem 'e', '1'
diff --git a/test/rubygems/test_gem_digest.rb b/test/rubygems/test_gem_digest.rb
deleted file mode 100644
index 6bce4e4537..0000000000
--- a/test/rubygems/test_gem_digest.rb
+++ /dev/null
@@ -1,46 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require_relative 'gemutilities'
-require "rubygems/digest/md5"
-require "rubygems/digest/sha1"
-require "rubygems/digest/sha2"
-
-class TestRubygemsGemDigest < RubyGemTestCase
-
- def test_sha256_hex_digest_works
- digester = Gem::SHA256.new
- assert_equal "b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78", digester.hexdigest("ABC")
- end
-
- def test_sha256_digest_works
- digester = Gem::SHA256.new
- assert_equal "\265\324\004\\?Fo\251\037\342\314j\276y#*\032W\315\361\004\367\242nqn\n\036'\211\337x",
- digester.digest("ABC")
- end
-
- def test_sha1_hex_digest_works
- digester = Gem::SHA1.new
- assert_equal "3c01bdbb26f358bab27f267924aa2c9a03fcfdb8", digester.hexdigest("ABC")
- end
-
- def test_sha1_digest_works
- digester = Gem::SHA1.new
- assert_equal "<\001\275\273&\363X\272\262\177&y$\252,\232\003\374\375\270", digester.digest("ABC")
- end
-
- def test_md5_hex_digest_works
- digester = Gem::MD5.new
- assert_equal "902fbdd2b1df0c4f70b4a5d23525e932", digester.hexdigest("ABC")
- end
-
- def test_md5_digest_works
- digester = Gem::MD5.new
- assert_equal "\220/\275\322\261\337\fOp\264\245\3225%\3512", digester.digest("ABC")
- end
-
-end
-
diff --git a/test/rubygems/test_gem_doc_manager.rb b/test/rubygems/test_gem_doc_manager.rb
index e3928ed2bc..46f425b9ba 100644
--- a/test/rubygems/test_gem_doc_manager.rb
+++ b/test/rubygems/test_gem_doc_manager.rb
@@ -1,9 +1,3 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
require_relative 'gemutilities'
require 'rubygems/doc_manager'
diff --git a/test/rubygems/test_gem_format.rb b/test/rubygems/test_gem_format.rb
index d9ddf0be92..555f98d77c 100644
--- a/test/rubygems/test_gem_format.rb
+++ b/test/rubygems/test_gem_format.rb
@@ -1,9 +1,3 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
require_relative 'gemutilities'
require_relative 'simple_gem'
require 'rubygems/format'
@@ -16,7 +10,7 @@ class TestGemFormat < RubyGemTestCase
@simple_gem = SIMPLE_GEM
end
- def test_from_file_by_path
+ def test_class_from_file_by_path
util_make_gems
gems = Dir[File.join(@gemhome, 'cache', '*.gem')]
@@ -34,13 +28,22 @@ class TestGemFormat < RubyGemTestCase
end
end
- def test_from_file_by_path_nonexistent
+ def test_class_from_file_by_path_empty
+ util_make_gems
+
+ empty_gem = File.join @tempdir, 'empty.gem'
+ FileUtils.touch empty_gem
+
+ assert_nil Gem::Format.from_file_by_path(empty_gem)
+ end
+
+ def test_class_from_file_by_path_nonexistent
assert_raises Gem::Exception do
Gem::Format.from_file_by_path '/nonexistent'
end
end
- def test_from_io_garbled
+ def test_class_from_io_garbled
e = assert_raises Gem::Package::FormatError do
# subtly bogus input
Gem::Format.from_io(StringIO.new(@simple_gem.upcase))
diff --git a/test/rubygems/test_gem_gem_path_searcher.rb b/test/rubygems/test_gem_gem_path_searcher.rb
index 8a08ed8d06..3fb54d08f2 100644
--- a/test/rubygems/test_gem_gem_path_searcher.rb
+++ b/test/rubygems/test_gem_gem_path_searcher.rb
@@ -22,6 +22,9 @@ class TestGemGemPathSearcher < RubyGemTestCase
@foo2 = quick_gem 'foo', '0.2'
@bar1 = quick_gem 'bar', '0.1'
@bar2 = quick_gem 'bar', '0.2'
+ @nrp = quick_gem 'nil_require_paths', '0.1'
+ @nrp.require_paths = nil
+
@fetcher = Gem::FakeFetcher.new
Gem::RemoteFetcher.fetcher = @fetcher
@@ -50,6 +53,10 @@ class TestGemGemPathSearcher < RubyGemTestCase
assert_equal expected, lib_dirs
end
+ def test_lib_dirs_for_nil_require_paths
+ assert_nil @gps.lib_dirs_for(@nrp)
+ end
+
def test_matching_file_eh
refute @gps.matching_file?(@foo1, 'bar')
assert @gps.matching_file?(@foo1, 'foo')
@@ -63,5 +70,9 @@ class TestGemGemPathSearcher < RubyGemTestCase
assert_equal [expected], @gps.matching_files(@foo1, 'foo')
end
+ def test_matching_files_nil_require_paths
+ assert_empty @gps.matching_files(@nrp, 'foo')
+ end
+
end
diff --git a/test/rubygems/test_gem_gemcutter_utilities.rb b/test/rubygems/test_gem_gemcutter_utilities.rb
new file mode 100644
index 0000000000..f8306d583f
--- /dev/null
+++ b/test/rubygems/test_gem_gemcutter_utilities.rb
@@ -0,0 +1,103 @@
+require_relative 'gemutilities'
+require 'rubygems'
+require 'rubygems/gemcutter_utilities'
+
+class TestGemGemcutterUtilities < RubyGemTestCase
+
+ def setup
+ super
+
+ ENV['RUBYGEMS_HOST'] = nil
+ Gem.configuration.rubygems_api_key = nil
+
+ @cmd = Gem::Command.new '', 'summary'
+ @cmd.extend Gem::GemcutterUtilities
+ end
+
+ def test_sign_in
+ api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903'
+ util_sign_in [api_key, 200, 'OK']
+
+ assert_match %r{Enter your RubyGems.org credentials.}, @sign_in_ui.output
+ assert @fetcher.last_request["authorization"]
+ assert_match %r{Signed in.}, @sign_in_ui.output
+
+ credentials = YAML.load_file Gem.configuration.credentials_path
+ assert_equal api_key, credentials[:rubygems_api_key]
+ end
+
+ def test_sign_in_with_host
+ api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903'
+ util_sign_in [api_key, 200, 'OK'], 'http://example.com'
+
+ assert_match %r{Enter your RubyGems.org credentials.}, @sign_in_ui.output
+ assert @fetcher.last_request["authorization"]
+ assert_match %r{Signed in.}, @sign_in_ui.output
+
+ credentials = YAML.load_file Gem.configuration.credentials_path
+ assert_equal api_key, credentials[:rubygems_api_key]
+ end
+
+ def test_sign_in_skips_with_existing_credentials
+ api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903'
+ Gem.configuration.rubygems_api_key = api_key
+
+ util_sign_in [api_key, 200, 'OK']
+
+ assert_equal "", @sign_in_ui.output
+ end
+
+ def test_sign_in_with_other_credentials_doesnt_overwrite_other_keys
+ api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903'
+ other_api_key = 'f46dbb18bb6a9c97cdc61b5b85c186a17403cdcbf'
+
+ FileUtils.mkdir_p File.dirname(Gem.configuration.credentials_path)
+ open Gem.configuration.credentials_path, 'w' do |f|
+ f.write Hash[:other_api_key, other_api_key].to_yaml
+ end
+ util_sign_in [api_key, 200, 'OK']
+
+ assert_match %r{Enter your RubyGems.org credentials.}, @sign_in_ui.output
+ assert_match %r{Signed in.}, @sign_in_ui.output
+
+ credentials = YAML.load_file Gem.configuration.credentials_path
+ assert_equal api_key, credentials[:rubygems_api_key]
+ assert_equal other_api_key, credentials[:other_api_key]
+ end
+
+ def test_sign_in_with_bad_credentials
+ skip 'Always uses $stdin on windows' if Gem.win_platform?
+
+ assert_raises MockGemUi::TermError do
+ util_sign_in ['Access Denied.', 403, 'Forbidden']
+ end
+
+ assert_match %r{Enter your RubyGems.org credentials.}, @sign_in_ui.output
+ assert_match %r{Access Denied.}, @sign_in_ui.output
+ end
+
+ def util_sign_in response, host = nil
+ skip 'Always uses $stdin on windows' if Gem.win_platform?
+
+ email = 'you@example.com'
+ password = 'secret'
+
+ if host
+ ENV['RUBYGEMS_HOST'] = host
+ else
+ host = "https://rubygems.org"
+ end
+
+ @fetcher = Gem::FakeFetcher.new
+ @fetcher.data["#{host}/api/v1/api_key"] = response
+ Gem::RemoteFetcher.fetcher = @fetcher
+
+ @sign_in_ui = MockGemUi.new "#{email}\n#{password}\n"
+
+ use_ui @sign_in_ui do
+ @cmd.sign_in
+ end
+ end
+
+end
+
diff --git a/test/rubygems/test_gem_indexer.rb b/test/rubygems/test_gem_indexer.rb
index e612a71d55..7bc4862d7b 100644
--- a/test/rubygems/test_gem_indexer.rb
+++ b/test/rubygems/test_gem_indexer.rb
@@ -1,9 +1,3 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
require_relative 'gemutilities'
require 'rubygems/indexer'
@@ -145,19 +139,19 @@ pl-1-i386-linux
assert_equal expected, latest_quick_index
- assert_indexed quickdir, "#{@a1.full_name}.gemspec.rz"
- assert_indexed quickdir, "#{@a2.full_name}.gemspec.rz"
- assert_indexed quickdir, "#{@b2.full_name}.gemspec.rz"
- assert_indexed quickdir, "#{@c1_2.full_name}.gemspec.rz"
+ assert_indexed quickdir, "#{@a1.spec_name}.rz"
+ assert_indexed quickdir, "#{@a2.spec_name}.rz"
+ assert_indexed quickdir, "#{@b2.spec_name}.rz"
+ assert_indexed quickdir, "#{@c1_2.spec_name}.rz"
assert_indexed quickdir, "#{@pl1.original_name}.gemspec.rz"
- refute_indexed quickdir, "#{@pl1.full_name}.gemspec.rz"
+ refute_indexed quickdir, "#{@pl1.spec_name}.rz"
- assert_indexed marshal_quickdir, "#{@a1.full_name}.gemspec.rz"
- assert_indexed marshal_quickdir, "#{@a2.full_name}.gemspec.rz"
+ assert_indexed marshal_quickdir, "#{@a1.spec_name}.rz"
+ assert_indexed marshal_quickdir, "#{@a2.spec_name}.rz"
- refute_indexed quickdir, "#{@c1_2.full_name}.gemspec"
- refute_indexed marshal_quickdir, "#{@c1_2.full_name}.gemspec"
+ refute_indexed quickdir, @c1_2.spec_name
+ refute_indexed marshal_quickdir, @c1_2.spec_name
assert_indexed @tempdir, "specs.#{@marshal_version}"
assert_indexed @tempdir, "specs.#{@marshal_version}.gz"
@@ -172,7 +166,7 @@ pl-1-i386-linux
<title>ExampleForge gems</title>
<link>http://example.com</link>
<description>Recently released gems from http://example.com</description>
- <generator>RubyGems v1.3.4</generator>
+ <generator>RubyGems v#{Gem::RubyGemsVersion}</generator>
<docs>http://cyber.law.harvard.edu/rss/rss.html</docs>
<item>
<title>a-2</title>
@@ -325,19 +319,19 @@ eighty characters.&lt;/pre&gt;
assert_indexed quickdir, "latest_index"
assert_indexed quickdir, "latest_index.rz"
- assert_indexed quickdir, "#{@a1.full_name}.gemspec.rz"
- assert_indexed quickdir, "#{@a2.full_name}.gemspec.rz"
- assert_indexed quickdir, "#{@b2.full_name}.gemspec.rz"
- assert_indexed quickdir, "#{@c1_2.full_name}.gemspec.rz"
+ assert_indexed quickdir, "#{@a1.spec_name}.rz"
+ assert_indexed quickdir, "#{@a2.spec_name}.rz"
+ assert_indexed quickdir, "#{@b2.spec_name}.rz"
+ assert_indexed quickdir, "#{@c1_2.spec_name}.rz"
assert_indexed quickdir, "#{@pl1.original_name}.gemspec.rz"
- refute_indexed quickdir, "#{@pl1.full_name}.gemspec.rz"
+ refute_indexed quickdir, "#{@pl1.spec_name}.rz"
- assert_indexed marshal_quickdir, "#{@a1.full_name}.gemspec.rz"
- assert_indexed marshal_quickdir, "#{@a2.full_name}.gemspec.rz"
+ assert_indexed marshal_quickdir, "#{@a1.spec_name}.rz"
+ assert_indexed marshal_quickdir, "#{@a2.spec_name}.rz"
- refute_indexed quickdir, "#{@c1_2.full_name}.gemspec"
- refute_indexed marshal_quickdir, "#{@c1_2.full_name}.gemspec"
+ refute_indexed quickdir, "#{@c1_2.spec_name}"
+ refute_indexed marshal_quickdir, "#{@c1_2.spec_name}"
refute_indexed @tempdir, "specs.#{@marshal_version}"
refute_indexed @tempdir, "specs.#{@marshal_version}.gz"
@@ -379,15 +373,15 @@ eighty characters.&lt;/pre&gt;
assert_indexed quickdir, "latest_index"
assert_indexed quickdir, "latest_index.rz"
- assert_indexed quickdir, "#{@a1.full_name}.gemspec.rz"
- assert_indexed quickdir, "#{@a2.full_name}.gemspec.rz"
- assert_indexed quickdir, "#{@b2.full_name}.gemspec.rz"
- assert_indexed quickdir, "#{@c1_2.full_name}.gemspec.rz"
+ assert_indexed quickdir, "#{@a1.spec_name}.rz"
+ assert_indexed quickdir, "#{@a2.spec_name}.rz"
+ assert_indexed quickdir, "#{@b2.spec_name}.rz"
+ assert_indexed quickdir, "#{@c1_2.spec_name}.rz"
assert_indexed quickdir, "#{@pl1.original_name}.gemspec.rz"
- assert_indexed marshal_quickdir, "#{@a1.full_name}.gemspec.rz"
- assert_indexed marshal_quickdir, "#{@a2.full_name}.gemspec.rz"
+ assert_indexed marshal_quickdir, "#{@a1.spec_name}.rz"
+ assert_indexed marshal_quickdir, "#{@a2.spec_name}.rz"
assert_indexed @tempdir, "specs.#{@marshal_version}"
assert_indexed @tempdir, "specs.#{@marshal_version}.gz"
@@ -421,19 +415,19 @@ eighty characters.&lt;/pre&gt;
refute_indexed quickdir, "latest_index"
refute_indexed quickdir, "latest_index.rz"
- refute_indexed quickdir, "#{@a1.full_name}.gemspec.rz"
- refute_indexed quickdir, "#{@a2.full_name}.gemspec.rz"
- refute_indexed quickdir, "#{@b2.full_name}.gemspec.rz"
- refute_indexed quickdir, "#{@c1_2.full_name}.gemspec.rz"
+ refute_indexed quickdir, "#{@a1.spec_name}.rz"
+ refute_indexed quickdir, "#{@a2.spec_name}.rz"
+ refute_indexed quickdir, "#{@b2.spec_name}.rz"
+ refute_indexed quickdir, "#{@c1_2.spec_name}.rz"
refute_indexed quickdir, "#{@pl1.original_name}.gemspec.rz"
- refute_indexed quickdir, "#{@pl1.full_name}.gemspec.rz"
+ refute_indexed quickdir, "#{@pl1.spec_name}.rz"
- assert_indexed marshal_quickdir, "#{@a1.full_name}.gemspec.rz"
- assert_indexed marshal_quickdir, "#{@a2.full_name}.gemspec.rz"
+ assert_indexed marshal_quickdir, "#{@a1.spec_name}.rz"
+ assert_indexed marshal_quickdir, "#{@a2.spec_name}.rz"
- refute_indexed quickdir, "#{@c1_2.full_name}.gemspec"
- refute_indexed marshal_quickdir, "#{@c1_2.full_name}.gemspec"
+ refute_indexed quickdir, "#{@c1_2.spec_name}"
+ refute_indexed marshal_quickdir, "#{@c1_2.spec_name}"
assert_indexed @tempdir, "specs.#{@marshal_version}"
assert_indexed @tempdir, "specs.#{@marshal_version}.gz"
@@ -475,15 +469,15 @@ eighty characters.&lt;/pre&gt;
assert_indexed quickdir, "latest_index"
assert_indexed quickdir, "latest_index.rz"
- assert_indexed quickdir, "#{@a1.full_name}.gemspec.rz"
- assert_indexed quickdir, "#{@a2.full_name}.gemspec.rz"
- assert_indexed quickdir, "#{@b2.full_name}.gemspec.rz"
- assert_indexed quickdir, "#{@c1_2.full_name}.gemspec.rz"
+ assert_indexed quickdir, "#{@a1.spec_name}.rz"
+ assert_indexed quickdir, "#{@a2.spec_name}.rz"
+ assert_indexed quickdir, "#{@b2.spec_name}.rz"
+ assert_indexed quickdir, "#{@c1_2.spec_name}.rz"
assert_indexed quickdir, "#{@pl1.original_name}.gemspec.rz"
- assert_indexed marshal_quickdir, "#{@a1.full_name}.gemspec.rz"
- assert_indexed marshal_quickdir, "#{@a2.full_name}.gemspec.rz"
+ assert_indexed marshal_quickdir, "#{@a1.spec_name}.rz"
+ assert_indexed marshal_quickdir, "#{@a2.spec_name}.rz"
assert_indexed @tempdir, "specs.#{@marshal_version}"
assert_indexed @tempdir, "specs.#{@marshal_version}.gz"
@@ -637,14 +631,14 @@ eighty characters.&lt;/pre&gt;
@d2_1_a_tuple = [@d2_1_a.name, @d2_1_a.version, @d2_1_a.original_platform]
gems = File.join @tempdir, 'gems'
- FileUtils.mv File.join(@gemhome, 'cache', "#{@d2_1.full_name}.gem"), gems
- FileUtils.mv File.join(@gemhome, 'cache', "#{@d2_1_a.full_name}.gem"), gems
+ FileUtils.mv File.join(@gemhome, 'cache', @d2_1.file_name), gems
+ FileUtils.mv File.join(@gemhome, 'cache', @d2_1_a.file_name), gems
use_ui @ui do
@indexer.update_index
end
- assert_indexed marshal_quickdir, "#{@d2_1.full_name}.gemspec.rz"
+ assert_indexed marshal_quickdir, "#{@d2_1.spec_name}.rz"
specs_index = Marshal.load Gem.read_binary(@indexer.dest_specs_index)
diff --git a/test/rubygems/test_gem_install_update_options.rb b/test/rubygems/test_gem_install_update_options.rb
index 9be8cde7cf..385fd9d544 100644
--- a/test/rubygems/test_gem_install_update_options.rb
+++ b/test/rubygems/test_gem_install_update_options.rb
@@ -19,11 +19,6 @@ class TestGemInstallUpdateOptions < GemInstallerTestCase
assert @cmd.handles?(args)
end
- def test_prerelease
- @cmd.handle_options %w[--prerelease]
- assert_equal true, @cmd.options[:prerelease]
- end
-
def test_security_policy
@cmd.handle_options %w[-P HighSecurity]
diff --git a/test/rubygems/test_gem_installer.rb b/test/rubygems/test_gem_installer.rb
index 76a7fc1d57..3fcfa4fedc 100644
--- a/test/rubygems/test_gem_installer.rb
+++ b/test/rubygems/test_gem_installer.rb
@@ -1,9 +1,3 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
require_relative 'gem_installer_test_case'
class TestGemInstaller < GemInstallerTestCase
@@ -107,19 +101,6 @@ load Gem.bin_path('a', 'my_exec', version)
assert_equal 'a requires b (> 2, runtime)', e.message
end
- def test_expand_and_validate_gem_dir
- @installer.gem_dir = '/nonexistent'
- expanded_gem_dir = @installer.send(:expand_and_validate_gem_dir)
- if win_platform?
- expected = File.expand_path('/nonexistent').downcase
- expanded_gem_dir = expanded_gem_dir.downcase
- else
- expected = '/nonexistent'
- end
-
- assert_equal expected, expanded_gem_dir
- end
-
def test_extract_files
format = Object.new
def format.file_entries
@@ -523,11 +504,11 @@ load Gem.bin_path('a', 'my_exec', version)
def test_initialize
spec = quick_gem 'a' do |s| s.platform = Gem::Platform.new 'mswin32' end
- gem = File.join @tempdir, "#{spec.full_name}.gem"
+ gem = File.join @tempdir, spec.file_name
Dir.mkdir util_inst_bindir
util_build_gem spec
- FileUtils.mv File.join(@gemhome, 'cache', "#{spec.full_name}.gem"),
+ FileUtils.mv File.join(@gemhome, 'cache', spec.file_name),
@tempdir
installer = Gem::Installer.new gem
@@ -539,7 +520,7 @@ load Gem.bin_path('a', 'my_exec', version)
Dir.mkdir util_inst_bindir
util_setup_gem
- cache_file = File.join @gemhome, 'cache', "#{@spec.full_name}.gem"
+ cache_file = File.join @gemhome, 'cache', @spec.file_name
Gem.pre_install do |installer|
refute File.exist?(cache_file), 'cache file should not exist yet'
@@ -567,8 +548,7 @@ load Gem.bin_path('a', 'my_exec', version)
assert File.exist?(File.join(gemdir, 'ext', 'a', 'Rakefile'))
- spec_file = File.join(@gemhome, 'specifications',
- "#{@spec.full_name}.gemspec")
+ spec_file = File.join(@gemhome, 'specifications', @spec.spec_name)
assert_equal spec_file, @spec.loaded_from
assert File.exist?(spec_file)
@@ -582,7 +562,7 @@ load Gem.bin_path('a', 'my_exec', version)
use_ui @ui do
Dir.chdir @tempdir do Gem::Builder.new(@spec).build end
- gem = File.join @tempdir, "#{@spec.full_name}.gem"
+ gem = File.join @tempdir, @spec.file_name
end
gem_data = File.open gem, 'rb' do |fp| fp.read 1024 end
@@ -665,8 +645,7 @@ load Gem.bin_path('a', 'my_exec', version)
assert_equal 0111, exe_mode, "0%o" % exe_mode unless win_platform?
assert File.exist?(File.join(gemdir, 'lib', 'code.rb'))
- assert File.exist?(File.join(@gemhome, 'specifications',
- "#{@spec.full_name}.gemspec"))
+ assert File.exist?(File.join(@gemhome, 'specifications', @spec.spec_name))
end
def test_install_missing_dirs
@@ -676,7 +655,7 @@ load Gem.bin_path('a', 'my_exec', version)
use_ui @ui do
Dir.chdir @tempdir do Gem::Builder.new(@spec).build end
- gem = File.join @tempdir, "#{@spec.full_name}.gem"
+ gem = File.join @tempdir, @spec.file_name
@installer.install
end
@@ -685,50 +664,8 @@ load Gem.bin_path('a', 'my_exec', version)
File.directory? File.join(Gem.dir, 'docs')
File.directory? File.join(Gem.dir, 'specifications')
- assert File.exist?(File.join(@gemhome, 'cache', "#{@spec.full_name}.gem"))
- assert File.exist?(File.join(@gemhome, 'specifications',
- "#{@spec.full_name}.gemspec"))
- end
-
- unless win_platform? # File.chmod doesn't work
- def test_install_user_local_fallback
- Dir.mkdir util_inst_bindir
- File.chmod 0755, @userhome
- File.chmod 0000, util_inst_bindir
- File.chmod 0000, Gem.dir
- @spec.executables = ["executable"]
-
- build_rake_in do
- use_ui @ui do
- util_setup_gem
- @installer.install
- end
- end
-
- assert File.exist?(File.join(Gem.user_dir, 'gems',
- @spec.full_name, 'lib', 'code.rb'))
- assert File.exist?(File.join(Gem.user_dir, 'bin', 'executable'))
- ensure
- File.chmod 0755, Gem.dir
- File.chmod 0755, util_inst_bindir
- end
-
- def test_install_bindir_read_only
- Dir.mkdir util_inst_bindir
- File.chmod 0755, @userhome
- File.chmod 0000, util_inst_bindir
-
- build_rake_in do
- use_ui @ui do
- util_setup_gem
- @installer.install
- end
- end
-
- assert File.exist?(File.join(Gem.user_dir, 'bin', 'executable'))
- ensure
- File.chmod 0755, util_inst_bindir
- end
+ assert File.exist?(File.join(@gemhome, 'cache', @spec.file_name))
+ assert File.exist?(File.join(@gemhome, 'specifications', @spec.spec_name))
end
def test_install_with_message
@@ -749,7 +686,7 @@ load Gem.bin_path('a', 'my_exec', version)
e = assert_raises Gem::InstallError do
installer.install
end
- assert_equal 'old_ruby_required requires Ruby version = 1.4.6',
+ assert_equal 'old_ruby_required requires Ruby version = 1.4.6.',
e.message
end
end
@@ -761,15 +698,15 @@ load Gem.bin_path('a', 'my_exec', version)
util_build_gem spec
- gem = File.join @gemhome, 'cache', "#{spec.full_name}.gem"
+ gem = File.join @gemhome, 'cache', spec.file_name
use_ui @ui do
@installer = Gem::Installer.new gem
e = assert_raises Gem::InstallError do
@installer.install
end
- assert_equal 'old_rubygems_required requires RubyGems version < 0',
- e.message
+ assert_equal 'old_rubygems_required requires RubyGems version < 0. ' +
+ "Try 'gem update --system' to update RubyGems itself.", e.message
end
end
@@ -825,7 +762,11 @@ load Gem.bin_path('a', 'my_exec', version)
@installer.env_shebang = true
shebang = @installer.shebang 'my_exec'
- assert_equal "#!/usr/bin/env #{Gem::ConfigMap[:ruby_install_name]}", shebang
+
+ env_shebang = "/usr/bin/env" unless Gem.win_platform?
+
+ assert_equal("#!#{env_shebang} #{Gem::ConfigMap[:ruby_install_name]}",
+ shebang)
end
def test_shebang_nested
@@ -889,7 +830,7 @@ load Gem.bin_path('a', 'my_exec', version)
def test_write_spec
spec_dir = File.join @gemhome, 'specifications'
- spec_file = File.join spec_dir, "#{@spec.full_name}.gemspec"
+ spec_file = File.join spec_dir, @spec.spec_name
FileUtils.rm spec_file
refute File.exist?(spec_file)
@@ -909,7 +850,7 @@ load Gem.bin_path('a', 'my_exec', version)
util_build_gem spec
- File.join @gemhome, 'cache', "#{spec.full_name}.gem"
+ File.join @gemhome, 'cache', spec.file_name
end
end
diff --git a/test/rubygems/test_gem_package_tar_header.rb b/test/rubygems/test_gem_package_tar_header.rb
index 16804452b7..cda3a0d663 100644
--- a/test/rubygems/test_gem_package_tar_header.rb
+++ b/test/rubygems/test_gem_package_tar_header.rb
@@ -1,9 +1,3 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
require_relative 'gem_package_tar_test_case'
require 'rubygems/package'
diff --git a/test/rubygems/test_gem_package_tar_input.rb b/test/rubygems/test_gem_package_tar_input.rb
index 7eea1826e0..6938e97eba 100644
--- a/test/rubygems/test_gem_package_tar_input.rb
+++ b/test/rubygems/test_gem_package_tar_input.rb
@@ -1,9 +1,3 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
require_relative 'gem_package_tar_test_case'
require 'rubygems/package/tar_input'
diff --git a/test/rubygems/test_gem_package_tar_output.rb b/test/rubygems/test_gem_package_tar_output.rb
index 4a07208368..0f2c0901ef 100644
--- a/test/rubygems/test_gem_package_tar_output.rb
+++ b/test/rubygems/test_gem_package_tar_output.rb
@@ -1,9 +1,3 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
require_relative 'gem_package_tar_test_case'
require 'rubygems/package/tar_output'
diff --git a/test/rubygems/test_gem_package_tar_reader.rb b/test/rubygems/test_gem_package_tar_reader.rb
index e5b7850e56..38ad48a94d 100644
--- a/test/rubygems/test_gem_package_tar_reader.rb
+++ b/test/rubygems/test_gem_package_tar_reader.rb
@@ -1,9 +1,3 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
require_relative 'gem_package_tar_test_case'
require 'rubygems/package'
diff --git a/test/rubygems/test_gem_package_tar_reader_entry.rb b/test/rubygems/test_gem_package_tar_reader_entry.rb
index bb154a7b6b..5323474541 100644
--- a/test/rubygems/test_gem_package_tar_reader_entry.rb
+++ b/test/rubygems/test_gem_package_tar_reader_entry.rb
@@ -1,9 +1,3 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
require_relative 'gem_package_tar_test_case'
require 'rubygems/package'
diff --git a/test/rubygems/test_gem_package_tar_writer.rb b/test/rubygems/test_gem_package_tar_writer.rb
index 0d691e45cd..d819065a41 100644
--- a/test/rubygems/test_gem_package_tar_writer.rb
+++ b/test/rubygems/test_gem_package_tar_writer.rb
@@ -1,9 +1,3 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
require_relative 'gem_package_tar_test_case'
require 'rubygems/package/tar_writer'
diff --git a/test/rubygems/test_gem_package_task.rb b/test/rubygems/test_gem_package_task.rb
index a8334ce4e8..2e6710f4ac 100644
--- a/test/rubygems/test_gem_package_task.rb
+++ b/test/rubygems/test_gem_package_task.rb
@@ -1,24 +1,3 @@
-# Copyright (c) 2003, 2004 Jim Weirich, 2009 Eric Hodel
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be
-# included in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
require_relative 'gemutilities'
require 'rubygems'
require 'rubygems/package_task'
@@ -35,7 +14,6 @@ class TestGemPackageTask < MiniTest::Unit::TestCase
p.package_files << "y"
end
assert_equal ["x", "y"], pkg.package_files
- assert_equal "pkgr-1.2.3.gem", pkg.gem_file
end
def test_gem_package_with_current_platform
@@ -49,7 +27,6 @@ class TestGemPackageTask < MiniTest::Unit::TestCase
p.package_files << "y"
end
assert_equal ["x", "y"], pkg.package_files
- assert_match(/^pkgr-1\.2\.3-(\S+)\.gem$/, pkg.gem_file)
end
def test_gem_package_with_ruby_platform
@@ -63,7 +40,6 @@ class TestGemPackageTask < MiniTest::Unit::TestCase
p.package_files << "y"
end
assert_equal ["x", "y"], pkg.package_files
- assert_equal "pkgr-1.2.3.gem", pkg.gem_file
end
end
diff --git a/test/rubygems/test_gem_remote_fetcher.rb b/test/rubygems/test_gem_remote_fetcher.rb
index e29fe60481..d6b78dc7cc 100644
--- a/test/rubygems/test_gem_remote_fetcher.rb
+++ b/test/rubygems/test_gem_remote_fetcher.rb
@@ -1,14 +1,8 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
require_relative 'gemutilities'
+require 'ostruct'
require 'webrick'
-require 'zlib'
require 'rubygems/remote_fetcher'
-require 'ostruct'
+require 'rubygems/format'
# = Testing Proxy Settings
#
@@ -208,7 +202,7 @@ gems:
fetcher = util_fuck_with_fetcher a1_data
- a1_cache_gem = File.join(@gemhome, 'cache', "#{@a1.full_name}.gem")
+ a1_cache_gem = File.join(@gemhome, 'cache', @a1.file_name)
assert_equal a1_cache_gem, fetcher.download(@a1, 'http://gems.example.com')
assert_equal("http://gems.example.com/gems/a-1.gem",
fetcher.instance_variable_get(:@test_arg).to_s)
@@ -220,20 +214,20 @@ gems:
inst = Gem::RemoteFetcher.fetcher
- assert_equal File.join(@gemhome, 'cache', "#{@a1.full_name}.gem"),
+ assert_equal File.join(@gemhome, 'cache', @a1.file_name),
inst.download(@a1, 'http://gems.example.com')
end
def test_download_local
FileUtils.mv @a1_gem, @tempdir
- local_path = File.join @tempdir, "#{@a1.full_name}.gem"
+ local_path = File.join @tempdir, @a1.file_name
inst = nil
Dir.chdir @tempdir do
inst = Gem::RemoteFetcher.fetcher
end
- assert_equal File.join(@gemhome, 'cache', "#{@a1.full_name}.gem"),
+ assert_equal File.join(@gemhome, 'cache', @a1.file_name),
inst.download(@a1, local_path)
end
@@ -241,14 +235,14 @@ gems:
space_path = File.join @tempdir, 'space path'
FileUtils.mkdir space_path
FileUtils.mv @a1_gem, space_path
- local_path = File.join space_path, "#{@a1.full_name}.gem"
+ local_path = File.join space_path, @a1.file_name
inst = nil
Dir.chdir @tempdir do
inst = Gem::RemoteFetcher.fetcher
end
- assert_equal File.join(@gemhome, 'cache', "#{@a1.full_name}.gem"),
+ assert_equal File.join(@gemhome, 'cache', @a1.file_name),
inst.download(@a1, local_path)
end
@@ -262,7 +256,7 @@ gems:
install_dir = File.join @tempdir, 'more_gems'
- a1_cache_gem = File.join install_dir, 'cache', "#{@a1.full_name}.gem"
+ a1_cache_gem = File.join install_dir, 'cache', @a1.file_name
FileUtils.mkdir_p(File.dirname(a1_cache_gem))
actual = fetcher.download(@a1, 'http://gems.example.com', install_dir)
@@ -276,7 +270,7 @@ gems:
unless win_platform? # File.chmod doesn't work
def test_download_local_read_only
FileUtils.mv @a1_gem, @tempdir
- local_path = File.join @tempdir, "#{@a1.full_name}.gem"
+ local_path = File.join @tempdir, @a1.file_name
inst = nil
File.chmod 0555, File.join(@gemhome, 'cache')
@@ -284,7 +278,7 @@ gems:
inst = Gem::RemoteFetcher.fetcher
end
- assert_equal File.join(@tempdir, "#{@a1.full_name}.gem"),
+ assert_equal File.join(@tempdir, @a1.file_name),
inst.download(@a1, local_path)
ensure
File.chmod 0755, File.join(@gemhome, 'cache')
@@ -296,8 +290,7 @@ gems:
fetcher = util_fuck_with_fetcher File.read(@a1_gem)
fetcher.download(@a1, 'http://gems.example.com')
- assert File.exist?(File.join(Gem.user_dir, 'cache',
- "#{@a1.full_name}.gem"))
+ assert File.exist?(File.join(Gem.user_dir, 'cache', @a1.file_name))
ensure
File.chmod 0755, File.join(@gemhome)
File.chmod 0755, File.join(@gemhome, 'cache')
@@ -319,7 +312,7 @@ gems:
fetcher = util_fuck_with_fetcher e1_data, :blow_chunks
- e1_cache_gem = File.join(@gemhome, 'cache', "#{e1.full_name}.gem")
+ e1_cache_gem = File.join(@gemhome, 'cache', e1.file_name)
assert_equal e1_cache_gem, fetcher.download(e1, 'http://gems.example.com')
@@ -328,6 +321,23 @@ gems:
assert File.exist?(e1_cache_gem)
end
+ def test_download_same_file
+ FileUtils.mv @a1_gem, @tempdir
+ local_path = File.join @tempdir, @a1.file_name
+ inst = nil
+
+ Dir.chdir @tempdir do
+ inst = Gem::RemoteFetcher.fetcher
+ end
+
+ cache_path = File.join @gemhome, 'cache', @a1.file_name
+ FileUtils.mv local_path, cache_path
+
+ gem = Gem::Format.from_file_by_path cache_path
+
+ assert_equal cache_path, inst.download(gem.spec, cache_path)
+ end
+
def test_download_unsupported
inst = Gem::RemoteFetcher.fetcher
diff --git a/test/rubygems/test_gem_requirement.rb b/test/rubygems/test_gem_requirement.rb
index e64c90cb76..a70dd0fd8e 100644
--- a/test/rubygems/test_gem_requirement.rb
+++ b/test/rubygems/test_gem_requirement.rb
@@ -1,222 +1,292 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
require_relative 'gemutilities'
-require 'rubygems/version'
+require "rubygems/requirement"
class TestGemRequirement < RubyGemTestCase
- def setup
- super
-
- @r1_2 = Gem::Requirement.new '= 1.2'
- @r1_3 = Gem::Requirement.new '= 1.3'
- end
-
- def test_initialize
- r = Gem::Requirement.new '2'
- assert_equal '= 2', r.to_s, 'String'
-
- r = Gem::Requirement.new %w[2]
- assert_equal '= 2', r.to_s, 'Array of Strings'
-
- r = Gem::Requirement.new Gem::Version.new('2')
- assert_equal '= 2', r.to_s, 'Gem::Version'
- end
-
def test_equals2
- assert_equal @r1_2, @r1_2.dup
- assert_equal @r1_2.dup, @r1_2
+ r = req "= 1.2"
+ assert_equal r, r.dup
+ assert_equal r.dup, r
- refute_equal @r1_3, @r1_2
- refute_equal @r1_2, @r1_3
+ refute_requirement_equal "= 1.2", "= 1.3"
+ refute_requirement_equal "= 1.3", "= 1.2"
- refute_equal Object.new, @r1_2
- refute_equal @r1_2, Object.new
+ refute_equal Object.new, req("= 1.2")
+ refute_equal req("= 1.2"), Object.new
end
- def test_hash
- assert_equal @r1_2.hash, @r1_2.dup.hash
- assert_equal @r1_2.dup.hash, @r1_2.hash
-
- refute_equal @r1_2.hash, @r1_3.hash
- refute_equal @r1_3.hash, @r1_2.hash
+ def test_initialize
+ assert_requirement_equal "= 2", "2"
+ assert_requirement_equal "= 2", ["2"]
+ assert_requirement_equal "= 2", v(2)
end
- # We may get some old gems that have requirements in old formats.
- # We need to be able to handle those old requirements by normalizing
- # them to the latest format.
- def test_normalization
- require 'yaml'
- yamldep = %{--- !ruby/object:Gem::Requirement
- nums:
- - 1
- - 0
- - 4
- op: ">="
- version: ">= 1.0.4"}
- dep = YAML.load(yamldep)
- dep.normalize
- assert_equal ">= 1.0.4", dep.to_s
+ def test_class_available_as_gem_version_requirement
+ assert_same Gem::Requirement, Gem::Version::Requirement,
+ "Gem::Version::Requirement is aliased for old YAML compatibility."
end
def test_parse
- assert_equal ['=', Gem::Version.new(1)], @r1_2.parse(' 1')
-
- assert_equal ['=', Gem::Version.new(1)], @r1_2.parse('= 1')
- assert_equal ['>', Gem::Version.new(1)], @r1_2.parse('> 1')
+ assert_equal ['=', Gem::Version.new(1)], Gem::Requirement.parse(' 1')
+ assert_equal ['=', Gem::Version.new(1)], Gem::Requirement.parse('= 1')
+ assert_equal ['>', Gem::Version.new(1)], Gem::Requirement.parse('> 1')
+ assert_equal ['=', Gem::Version.new(1)], Gem::Requirement.parse("=\n1")
- assert_equal ['=', Gem::Version.new(0)], @r1_2.parse('=')
- assert_equal ['>', Gem::Version.new(0)], @r1_2.parse('>')
-
- assert_equal ['=', Gem::Version.new(1)], @r1_2.parse("=\n1")
- assert_equal ['=', Gem::Version.new(0)], @r1_2.parse("=\njunk")
-
- assert_equal ['=', Gem::Version.new(2)], @r1_2.parse(Gem::Version.new('2'))
+ assert_equal ['=', Gem::Version.new(2)],
+ Gem::Requirement.parse(Gem::Version.new('2'))
end
- def test_parse_illformed
+ def test_parse_bad
e = assert_raises ArgumentError do
- @r1_2.parse(nil)
+ Gem::Requirement.parse nil
end
assert_equal 'Illformed requirement [nil]', e.message
e = assert_raises ArgumentError do
- @r1_2.parse('')
+ Gem::Requirement.parse ""
end
assert_equal 'Illformed requirement [""]', e.message
end
+ def test_prerelease_eh
+ r = req '= 1'
+
+ refute r.prerelease?
+
+ r = req '= 1.a'
+
+ assert r.prerelease?
+
+ r = req '> 1.a', '< 2'
+
+ assert r.prerelease?
+ end
+
def test_satisfied_by_eh_bang_equal
- r1_2 = Gem::Requirement.new '!= 1.2'
- v1_1 = Gem::Version.new '1.1'
- v1_2 = Gem::Version.new '1.2'
- v1_3 = Gem::Version.new '1.3'
+ r = req '!= 1.2'
- assert_equal true, r1_2.satisfied_by?(nil)
- assert_equal true, r1_2.satisfied_by?(v1_1)
- assert_equal false, r1_2.satisfied_by?(v1_2)
- assert_equal true, r1_2.satisfied_by?(v1_3)
+ assert_satisfied_by nil, r
+ assert_satisfied_by "1.1", r
+ refute_satisfied_by "1.2", r
+ assert_satisfied_by "1.3", r
end
def test_satisfied_by_eh_blank
- r1_2 = Gem::Requirement.new '1.2'
- v1_1 = Gem::Version.new '1.1'
- v1_2 = Gem::Version.new '1.2'
- v1_3 = Gem::Version.new '1.3'
+ r = req "1.2"
- assert_equal false, r1_2.satisfied_by?(nil)
- assert_equal false, r1_2.satisfied_by?(v1_1)
- assert_equal true, r1_2.satisfied_by?(v1_2)
- assert_equal false, r1_2.satisfied_by?(v1_3)
+ refute_satisfied_by nil, r
+ refute_satisfied_by "1.1", r
+ assert_satisfied_by "1.2", r
+ refute_satisfied_by "1.3", r
end
def test_satisfied_by_eh_equal
- r1_2 = @r1_2
- v1_1 = Gem::Version.new '1.1'
- v1_2 = Gem::Version.new '1.2'
- v1_3 = Gem::Version.new '1.3'
+ r = req "= 1.2"
- assert_equal false, r1_2.satisfied_by?(nil)
- assert_equal false, r1_2.satisfied_by?(v1_1)
- assert_equal true, r1_2.satisfied_by?(v1_2)
- assert_equal false, r1_2.satisfied_by?(v1_3)
+ refute_satisfied_by nil, r
+ refute_satisfied_by "1.1", r
+ assert_satisfied_by "1.2", r
+ refute_satisfied_by "1.3", r
end
def test_satisfied_by_eh_gt
- r1_2 = Gem::Requirement.new '> 1.2'
- v1_1 = Gem::Version.new '1.1'
- v1_2 = Gem::Version.new '1.2'
- v1_3 = Gem::Version.new '1.3'
+ r = req "> 1.2"
- assert_equal false, r1_2.satisfied_by?(v1_1)
- assert_equal false, r1_2.satisfied_by?(v1_2)
- assert_equal true, r1_2.satisfied_by?(v1_3)
+ refute_satisfied_by "1.1", r
+ refute_satisfied_by "1.2", r
+ assert_satisfied_by "1.3", r
assert_raises NoMethodError do
- assert_equal true, r1_2.satisfied_by?(nil)
+ r.satisfied_by? nil
end
end
def test_satisfied_by_eh_gte
- r1_2 = Gem::Requirement.new '>= 1.2'
- v1_1 = Gem::Version.new '1.1'
- v1_2 = Gem::Version.new '1.2'
- v1_3 = Gem::Version.new '1.3'
+ r = req ">= 1.2"
- assert_equal false, r1_2.satisfied_by?(v1_1)
- assert_equal true, r1_2.satisfied_by?(v1_2)
- assert_equal true, r1_2.satisfied_by?(v1_3)
+ refute_satisfied_by "1.1", r
+ assert_satisfied_by "1.2", r
+ assert_satisfied_by "1.3", r
assert_raises NoMethodError do
- assert_equal true, r1_2.satisfied_by?(nil)
+ r.satisfied_by? nil
end
end
def test_satisfied_by_eh_list
- r = Gem::Requirement.create(['> 1.1', '< 1.3'])
- v1_1 = Gem::Version.new '1.1'
- v1_2 = Gem::Version.new '1.2'
- v1_3 = Gem::Version.new '1.3'
+ r = req "> 1.1", "< 1.3"
- assert_equal false, r.satisfied_by?(v1_1)
- assert_equal true, r.satisfied_by?(v1_2)
- assert_equal false, r.satisfied_by?(v1_3)
+ refute_satisfied_by "1.1", r
+ assert_satisfied_by "1.2", r
+ refute_satisfied_by "1.3", r
assert_raises NoMethodError do
- assert_equal true, r.satisfied_by?(nil)
+ r.satisfied_by? nil
end
end
def test_satisfied_by_eh_lt
- r1_2 = Gem::Requirement.new '< 1.2'
- v1_1 = Gem::Version.new '1.1'
- v1_2 = Gem::Version.new '1.2'
- v1_3 = Gem::Version.new '1.3'
+ r = req "< 1.2"
- assert_equal true, r1_2.satisfied_by?(v1_1)
- assert_equal false, r1_2.satisfied_by?(v1_2)
- assert_equal false, r1_2.satisfied_by?(v1_3)
+ assert_satisfied_by "1.1", r
+ refute_satisfied_by "1.2", r
+ refute_satisfied_by "1.3", r
assert_raises NoMethodError do
- assert_equal true, r1_2.satisfied_by?(nil)
+ r.satisfied_by? nil
end
end
def test_satisfied_by_eh_lte
- r1_2 = Gem::Requirement.new '<= 1.2'
- v1_1 = Gem::Version.new '1.1'
- v1_2 = Gem::Version.new '1.2'
- v1_3 = Gem::Version.new '1.3'
+ r = req "<= 1.2"
- assert_equal true, r1_2.satisfied_by?(v1_1)
- assert_equal true, r1_2.satisfied_by?(v1_2)
- assert_equal false, r1_2.satisfied_by?(v1_3)
+ assert_satisfied_by "1.1", r
+ assert_satisfied_by "1.2", r
+ refute_satisfied_by "1.3", r
assert_raises NoMethodError do
- assert_equal true, r1_2.satisfied_by?(nil)
+ r.satisfied_by? nil
end
end
def test_satisfied_by_eh_tilde_gt
- r1_2 = Gem::Requirement.new '~> 1.2'
- v1_1 = Gem::Version.new '1.1'
- v1_2 = Gem::Version.new '1.2'
- v1_3 = Gem::Version.new '1.3'
+ r = req "~> 1.2"
- assert_equal false, r1_2.satisfied_by?(v1_1)
- assert_equal true, r1_2.satisfied_by?(v1_2)
- assert_equal true, r1_2.satisfied_by?(v1_3)
+ refute_satisfied_by "1.1", r
+ assert_satisfied_by "1.2", r
+ assert_satisfied_by "1.3", r
assert_raises NoMethodError do
- assert_equal true, r1_2.satisfied_by?(nil)
+ r.satisfied_by? nil
end
end
-end
+ def test_satisfied_by_eh_good
+ assert_satisfied_by "0.2.33", "= 0.2.33"
+ assert_satisfied_by "0.2.34", "> 0.2.33"
+ assert_satisfied_by "1.0", "= 1.0"
+ assert_satisfied_by "1.0", "1.0"
+ assert_satisfied_by "1.8.2", "> 1.8.0"
+ assert_satisfied_by "1.112", "> 1.111"
+ assert_satisfied_by "0.2", "> 0.0.0"
+ assert_satisfied_by "0.0.0.0.0.2", "> 0.0.0"
+ assert_satisfied_by "0.0.1.0", "> 0.0.0.1"
+ assert_satisfied_by "10.3.2", "> 9.3.2"
+ assert_satisfied_by "1.0.0.0", "= 1.0"
+ assert_satisfied_by "10.3.2", "!= 9.3.4"
+ assert_satisfied_by "10.3.2", "> 9.3.2"
+ assert_satisfied_by "10.3.2", "> 9.3.2"
+ assert_satisfied_by " 9.3.2", ">= 9.3.2"
+ assert_satisfied_by "9.3.2 ", ">= 9.3.2"
+ assert_satisfied_by "", "= 0"
+ assert_satisfied_by "", "< 0.1"
+ assert_satisfied_by " ", "< 0.1 "
+ assert_satisfied_by "", " < 0.1"
+ assert_satisfied_by " ", "> 0.a "
+ assert_satisfied_by "", " > 0.a"
+ assert_satisfied_by "3.1", "< 3.2.rc1"
+ assert_satisfied_by "3.2.0", "> 3.2.0.rc1"
+ assert_satisfied_by "3.2.0.rc2", "> 3.2.0.rc1"
+ assert_satisfied_by "3.0.rc2", "< 3.0"
+ assert_satisfied_by "3.0.rc2", "< 3.0.0"
+ assert_satisfied_by "3.0.rc2", "< 3.0.1"
+ end
+ def test_illformed_requirements
+ [ ">>> 1.3.5", "> blah" ].each do |rq|
+ assert_raises ArgumentError, "req [#{rq}] should fail" do
+ Gem::Requirement.new rq
+ end
+ end
+ end
+
+ def test_satisfied_by_eh_boxed
+ refute_satisfied_by "1.3", "~> 1.4"
+ assert_satisfied_by "1.4", "~> 1.4"
+ assert_satisfied_by "1.5", "~> 1.4"
+ refute_satisfied_by "2.0", "~> 1.4"
+
+ refute_satisfied_by "1.3", "~> 1.4.4"
+ refute_satisfied_by "1.4", "~> 1.4.4"
+ assert_satisfied_by "1.4.4", "~> 1.4.4"
+ assert_satisfied_by "1.4.5", "~> 1.4.4"
+ refute_satisfied_by "1.5", "~> 1.4.4"
+ refute_satisfied_by "2.0", "~> 1.4.4"
+
+ refute_satisfied_by "1.1.pre", "~> 1.0.0"
+ assert_satisfied_by "1.1.pre", "~> 1.1"
+ refute_satisfied_by "2.0.a", "~> 1.0"
+ assert_satisfied_by "2.0.a", "~> 2.0"
+ end
+
+ def test_satisfied_by_eh_multiple
+ req = [">= 1.4", "<= 1.6", "!= 1.5"]
+
+ refute_satisfied_by "1.3", req
+ assert_satisfied_by "1.4", req
+ refute_satisfied_by "1.5", req
+ assert_satisfied_by "1.6", req
+ refute_satisfied_by "1.7", req
+ refute_satisfied_by "2.0", req
+ end
+
+ def test_satisfied_by_boxed
+ refute_satisfied_by "1.3", "~> 1.4"
+ assert_satisfied_by "1.4", "~> 1.4"
+ assert_satisfied_by "1.5", "~> 1.4"
+ refute_satisfied_by "2.0", "~> 1.4"
+
+ refute_satisfied_by "1.3", "~> 1.4.4"
+ refute_satisfied_by "1.4", "~> 1.4.4"
+ assert_satisfied_by "1.4.4", "~> 1.4.4"
+ assert_satisfied_by "1.4.5", "~> 1.4.4"
+ refute_satisfied_by "1.5", "~> 1.4.4"
+ refute_satisfied_by "2.0", "~> 1.4.4"
+ end
+
+ def test_bad
+ refute_satisfied_by "", "> 0.1"
+ refute_satisfied_by "1.2.3", "!= 1.2.3"
+ refute_satisfied_by "1.2.003.0.0", "!= 1.02.3"
+ refute_satisfied_by "4.5.6", "< 1.2.3"
+ refute_satisfied_by "1.0", "> 1.1"
+ refute_satisfied_by "", "= 0.1"
+ refute_satisfied_by "1.1.1", "> 1.1.1"
+ refute_satisfied_by "1.2", "= 1.1"
+ refute_satisfied_by "1.40", "= 1.1"
+ refute_satisfied_by "1.3", "= 1.40"
+ refute_satisfied_by "9.3.3", "<= 9.3.2"
+ refute_satisfied_by "9.3.1", ">= 9.3.2"
+ refute_satisfied_by "9.3.03", "<= 9.3.2"
+ refute_satisfied_by "1.0.0.1", "= 1.0"
+ end
+
+ # Assert that two requirements are equal. Handles Gem::Requirements,
+ # strings, arrays, numbers, and versions.
+
+ def assert_requirement_equal expected, actual
+ assert_equal req(expected), req(actual)
+ end
+
+ # Assert that +version+ satisfies +requirement+.
+
+ def assert_satisfied_by version, requirement
+ assert req(requirement).satisfied_by?(v(version)),
+ "#{requirement} is satisfied by #{version}"
+ end
+
+ # Refute the assumption that two requirements are equal.
+
+ def refute_requirement_equal unexpected, actual
+ refute_equal req(unexpected), req(actual)
+ end
+
+ # Refute the assumption that +version+ satisfies +requirement+.
+
+ def refute_satisfied_by version, requirement
+ refute req(requirement).satisfied_by?(v(version)),
+ "#{requirement} is not satisfied by #{version}"
+ end
+end
diff --git a/test/rubygems/test_gem_server.rb b/test/rubygems/test_gem_server.rb
index 5a380d008e..41c25fe7d9 100644
--- a/test/rubygems/test_gem_server.rb
+++ b/test/rubygems/test_gem_server.rb
@@ -78,6 +78,26 @@ class TestGemServer < RubyGemTestCase
Marshal.load(Gem.gunzip(@res.body))
end
+ def test_listen
+ util_listen
+
+ out, err = capture_io do
+ @server.listen
+ end
+
+ assert_equal 1, @server.server.listeners.length
+ end
+
+ def test_listen_addresses
+ util_listen
+
+ out, err = capture_io do
+ @server.listen %w[a b]
+ end
+
+ assert_equal 2, @server.server.listeners.length
+ end
+
def test_quick_a_1_gemspec_rz
data = StringIO.new "GET /quick/a-1.gemspec.rz HTTP/1.0\r\n\r\n"
@req.parse data
@@ -306,5 +326,20 @@ class TestGemServer < RubyGemTestCase
assert_equal si, YAML.load(Gem.inflate(@res.body))
end
+ def util_listen
+ webrick = Object.new
+ webrick.instance_variable_set :@listeners, []
+ def webrick.listeners() @listeners end
+ def webrick.listen(host, port)
+ socket = Object.new
+ socket.instance_variable_set :@host, host
+ socket.instance_variable_set :@port, port
+ def socket.addr() [nil, @port, @host] end
+ @listeners << socket
+ end
+
+ @server.instance_variable_set :@server, webrick
+ end
+
end
diff --git a/test/rubygems/test_gem_source_index.rb b/test/rubygems/test_gem_source_index.rb
index 40a9a85b27..acace09da9 100644
--- a/test/rubygems/test_gem_source_index.rb
+++ b/test/rubygems/test_gem_source_index.rb
@@ -1,9 +1,3 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
require_relative 'gemutilities'
require 'rubygems/source_index'
require 'rubygems/config_file'
@@ -31,7 +25,7 @@ class TestGemSourceIndex < RubyGemTestCase
a1 = quick_gem 'a', '1' do |spec| spec.author = 'author 1' end
- spec_file = File.join spec_dir, "#{a1.full_name}.gemspec"
+ spec_file = File.join spec_dir, a1.spec_name
File.open spec_file, 'w' do |fp|
fp.write a1.to_ruby
@@ -52,7 +46,7 @@ class TestGemSourceIndex < RubyGemTestCase
a1 = quick_gem 'a', '1' do |spec| spec.author = 'author 1' end
- spec_file = File.join spec_dir, "#{a1.full_name}.gemspec"
+ spec_file = File.join spec_dir, a1.spec_name
File.open spec_file, 'w' do |fp|
fp.write a1.to_ruby
@@ -298,11 +292,11 @@ WARNING: Invalid .gemspec format in '#{spec_file}'
a1 = quick_gem 'a', '1' do |spec| spec.author = 'author 1' end
a2 = quick_gem 'a', '1' do |spec| spec.author = 'author 2' end
- File.open File.join(spec_dir1, "#{a1.full_name}.gemspec"), 'w' do |fp|
+ File.open File.join(spec_dir1, a1.spec_name), 'w' do |fp|
fp.write a1.to_ruby
end
- File.open File.join(spec_dir2, "#{a2.full_name}.gemspec"), 'w' do |fp|
+ File.open File.join(spec_dir2, a2.spec_name), 'w' do |fp|
fp.write a2.to_ruby
end
@@ -340,7 +334,7 @@ WARNING: Invalid .gemspec format in '#{spec_file}'
end
def test_refresh_bang
- a1_spec = File.join @gemhome, "specifications", "#{@a1.full_name}.gemspec"
+ a1_spec = File.join @gemhome, "specifications", @a1.spec_name
FileUtils.mv a1_spec, @tempdir
@@ -348,7 +342,7 @@ WARNING: Invalid .gemspec format in '#{spec_file}'
refute source_index.gems.include?(@a1.full_name)
- FileUtils.mv File.join(@tempdir, "#{@a1.full_name}.gemspec"), a1_spec
+ FileUtils.mv File.join(@tempdir, @a1.spec_name), a1_spec
source_index.refresh!
diff --git a/test/rubygems/test_gem_source_info_cache.rb b/test/rubygems/test_gem_source_info_cache.rb
deleted file mode 100644
index f712f138c1..0000000000
--- a/test/rubygems/test_gem_source_info_cache.rb
+++ /dev/null
@@ -1,447 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require_relative 'gemutilities'
-require 'rubygems/source_info_cache'
-
-class Gem::SourceIndex
- public :gems
-end
-
-class TestGemSourceInfoCache < RubyGemTestCase
-
- def setup
- @original_sources = Gem.sources
-
- super
-
- util_setup_fake_fetcher
-
- @sic = Gem::SourceInfoCache.new
- @sic.instance_variable_set :@fetcher, @fetcher
-
- @si_new = Gem::SourceIndex.new
- @sice_new = Gem::SourceInfoCacheEntry.new @si_new, 0
-
- prep_cache_files @sic
-
- @sic.reset_cache_data
- end
-
- def teardown
- super
- Gem.sources.replace @original_sources
- Gem::SourceInfoCache.instance_variable_set :@cache, nil
- end
-
- def test_self_cache_refreshes
- Gem.configuration.update_sources = true #true by default
- si = Gem::SourceIndex.new
- si.add_spec @a1
-
- @fetcher.data["#{@gem_repo}Marshal.#{@marshal_version}"] = si.dump
-
- Gem.sources.replace %W[#{@gem_repo}]
-
- use_ui @ui do
- refute_nil Gem::SourceInfoCache.cache
- assert_kind_of Gem::SourceInfoCache, Gem::SourceInfoCache.cache
- assert_equal Gem::SourceInfoCache.cache.object_id,
- Gem::SourceInfoCache.cache.object_id
- end
-
- assert_match %r|Bulk updating|, @ui.output
- end
-
- def test_self_cache_skips_refresh_based_on_configuration
- Gem.configuration.update_sources = false
- si = Gem::SourceIndex.new
- si.add_spec @a1
-
- @fetcher.data["#{@gem_repo}Marshal.#{@marshal_version}"] = si.dump
-
- Gem.sources.replace %w[#{@gem_repo}]
-
- use_ui @ui do
- refute_nil Gem::SourceInfoCache.cache
- assert_kind_of Gem::SourceInfoCache, Gem::SourceInfoCache.cache
- assert_equal Gem::SourceInfoCache.cache.object_id,
- Gem::SourceInfoCache.cache.object_id
- refute_match %r|Bulk updating|, @ui.output
- end
- end
-
- def test_self_cache_data
- si = Gem::SourceIndex.new
- si.add_spec @a1
-
- @fetcher.data["#{@gem_repo}Marshal.#{@marshal_version}"] = si.dump
-
- Gem::SourceInfoCache.instance_variable_set :@cache, nil
- sice = Gem::SourceInfoCacheEntry.new si, 0
-
- use_ui @ui do
- gems = Gem::SourceInfoCache.cache_data[@gem_repo].source_index.gems
- gem_names = gems.map { |_, spec| spec.full_name }
-
- assert_equal si.gems.map { |_,spec| spec.full_name }, gem_names
- end
- end
-
- def test_cache_data
- assert_equal [[@gem_repo, @usr_sice]], @sic.cache_data.to_a.sort
- end
-
- def test_cache_data_dirty
- def @sic.dirty() @dirty; end
- assert_equal false, @sic.dirty, 'clean on init'
- @sic.cache_data
- assert_equal false, @sic.dirty, 'clean on fetch'
- @sic.update
- @sic.cache_data
- assert_equal true, @sic.dirty, 'still dirty'
- end
-
- def test_cache_data_irreparable
- @fetcher.data["#{@gem_repo}Marshal.#{@marshal_version}"] = @source_index.dump
-
- data = { @gem_repo => { 'totally' => 'borked' } }
-
- cache_files = [
- @sic.system_cache_file,
- @sic.latest_system_cache_file,
- @sic.user_cache_file,
- @sic.latest_user_cache_file
- ]
-
- cache_files.each do |fn|
- FileUtils.mkdir_p File.dirname(fn)
- open(fn, "wb") { |f| f.write Marshal.dump(data) }
- end
-
- @sic.instance_eval { @cache_data = nil }
-
- fetched = use_ui @ui do @sic.cache_data end
-
- fetched_si = fetched["#{@gem_repo}"].source_index
-
- assert_equal @source_index.index_signature, fetched_si.index_signature
- end
-
- def test_cache_data_none_readable
- FileUtils.chmod 0222, @sic.system_cache_file
- FileUtils.chmod 0222, @sic.latest_system_cache_file
- FileUtils.chmod 0222, @sic.user_cache_file
- FileUtils.chmod 0222, @sic.latest_user_cache_file
- return if (File.stat(@sic.system_cache_file).mode & 0222) != 0222
- return if (File.stat(@sic.user_cache_file).mode & 0222) != 0222
- # HACK for systems that don't support chmod
- assert_equal({}, @sic.cache_data)
- end
-
- def test_cache_data_none_writable
- FileUtils.chmod 0444, @sic.system_cache_file
- FileUtils.chmod 0444, @sic.user_cache_file
- e = assert_raises RuntimeError do
- @sic.cache_data
- end
- assert_equal 'unable to locate a writable cache file', e.message
- end
-
- def test_cache_data_nonexistent
- FileUtils.rm @sic.system_cache_file
- FileUtils.rm @sic.latest_system_cache_file
- FileUtils.rm @sic.user_cache_file
- FileUtils.rm @sic.latest_user_cache_file
-
- # TODO test verbose output
- assert_equal [], @sic.cache_data.to_a.sort
- end
-
- def test_cache_data_repair
- data = {
- @gem_repo => {
- 'cache' => Gem::SourceIndex.new,
- 'size' => 0,
- }
- }
- [@sic.system_cache_file, @sic.user_cache_file].each do |fn|
- FileUtils.mkdir_p File.dirname(fn)
- open(fn, "wb") { |f| f.write Marshal.dump(data) }
- end
-
- @sic.instance_eval { @cache_data = nil }
-
- expected = {
- @gem_repo =>
- Gem::SourceInfoCacheEntry.new(Gem::SourceIndex.new, 0)
- }
- assert_equal expected, @sic.cache_data
- end
-
- def test_cache_data_user_fallback
- FileUtils.chmod 0444, @sic.system_cache_file
-
- assert_equal [[@gem_repo, @usr_sice]], @sic.cache_data.to_a.sort
- end
-
- def test_cache_file
- assert_equal @gemcache, @sic.cache_file
- end
-
- def test_cache_file_user_fallback
- FileUtils.chmod 0444, @sic.system_cache_file
- assert_equal @usrcache, @sic.cache_file
- end
-
- def test_cache_file_none_writable
- FileUtils.chmod 0444, @sic.system_cache_file
- FileUtils.chmod 0444, @sic.user_cache_file
- e = assert_raises RuntimeError do
- @sic.cache_file
- end
- assert_equal 'unable to locate a writable cache file', e.message
- end
-
- def test_flush
- @sic.cache_data[@gem_repo] = @sice_new
- @sic.update
- @sic.flush
-
- assert_equal [[@gem_repo, @sice_new]],
- read_cache(@sic.system_cache_file).to_a.sort
- end
-
- def test_latest_cache_data
- util_make_gems
-
- sice = Gem::SourceInfoCacheEntry.new @source_index, 0
-
- @sic.set_cache_data @gem_repo => sice
- latest = @sic.latest_cache_data
- beginning_with_a = Gem::Dependency.new(/^a/, Gem::Requirement.default)
- gems = latest[@gem_repo].source_index.search(beginning_with_a).map { |s| s.full_name }
-
- assert_equal %w[a-2 a_evil-9], gems
- end
-
- def test_latest_cache_file
- latest_cache_file = File.join File.dirname(@gemcache),
- "latest_#{File.basename @gemcache}"
- assert_equal latest_cache_file, @sic.latest_cache_file
- end
-
- def test_latest_system_cache_file
- assert_equal File.join(Gem.dir, "latest_source_cache"),
- @sic.latest_system_cache_file
- end
-
- def test_latest_user_cache_file
- assert_equal @latest_usrcache, @sic.latest_user_cache_file
- end
-
- def test_read_system_cache
- assert_equal [[@gem_repo, @sys_sice]], @sic.cache_data.to_a.sort
- end
-
- def test_read_user_cache
- FileUtils.chmod 0444, @sic.user_cache_file
- FileUtils.chmod 0444, @sic.latest_user_cache_file
-
- @si = Gem::SourceIndex.new
- @si.add_specs @a1, @a2
-
- @sice = Gem::SourceInfoCacheEntry.new @si, 0
-
- @sic.set_cache_data({ @gem_repo => @sice })
- @sic.update
- @sic.write_cache
- @sic.reset_cache_data
-
- user_cache_data = @sic.cache_data.to_a.sort
-
- assert_equal 1, user_cache_data.length
- user_cache_data = user_cache_data.first
-
- assert_equal @gem_repo, user_cache_data.first
-
- gems = user_cache_data.last.source_index.map { |_,spec| spec.full_name }
- assert_equal [@a2.full_name], gems
- end
-
- def test_search
- si = Gem::SourceIndex.new
- si.add_spec @a1
- cache_data = { @gem_repo => Gem::SourceInfoCacheEntry.new(si, nil) }
- @sic.instance_variable_set :@cache_data, cache_data
-
- assert_equal [@a1], @sic.search(//)
- end
-
- def test_search_all
- util_make_gems
-
- sice = Gem::SourceInfoCacheEntry.new @source_index, 0
-
- @sic.set_cache_data @gem_repo => sice
- @sic.update
- @sic.instance_variable_set :@only_latest, false
- @sic.write_cache
- @sic.reset_cache_data
-
- gem_names = @sic.search(//, false, true).map { |spec| spec.full_name }
-
- assert_equal %w[a-1 a-2 a-3.a a_evil-9 c-1.2], gem_names
- end
-
- def test_search_dependency
- si = Gem::SourceIndex.new
- si.add_spec @a1
- cache_data = { @gem_repo => Gem::SourceInfoCacheEntry.new(si, nil) }
- @sic.instance_variable_set :@cache_data, cache_data
-
- dep = Gem::Dependency.new @a1.name, @a1.version
-
- assert_equal [@a1], @sic.search(dep)
- end
-
- def test_search_no_matches
- si = Gem::SourceIndex.new
- si.add_spec @a1
- cache_data = { @gem_repo => Gem::SourceInfoCacheEntry.new(si, nil) }
- @sic.instance_variable_set :@cache_data, cache_data
-
- assert_equal [], @sic.search(/nonexistent/)
- end
-
- def test_search_no_matches_in_source
- si = Gem::SourceIndex.new
- si.add_spec @a1
- cache_data = { @gem_repo => Gem::SourceInfoCacheEntry.new(si, nil) }
- @sic.instance_variable_set :@cache_data, cache_data
- Gem.sources.replace %w[more-gems.example.com]
-
- assert_equal [], @sic.search(/nonexistent/)
- end
-
- def test_search_with_source
- si = Gem::SourceIndex.new
- si.add_spec @a1
- cache_data = { @gem_repo => Gem::SourceInfoCacheEntry.new(si, nil) }
- @sic.instance_variable_set :@cache_data, cache_data
-
- assert_equal [[@a1, @gem_repo]],
- @sic.search_with_source(//)
- end
-
- def test_system_cache_file
- assert_equal File.join(Gem.dir, "source_cache"), @sic.system_cache_file
- end
-
- def test_user_cache_file
- assert_equal @usrcache, @sic.user_cache_file
- end
-
- def test_write_cache
- @sic.cache_data[@gem_repo] = @sice_new
- @sic.write_cache
-
- assert_equal [[@gem_repo, @sice_new]],
- read_cache(@sic.system_cache_file).to_a.sort
- assert_equal [[@gem_repo, @usr_sice]],
- read_cache(@sic.user_cache_file).to_a.sort
- end
-
- def test_write_cache_user
- FileUtils.chmod 0444, @sic.system_cache_file
- @sic.set_cache_data({@gem_repo => @sice_new})
- @sic.update
- @sic.write_cache
- @sic.instance_variable_set :@only_latest, false
-
- assert File.exist?(@sic.user_cache_file), 'user_cache_file'
- assert File.exist?(@sic.latest_user_cache_file),
- 'latest_user_cache_file exists'
-
- assert_equal [[@gem_repo, @sys_sice]],
- read_cache(@sic.system_cache_file).to_a.sort
- assert_equal [[@gem_repo, @sice_new]],
- read_cache(@sic.user_cache_file).to_a.sort
- end
-
- def test_write_cache_user_from_scratch
- FileUtils.rm_rf @sic.user_cache_file
- FileUtils.rm_rf @sic.latest_user_cache_file
-
- FileUtils.chmod 0444, @sic.system_cache_file
- FileUtils.chmod 0444, @sic.latest_system_cache_file
-
- @si = Gem::SourceIndex.new
- @si.add_specs @a1, @a2
-
- @sice = Gem::SourceInfoCacheEntry.new @si, 0
-
- @sic.set_cache_data({ @gem_repo => @sice })
- @sic.update
-
- @sic.write_cache
-
- assert File.exist?(@sic.user_cache_file), 'system_cache_file'
- assert File.exist?(@sic.latest_user_cache_file),
- 'latest_system_cache_file'
-
- user_cache_data = read_cache(@sic.user_cache_file).to_a.sort
- assert_equal 1, user_cache_data.length, 'user_cache_data length'
- user_cache_data = user_cache_data.first
-
- assert_equal @gem_repo, user_cache_data.first
-
- gems = user_cache_data.last.source_index.map { |_,spec| spec.full_name }
- assert_equal [@a1.full_name, @a2.full_name], gems.sort
-
- user_cache_data = read_cache(@sic.latest_user_cache_file).to_a.sort
- assert_equal 1, user_cache_data.length
- user_cache_data = user_cache_data.first
-
- assert_equal @gem_repo, user_cache_data.first
-
- gems = user_cache_data.last.source_index.map { |_,spec| spec.full_name }
- assert_equal [@a2.full_name], gems
- end
-
- def test_write_cache_user_no_directory
- FileUtils.rm_rf File.dirname(@sic.user_cache_file)
- FileUtils.chmod 0444, @sic.system_cache_file
- @sic.set_cache_data({ @gem_repo => @sice_new })
- @sic.update
- @sic.write_cache
-
- assert_equal [[@gem_repo, @sys_sice]],
- read_cache(@sic.system_cache_file).to_a.sort
- assert_equal [[@gem_repo, @sys_sice]],
- read_cache(@sic.user_cache_file).to_a.sort
- assert_equal [[@gem_repo, @sice_new]],
- read_cache(@sic.latest_user_cache_file).to_a.sort
- end
-
- def test_write_cache_user_only_latest
- FileUtils.chmod 0444, @sic.system_cache_file
- @sic.set_cache_data({@gem_repo => @sice_new})
- @sic.update
- @sic.write_cache
-
- assert File.exist?(@sic.user_cache_file), 'user_cache_file'
- assert File.exist?(@sic.latest_user_cache_file),
- 'latest_user_cache_file exists'
-
- assert_equal [[@gem_repo, @sys_sice]],
- read_cache(@sic.system_cache_file).to_a.sort
- assert_equal [[@gem_repo, @sice_new]],
- read_cache(@sic.user_cache_file).to_a.sort
- end
-
-end
-
diff --git a/test/rubygems/test_gem_source_info_cache_entry.rb b/test/rubygems/test_gem_source_info_cache_entry.rb
deleted file mode 100644
index e05a05f69c..0000000000
--- a/test/rubygems/test_gem_source_info_cache_entry.rb
+++ /dev/null
@@ -1,78 +0,0 @@
-require_relative 'gemutilities'
-require 'rubygems/source_info_cache_entry'
-
-class TestGemSourceInfoCacheEntry < RubyGemTestCase
-
- def setup
- super
-
- util_setup_fake_fetcher
-
- @si = Gem::SourceIndex.new
- @si.add_spec @a1
- @sic_e = Gem::SourceInfoCacheEntry.new @si, @si.dump.size
- end
-
- def test_refresh
- @fetcher.data["#{@gem_repo}Marshal.#{@marshal_version}.Z"] =
- proc { raise }
- @fetcher.data["#{@gem_repo}Marshal.#{@marshal_version}"] = @si.dump
-
- use_ui @ui do
- @sic_e.refresh @gem_repo, true
- end
- end
-
- def test_refresh_all
- @si.add_spec @a2
-
- a1_name = @a1.full_name
- a2_name = @a2.full_name
-
- @fetcher.data["#{@gem_repo}quick/index.rz"] =
- util_zip [a1_name, a2_name].join("\n")
- @fetcher.data["#{@gem_repo}quick/latest_index.rz"] = util_zip a2_name
- @fetcher.data["#{@gem_repo}quick/Marshal.#{Gem.marshal_version}/#{a1_name}.gemspec.rz"] = util_zip Marshal.dump(@a1)
- @fetcher.data["#{@gem_repo}quick/Marshal.#{Gem.marshal_version}/#{a2_name}.gemspec.rz"] = util_zip Marshal.dump(@a2)
- @fetcher.data["#{@gem_repo}Marshal.#{Gem.marshal_version}"] =
- Marshal.dump @si
-
- sic_e = Gem::SourceInfoCacheEntry.new Gem::SourceIndex.new, 0
-
- assert_equal [], sic_e.source_index.map { |n,| n }
-
- use_ui @ui do
- assert sic_e.refresh(@gem_repo, false)
- end
-
- assert_equal [a2_name], sic_e.source_index.map { |n,| n }.sort
-
- use_ui @ui do
- sic_e.refresh @gem_repo, true
- end
-
- assert_equal [a1_name, a2_name], sic_e.source_index.map { |n,| n }.sort
- end
-
- def test_refresh_bad_uri
- assert_raises URI::BadURIError do
- @sic_e.refresh 'gems.example.com', true
- end
- end
-
- def test_refresh_update
- si = Gem::SourceIndex.new
- si.add_spec @a1
- si.add_spec @b2
- @fetcher.data["#{@gem_repo}Marshal.#{@marshal_version}"] = si.dump
-
- use_ui @ui do
- @sic_e.refresh @gem_repo, true
- end
-
- new_gem = @sic_e.source_index.specification(@b2.full_name)
- assert_equal @b2.full_name, new_gem.full_name
- end
-
-end
-
diff --git a/test/rubygems/test_gem_spec_fetcher.rb b/test/rubygems/test_gem_spec_fetcher.rb
index 4a6f22bafd..6864fd3beb 100644
--- a/test/rubygems/test_gem_spec_fetcher.rb
+++ b/test/rubygems/test_gem_spec_fetcher.rb
@@ -39,16 +39,17 @@ class TestGemSpecFetcher < RubyGemTestCase
end
def test_fetch_all
- @fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a1.full_name}.gemspec.rz"] =
+ @fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a1.spec_name}.rz"] =
util_zip(Marshal.dump(@a1))
- @fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a2.full_name}.gemspec.rz"] =
+ @fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a2.spec_name}.rz"] =
util_zip(Marshal.dump(@a2))
- @fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a_pre.full_name}.gemspec.rz"] =
+ @fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a_pre.spec_name}.rz"] =
util_zip(Marshal.dump(@a_pre))
- @fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a3a.full_name}.gemspec.rz"] =
+ @fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a3a.spec_name}.rz"] =
util_zip(Marshal.dump(@a3a))
dep = Gem::Dependency.new 'a', 1
+
specs_and_sources = @sf.fetch dep, true
spec_names = specs_and_sources.map do |spec, source_uri|
@@ -63,11 +64,11 @@ class TestGemSpecFetcher < RubyGemTestCase
end
def test_fetch_latest
- @fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a1.full_name}.gemspec.rz"] =
+ @fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a1.spec_name}.rz"] =
util_zip(Marshal.dump(@a1))
- @fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a2.full_name}.gemspec.rz"] =
+ @fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a2.spec_name}.rz"] =
util_zip(Marshal.dump(@a2))
- @fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a_pre.full_name}.gemspec.rz"] =
+ @fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a_pre.spec_name}.rz"] =
util_zip(Marshal.dump(@a_pre))
dep = Gem::Dependency.new 'a', 1
@@ -81,11 +82,11 @@ class TestGemSpecFetcher < RubyGemTestCase
end
def test_fetch_prerelease
- @fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a1.full_name}.gemspec.rz"] =
+ @fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a1.spec_name}.rz"] =
util_zip(Marshal.dump(@a1))
- @fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a2.full_name}.gemspec.rz"] =
+ @fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a2.spec_name}.rz"] =
util_zip(Marshal.dump(@a2))
- @fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a_pre.full_name}.gemspec.rz"] =
+ @fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a_pre.spec_name}.rz"] =
util_zip(Marshal.dump(@a_pre))
dep = Gem::Dependency.new 'a', '1.a'
@@ -98,37 +99,6 @@ class TestGemSpecFetcher < RubyGemTestCase
assert_equal [[@a_pre.full_name, @gem_repo]], spec_names
end
- def test_fetch_legacy_repo
- @fetcher.data.delete "#{@gem_repo}specs.#{Gem.marshal_version}.gz"
- @fetcher.data["#{@gem_repo}yaml"] = ''
- util_setup_source_info_cache @a1, @a2
-
- dep = Gem::Dependency.new 'a', 1
- specs = nil
-
- use_ui @ui do
- specs = @sf.fetch dep, true
- end
-
- expected = <<-EOF
-WARNING: RubyGems 1.2+ index not found for:
-\thttp://gems.example.com/
-
-RubyGems will revert to legacy indexes degrading performance.
- EOF
-
- assert_equal expected, @ui.error
-
- specs = specs.map { |spec, source_uri| [spec.full_name, source_uri] }
-
- expected = [
- [@a1.full_name, @gem_repo],
- [@a2.full_name, @gem_repo],
- ]
-
- assert_equal expected, specs
- end
-
def test_fetch_platform
util_set_arch 'i386-linux'
@@ -146,7 +116,7 @@ RubyGems will revert to legacy indexes degrading performance.
end
def test_fetch_spec
- spec_uri = "#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a1.full_name}.gemspec"
+ spec_uri = "#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a1.spec_name}"
@fetcher.data["#{spec_uri}.rz"] = util_zip(Marshal.dump(@a1))
spec = @sf.fetch_spec ['a', Gem::Version.new(1), 'ruby'], @uri
@@ -154,19 +124,19 @@ RubyGems will revert to legacy indexes degrading performance.
cache_dir = @sf.cache_dir URI.parse(spec_uri)
- cache_file = File.join cache_dir, "#{@a1.full_name}.gemspec"
+ cache_file = File.join cache_dir, @a1.spec_name
assert File.exist?(cache_file)
end
def test_fetch_spec_cached
- spec_uri = "#{@gem_repo}/#{Gem::MARSHAL_SPEC_DIR}#{@a1.full_name}.gemspec"
+ spec_uri = "#{@gem_repo}/#{Gem::MARSHAL_SPEC_DIR}#{@a1.spec_name}"
@fetcher.data["#{spec_uri}.rz"] = nil
cache_dir = @sf.cache_dir URI.parse(spec_uri)
FileUtils.mkdir_p cache_dir
- cache_file = File.join cache_dir, "#{@a1.full_name}.gemspec"
+ cache_file = File.join cache_dir, @a1.spec_name
open cache_file, 'wb' do |io|
Marshal.dump @a1, io
@@ -186,7 +156,7 @@ RubyGems will revert to legacy indexes degrading performance.
end
def test_fetch_spec_platform_ruby
- @fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a1.full_name}.gemspec.rz"] =
+ @fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a1.spec_name}.rz"] =
util_zip(Marshal.dump(@a1))
spec = @sf.fetch_spec ['a', Gem::Version.new(1), nil], @uri
diff --git a/test/rubygems/test_gem_specification.rb b/test/rubygems/test_gem_specification.rb
index fb5cf67461..5979890aeb 100644
--- a/test/rubygems/test_gem_specification.rb
+++ b/test/rubygems/test_gem_specification.rb
@@ -1,11 +1,5 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-require 'stringio'
require_relative 'gemutilities'
+require 'stringio'
require 'rubygems/specification'
class TestGemSpecification < RubyGemTestCase
@@ -129,7 +123,7 @@ end
end
def test_self_load
- spec = File.join @gemhome, 'specifications', "#{@a2.full_name}.gemspec"
+ spec = File.join @gemhome, 'specifications', @a2.spec_name
gs = Gem::Specification.load spec
assert_equal @a2, gs
@@ -145,16 +139,6 @@ end
assert_equal false, spec.has_unit_tests?
end
- def test_self_load_legacy_yaml
- s = YAML.load StringIO.new(LEGACY_YAML_SPEC)
- assert_equal 'keyedlist', s.name
- assert_equal '0.4.0', s.version.to_s
- assert_equal true, s.has_rdoc?
- #assert_equal Date.today, s.date
- #assert s.required_ruby_version.satisfied_by?(Gem::Version.new('1'))
- assert_equal false, s.has_unit_tests?
- end
-
def test_self_normalize_yaml_input_with_183_yaml
input = "!ruby/object:Gem::Specification "
assert_equal "--- #{input}", Gem::Specification.normalize_yaml_input(input)
@@ -538,8 +522,7 @@ end
def test_full_gem_path_double_slash
gemhome = @gemhome.sub(/\w\//, '\&/')
- @a1.loaded_from = File.join gemhome, 'specifications',
- "#{@a1.full_name}.gemspec"
+ @a1.loaded_from = File.join gemhome, 'specifications', @a1.spec_name
assert_equal File.join(@gemhome, 'gems', @a1.full_name),
@a1.full_gem_path
@@ -730,6 +713,10 @@ end
assert_equal( 1, (s2 <=> s1))
end
+ def test_spec_name
+ assert_equal 'a-1.gemspec', @a1.spec_name
+ end
+
def test_summary
assert_equal 'this is a summary', @a1.summary
end
diff --git a/test/rubygems/test_gem_stream_ui.rb b/test/rubygems/test_gem_stream_ui.rb
index 886f53a60d..395dbda9e1 100644
--- a/test/rubygems/test_gem_stream_ui.rb
+++ b/test/rubygems/test_gem_stream_ui.rb
@@ -46,6 +46,26 @@ class TestGemStreamUI < RubyGemTestCase
end
end
+ def test_ask_for_password
+ skip 'Always uses $stdin on windows' if Gem.win_platform?
+
+ timeout(1) do
+ expected_answer = "Arthur, King of the Britons"
+ @in.string = "#{expected_answer}\n"
+ actual_answer = @sui.ask_for_password("What is your name?")
+ assert_equal expected_answer, actual_answer
+ end
+ end
+
+ def test_ask_for_password_no_tty
+ @in.tty = false
+
+ timeout(0.1) do
+ answer = @sui.ask_for_password("what is the airspeed velocity of an unladen swallow?")
+ assert_equal nil, answer
+ end
+ end
+
def test_ask_yes_no_no_tty_with_default
@in.tty = false
diff --git a/test/rubygems/test_gem_validator.rb b/test/rubygems/test_gem_validator.rb
index 529c93ae1a..51dad524f3 100644
--- a/test/rubygems/test_gem_validator.rb
+++ b/test/rubygems/test_gem_validator.rb
@@ -1,9 +1,3 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
require_relative 'gemutilities'
require_relative 'simple_gem'
require 'rubygems/validator'
diff --git a/test/rubygems/test_gem_version.rb b/test/rubygems/test_gem_version.rb
index f2b0280f3d..f3692682b6 100644
--- a/test/rubygems/test_gem_version.rb
+++ b/test/rubygems/test_gem_version.rb
@@ -1,316 +1,172 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
require_relative 'gemutilities'
require 'rubygems/version'
class TestGemVersion < RubyGemTestCase
- def setup
- super
-
- version = Object.new
- def version.to_s() '1.4.0' end
-
- @v1_0 = Gem::Version.new '1.0'
- @v1_2 = Gem::Version.new '1.2'
- @v1_3 = Gem::Version.new '1.3'
- @v1_4_0 = Gem::Version.new version
- end
-
- def test_class_create
- assert_version Gem::Version.create('1.0')
- assert_version Gem::Version.create("1.0 ")
- assert_version Gem::Version.create(" 1.0 ")
- assert_version Gem::Version.create("1.0\n")
- assert_version Gem::Version.create("\n1.0\n")
-
- assert_equal Gem::Version.create('1'), Gem::Version.create(1)
- end
-
- def test_class_create_malformed
- e = assert_raises ArgumentError do Gem::Version.create("junk") end
- assert_equal "Malformed version number string junk", e.message
-
- e = assert_raises ArgumentError do Gem::Version.create("1.0\n2.0") end
- assert_equal "Malformed version number string 1.0\n2.0", e.message
+ def test_bump
+ assert_bumped_version_equal "5.3", "5.2.4"
end
- def test_bad
- assert_inadequate( "", "> 0.1")
- assert_inadequate( "1.2.3", "!= 1.2.3")
- assert_inadequate( "1.2.003.0.0", "!= 1.02.3")
- assert_inadequate( "4.5.6", "< 1.2.3")
- assert_inadequate( "1.0", "> 1.1")
- assert_inadequate( "0", ">")
- assert_inadequate( "0", "<")
- assert_inadequate( "", "= 0.1")
- assert_inadequate( "1.1.1", "> 1.1.1")
- assert_inadequate( "1.2", "= 1.1")
- assert_inadequate( "1.40", "= 1.1")
- assert_inadequate( "1.3", "= 1.40")
- assert_inadequate( "9.3.3", "<= 9.3.2")
- assert_inadequate( "9.3.1", ">= 9.3.2")
- assert_inadequate( "9.3.03", "<= 9.3.2")
- assert_inadequate( "1.0.0.1", "= 1.0")
+ def test_bump_alpha
+ assert_bumped_version_equal "5.3", "5.2.4.a"
end
def test_bump_trailing_zeros
- v = Gem::Version.new("5.0.0")
- assert_equal "5.1", v.bump.to_s
- end
-
- def test_bump
- v = Gem::Version.new("5.2.4")
- assert_equal "5.3", v.bump.to_s
- end
-
- def test_bump_alpha
- v = Gem::Version.new("5.2.4.a")
- assert_equal "5.3", v.bump.to_s
+ assert_bumped_version_equal "5.1", "5.0.0"
end
def test_bump_one_level
- v = Gem::Version.new("5")
- assert_equal "6", v.bump.to_s
+ assert_bumped_version_equal "6", "5"
end
- def test_eql_eh
- v1_2 = Gem::Version.new '1.2'
- v1_2_0 = Gem::Version.new '1.2.0'
-
- assert_equal true, v1_2.eql?(@v1_2)
- assert_equal true, @v1_2.eql?(v1_2)
+ # FIX: For "legacy reasons," any object that responds to +version+
+ # is returned unchanged. I'm not certain why.
- assert_equal false, v1_2_0.eql?(@v1_2)
- assert_equal false, @v1_2.eql?(v1_2_0)
+ def test_class_create
+ fake = Object.new
+ def fake.version; "1.0" end
- assert_equal false, @v1_2.eql?(@v1_3)
- assert_equal false, @v1_3.eql?(@v1_2)
+ assert_same fake, Gem::Version.create(fake)
+ assert_nil Gem::Version.create(nil)
+ assert_equal v("5.1"), Gem::Version.create("5.1")
end
- def test_eql_eh4
- v1_4 = Gem::Version.new '1.4'
- v1_4_0 = Gem::Version.new "1.4.0"
-
- assert_equal true, v1_4_0.eql?(@v1_4_0)
- assert_equal true, @v1_4_0.eql?(v1_4_0)
-
- assert_equal false, v1_4.eql?(@v1_4_0)
- assert_equal false, @v1_4_0.eql?(v1_4)
-
- assert_equal false, @v1_4_0.eql?(@v1_3)
- assert_equal false, @v1_3.eql?(@v1_4_0)
+ def test_eql_eh
+ assert_version_eql "1.2", "1.2"
+ refute_version_eql "1.2", "1.2.0"
+ refute_version_eql "1.2", "1.3"
end
- def test_equals2
- v = Gem::Version.new("1.2")
-
- assert_equal v, @v1_2
- assert_equal @v1_2, v
-
- refute_equal @v1_2, @v1_3
- refute_equal @v1_3, @v1_2
+ def test_equals
+ assert_version_equal "1.2", "1.2"
+ refute_version_equal "1.2", "1.3"
end
+ # REVISIT: consider removing as too impl-bound
def test_hash
- v1_2 = Gem::Version.new "1.2"
- v1_2_0 = Gem::Version.new "1.2.0"
- v1_4_0 = Gem::Version.new "1.4.0"
-
- assert_equal v1_2.hash, @v1_2.hash
-
- refute_equal v1_2_0.hash, @v1_2.hash
-
- assert_equal v1_4_0.hash, @v1_4_0.hash
-
- refute_equal @v1_2.hash, @v1_3.hash
-
- refute_equal @v1_2.hash, @v1_4_0.hash
+ assert_equal v("1.2").hash, v("1.2").hash
+ refute_equal v("1.2").hash, v("1.3").hash
+ refute_equal v("1.2").hash, v("1.2.0").hash
end
- def test_illformed_requirements
- [ ">>> 1.3.5", "> blah" ].each do |rq|
- assert_raises ArgumentError, "req [#{rq}] should fail" do
- Gem::Version::Requirement.new rq
- end
+ def test_initialize
+ ["1.0", "1.0 ", " 1.0 ", "1.0\n", "\n1.0\n"].each do |good|
+ assert_version_equal "1.0", good
end
- end
- def test_normalize
- assert_equal [0], Gem::Version.new("").normalize.map { |part| part.value }
- assert_equal [0], Gem::Version.new("0").normalize.map { |part| part.value }
- assert_equal [1], Gem::Version.new("1").normalize.map { |part| part.value }
- assert_equal [1], Gem::Version.new("1.0").normalize.map { |part| part.value }
- assert_equal [1, 1], Gem::Version.new("1.1").normalize.map { |part| part.value }
- assert_equal [1, 1, "a"], Gem::Version.new("1.1.a").normalize.map { |part| part.value }
+ assert_version_equal "1", 1
end
- def test_ok
- assert_adequate( "0.2.33", "= 0.2.33")
- assert_adequate( "0.2.34", "> 0.2.33")
- assert_adequate( "1.0", "= 1.0")
- assert_adequate( "1.0", "1.0")
- assert_adequate( "1.8.2", "> 1.8.0")
- assert_adequate( "1.112", "> 1.111")
- assert_adequate( "0.2", "> 0.0.0")
- assert_adequate( "0.0.0.0.0.2", "> 0.0.0")
- assert_adequate( "0.0.1.0", "> 0.0.0.1")
- assert_adequate( "10.3.2", "> 9.3.2")
- assert_adequate( "1.0.0.0", "= 1.0")
- assert_adequate( "10.3.2", "!= 9.3.4")
- assert_adequate( "10.3.2", "> 9.3.2")
- assert_adequate( "10.3.2", "> 9.3.2")
- assert_adequate( " 9.3.2", ">= 9.3.2")
- assert_adequate( "9.3.2 ", ">= 9.3.2")
- assert_adequate( "", "= 0")
- assert_adequate( "", "< 0.1")
- assert_adequate( " ", "< 0.1 ")
- assert_adequate( "", " < 0.1")
- assert_adequate( " ", "> 0.a ")
- assert_adequate( "", " > 0.a")
- assert_adequate( "0", "=")
- assert_adequate( "0", ">=")
- assert_adequate( "0", "<=")
- assert_adequate( "3.1", "< 3.2.rc1")
- assert_adequate( "3.2.0", "> 3.2.0.rc1")
- assert_adequate( "3.2.0.rc2", "> 3.2.0.rc1")
- assert_adequate( "3.0.rc2", "< 3.0")
- assert_adequate( "3.0.rc2", "< 3.0.0")
- assert_adequate( "3.0.rc2", "< 3.0.1")
- end
+ def test_initialize_bad
+ ["junk", "1.0\n2.0"].each do |bad|
+ e = assert_raises ArgumentError do
+ Gem::Version.new bad
+ end
- def test_parse_parts_from_version_string
- assert_equal [], part_values(Gem::Version.new("").parse_parts_from_version_string)
- assert_equal [1], part_values(Gem::Version.new("1").parse_parts_from_version_string)
- assert_equal [1, 0], part_values(Gem::Version.new("1.0").parse_parts_from_version_string)
- assert_equal [1, 0, "a"], part_values(Gem::Version.new("1.0.a").parse_parts_from_version_string)
+ assert_equal "Malformed version number string #{bad}", e.message
+ end
end
def test_prerelease
- assert Gem::Version.new('1.2.0.a').prerelease?
- assert Gem::Version.new('2.9.b').prerelease?
- assert Gem::Version.new('22.1.50.0.d').prerelease?
+ assert_prerelease "1.2.0.a"
+ assert_prerelease "2.9.b"
+ assert_prerelease "22.1.50.0.d"
+ assert_prerelease "1.2.d.42"
+
+ assert_prerelease '1.A'
- refute Gem::Version.new('1.2.0').prerelease?
- refute Gem::Version.new('2.9').prerelease?
- refute Gem::Version.new('22.1.50.0').prerelease?
+ refute_prerelease "1.2.0"
+ refute_prerelease "2.9"
+ refute_prerelease "22.1.50.0"
end
def test_release
- assert_equal Gem::Version.new('1.2.0'), Gem::Version.new('1.2.0.a').release
- assert_equal Gem::Version.new('1.1'), Gem::Version.new('1.1.rc10').release
- assert_equal Gem::Version.new('1.9.3'), Gem::Version.new('1.9.3.alpha.5').release
- assert_equal Gem::Version.new('1.9.3'), Gem::Version.new('1.9.3').release
+ assert_release_equal "1.2.0", "1.2.0.a"
+ assert_release_equal "1.1", "1.1.rc10"
+ assert_release_equal "1.9.3", "1.9.3.alpha.5"
+ assert_release_equal "1.9.3", "1.9.3"
end
- def test_satisfied_by_eh_boxed
- assert_inadequate("1.3", "~> 1.4")
- assert_adequate( "1.4", "~> 1.4")
- assert_adequate( "1.5", "~> 1.4")
- assert_inadequate("2.0", "~> 1.4")
-
- assert_inadequate("1.3", "~> 1.4.4")
- assert_inadequate("1.4", "~> 1.4.4")
- assert_adequate( "1.4.4", "~> 1.4.4")
- assert_adequate( "1.4.5", "~> 1.4.4")
- assert_inadequate("1.5", "~> 1.4.4")
- assert_inadequate("2.0", "~> 1.4.4")
-
- assert_inadequate("1.1.pre", "~> 1.0.0")
- assert_adequate( "1.1.pre", "~> 1.1")
- assert_inadequate("2.0.a", "~> 1.0")
- assert_adequate( "2.0.a", "~> 2.0")
+ def test_spaceship
+ assert_equal( 0, v("1.0") <=> v("1.0.0"))
+ assert_equal( 1, v("1.0") <=> v("1.0.a"))
+ assert_equal( 1, v("1.8.2") <=> v("0.0.0"))
+ assert_equal( 1, v("1.8.2") <=> v("1.8.2.a"))
+ assert_equal( 1, v("1.8.2.b") <=> v("1.8.2.a"))
+ assert_equal(-1, v("1.8.2.a") <=> v("1.8.2"))
+ assert_equal( 0, v("") <=> v("0"))
end
- def test_satisfied_by_eh_multiple
- req = [">= 1.4", "<= 1.6", "!= 1.5"]
- assert_inadequate("1.3", req)
- assert_adequate( "1.4", req)
- assert_inadequate("1.5", req)
- assert_adequate( "1.6", req)
- assert_inadequate("1.7", req)
- assert_inadequate("2.0", req)
+ def test_spermy_recommendation
+ assert_spermy_equal "~> 1.0", "1"
+ assert_spermy_equal "~> 1.0", "1.0"
+ assert_spermy_equal "~> 1.2", "1.2"
+ assert_spermy_equal "~> 1.2", "1.2.0"
+ assert_spermy_equal "~> 1.2", "1.2.3"
+ assert_spermy_equal "~> 1.2", "1.2.3.a.4"
end
- def test_spaceship
- assert_equal 0, Gem::Version.new('1.0') <=> Gem::Version.new('1.0.0')
- assert_equal 1, Gem::Version.new('1.0') <=> Gem::Version.new('1.0.a')
- assert_equal 1, Gem::Version.new('1.8.2') <=> Gem::Version.new('0.0.0')
- assert_equal 1, Gem::Version.new('1.8.2') <=> Gem::Version.new('1.8.2.a')
- assert_equal 1, Gem::Version.new('1.8.2.b') <=> Gem::Version.new('1.8.2.a')
- assert_equal 0, Gem::Version.new('') <=> Gem::Version.new('0')
+ def test_to_s
+ assert_equal "5.2.4", v("5.2.4").to_s
end
- def test_boxed
- assert_inadequate("1.3", "~> 1.4")
- assert_adequate( "1.4", "~> 1.4")
- assert_adequate( "1.5", "~> 1.4")
- assert_inadequate("2.0", "~> 1.4")
-
- assert_inadequate("1.3", "~> 1.4.4")
- assert_inadequate("1.4", "~> 1.4.4")
- assert_adequate( "1.4.4", "~> 1.4.4")
- assert_adequate( "1.4.5", "~> 1.4.4")
- assert_inadequate("1.5", "~> 1.4.4")
- assert_inadequate("2.0", "~> 1.4.4")
- end
+ # Asserts that +version+ is a prerelease.
- def test_to_s
- v = Gem::Version.new("5.2.4")
- assert_equal "5.2.4", v.to_s
+ def assert_prerelease version
+ assert v(version).prerelease?, "#{version} is a prerelease"
end
- def assert_adequate(version, requirement)
- ver = Gem::Version.new(version)
- req = Gem::Requirement.new(requirement)
- assert req.satisfied_by?(ver),
- "Version #{version} should be adequate for Requirement #{requirement}"
+ # Assert that +expected+ is the "spermy" recommendation for +version".
+
+ def assert_spermy_equal expected, version
+ assert_equal expected, v(version).spermy_recommendation
end
- def assert_inadequate(version, requirement)
- ver = Gem::Version.new(version)
- req = Gem::Version::Requirement.new(requirement)
- refute req.satisfied_by?(ver),
- "Version #{version} should not be adequate for Requirement #{requirement}"
+ # Assert that bumping the +unbumped+ version yields the +expected+.
+
+ def assert_bumped_version_equal expected, unbumped
+ assert_version_equal expected, v(unbumped).bump
end
- def assert_version(actual)
- assert_equal @v1_0, actual
- assert_equal @v1_0.version, actual.version
+ # Assert that +release+ is the correct non-prerelease +version+.
+
+ def assert_release_equal release, version
+ assert_version_equal release, v(version).release
end
- def part_values(*parts)
- parts.flatten.map { |part| part.value }
+ # Assert that two versions are equal. Handles strings or
+ # Gem::Version instances.
+
+ def assert_version_equal expected, actual
+ assert_equal v(expected), v(actual)
end
-end
-class TestGemVersionPart < RubyGemTestCase
- def test_initialize
- assert_equal 1, Gem::Version::Part.new(1).value
- assert_equal 1, Gem::Version::Part.new("1").value
- assert_equal "a", Gem::Version::Part.new("a").value
+ # Assert that two versions are eql?. Checks both directions.
+
+ def assert_version_eql first, second
+ first, second = v(first), v(second)
+ assert first.eql?(second), "#{first} is eql? #{second}"
+ assert second.eql?(first), "#{second} is eql? #{first}"
end
- def test_spaceship
- assert_equal(-1, Gem::Version::Part.new(1) <=> Gem::Version::Part.new(2))
- assert_equal( 0, Gem::Version::Part.new(2) <=> Gem::Version::Part.new(2))
- assert_equal( 1, Gem::Version::Part.new(2) <=> Gem::Version::Part.new(1))
+ # Refute the assumption that +version+ is a prerelease.
- assert_equal(-1, Gem::Version::Part.new("a") <=> Gem::Version::Part.new("b"))
- assert_equal( 0, Gem::Version::Part.new("b") <=> Gem::Version::Part.new("b"))
- assert_equal( 1, Gem::Version::Part.new("b") <=> Gem::Version::Part.new("a"))
+ def refute_prerelease version
+ refute v(version).prerelease?, "#{version} is NOT a prerelease"
+ end
- assert_equal(-1, Gem::Version::Part.new("a") <=> Gem::Version::Part.new(1))
- assert_equal( 1, Gem::Version::Part.new(1) <=> Gem::Version::Part.new("a"))
+ # Refute the assumption that two versions are eql?. Checks both
+ # directions.
+
+ def refute_version_eql first, second
+ first, second = v(first), v(second)
+ refute first.eql?(second), "#{first} is NOT eql? #{second}"
+ refute second.eql?(first), "#{second} is NOT eql? #{first}"
end
- def test_succ
- assert_equal 2, Gem::Version::Part.new(1).succ.value
- assert_equal "b", Gem::Version::Part.new("a").succ.value
+ # Refute the assumption that the two versions are equal?.
+
+ def refute_version_equal unexpected, actual
+ refute_equal v(unexpected), v(actual)
end
end
-
diff --git a/test/rubygems/test_kernel.rb b/test/rubygems/test_kernel.rb
index 0b2e8026a8..524b20d82b 100644
--- a/test/rubygems/test_kernel.rb
+++ b/test/rubygems/test_kernel.rb
@@ -1,9 +1,3 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
require_relative 'gemutilities'
require 'rubygems/package'