From 6e5f49770c9b9be151e3142a575abe99a69b0d14 Mon Sep 17 00:00:00 2001 From: ryan Date: Wed, 9 Mar 2011 22:32:29 +0000 Subject: [PATCH] Import rubygems 1.6.2 (release candidate @ 2026fbb5) git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31081 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 6 +++ lib/rubygems.rb | 15 ++++-- lib/rubygems/commands/outdated_command.rb | 9 ++-- lib/rubygems/commands/setup_command.rb | 2 +- lib/rubygems/custom_require.rb | 34 ++++++++----- lib/rubygems/dependency_installer.rb | 2 +- lib/rubygems/dependency_list.rb | 2 +- lib/rubygems/doc_manager.rb | 1 + lib/rubygems/gem_path_searcher.rb | 8 +++ lib/rubygems/gemcutter_utilities.rb | 4 +- lib/rubygems/indexer.rb | 1 + lib/rubygems/mock_gem_ui.rb | 2 +- lib/rubygems/spec_fetcher.rb | 13 +++-- lib/rubygems/test_case.rb | 1 - lib/rubygems/user_interaction.rb | 35 ++++++++++--- test/rubygems/test_gem.rb | 60 +++++++++++++++++++---- test/rubygems/test_gem_dependency_list.rb | 18 +++++++ test/rubygems/test_gem_indexer.rb | 2 + test/rubygems/test_gem_installer.rb | 14 ++++-- test/rubygems/test_gem_requirement.rb | 4 ++ test/rubygems/test_gem_spec_fetcher.rb | 5 +- test/rubygems/test_gem_specification.rb | 8 --- test/rubygems/test_gem_stream_ui.rb | 12 ++++- test/runner.rb | 2 +- 24 files changed, 196 insertions(+), 64 deletions(-) diff --git a/ChangeLog b/ChangeLog index fd9af09663..777a459ed2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Thu Mar 10 07:12:03 2011 Ryan Davis + + * lib/rubygems*: Import rubygems 1.6.2 (release candidate @ 2026fbb5) + * test/rubygems: Ditto + * test/runner.rb: Added test to load path to fix test requires. + Thu Mar 10 03:00:43 2011 Tanaka Akira * ext/openssl/ossl_ssl.c: parenthesize macro arguments. diff --git a/lib/rubygems.rb b/lib/rubygems.rb index b1aa6c547d..429dfda69c 100644 --- a/lib/rubygems.rb +++ b/lib/rubygems.rb @@ -124,7 +124,7 @@ require 'rbconfig' # -The RubyGems Team module Gem - VERSION = '1.6.0' + VERSION = '1.6.2' ## # Raised when RubyGems is unable to load or activate a gem. Contains the @@ -258,6 +258,7 @@ module Gem # list of candidate gems, then we have a version conflict. existing_spec = @loaded_specs[dep.name] + # TODO: unless dep.matches_spec? existing_spec then unless matches.any? { |spec| spec.version == existing_spec.version } then sources_message = sources.map { |spec| spec.full_name } stack_message = @loaded_stacks[dep.name].map { |spec| spec.full_name } @@ -1221,7 +1222,7 @@ module Gem def self.cache # :nodoc: warn "#{Gem.location_of_caller.join ':'}:Warning: " \ "Gem::cache is deprecated and will be removed on or after " \ - "August 2012. " \ + "August 2011. " \ "Use Gem::source_index." source_index @@ -1292,7 +1293,13 @@ end # "#{ConfigMap[:datadir]}/#{package_name}". def RbConfig.datadir(package_name) - require 'rbconfig/datadir' # TODO Deprecate after June 2010. + warn "#{Gem.location_of_caller.join ':'}:Warning: " \ + "RbConfig.datadir is deprecated and will be removed on or after " \ + "August 2011. " \ + "Use Gem::datadir." + + require 'rbconfig/datadir' + Gem.datadir(package_name) || File.join(Gem::ConfigMap[:datadir], package_name) end @@ -1323,7 +1330,7 @@ end ## # Enables the require hook for RubyGems. -require 'rubygems/custom_require' unless Gem::GEM_PRELUDE_SUCKAGE +require 'rubygems/custom_require' Gem.clear_paths diff --git a/lib/rubygems/commands/outdated_command.rb b/lib/rubygems/commands/outdated_command.rb index 0a9a87060e..7b6e1cfe8e 100644 --- a/lib/rubygems/commands/outdated_command.rb +++ b/lib/rubygems/commands/outdated_command.rb @@ -25,12 +25,13 @@ class Gem::Commands::OutdatedCommand < Gem::Command locals = Gem::SourceIndex.from_installed_gems locals.outdated.sort.each do |name| - local = locals.find_name(name).last - - dep = Gem::Dependency.new local.name, ">= #{local.version}" + local = locals.find_name(name).last + dep = Gem::Dependency.new local.name, ">= #{local.version}" remotes = Gem::SpecFetcher.fetcher.fetch dep - remote = remotes.last.first + next if remotes.empty? + + remote = remotes.last.first say "#{local.name} (#{local.version} < #{remote.version})" end end diff --git a/lib/rubygems/commands/setup_command.rb b/lib/rubygems/commands/setup_command.rb index 9090353e3b..cf844c6674 100644 --- a/lib/rubygems/commands/setup_command.rb +++ b/lib/rubygems/commands/setup_command.rb @@ -335,7 +335,7 @@ abort "#{deprecation_message}" require 'rdoc/rdoc' - args << '--main' << 'README.rdoc' + args << '--main' << 'README.rdoc' << '--quiet' args << '.' args << 'README.rdoc' << 'UPGRADING.rdoc' args << 'LICENSE.txt' << 'GPL.txt' << 'History.txt' diff --git a/lib/rubygems/custom_require.rb b/lib/rubygems/custom_require.rb index ebe7b05558..eaa04b31c3 100644 --- a/lib/rubygems/custom_require.rb +++ b/lib/rubygems/custom_require.rb @@ -12,10 +12,16 @@ module Kernel - ## - # The Kernel#require from before RubyGems was loaded. + if defined?(gem_original_require) then + # Ruby ships with a custom_require, override its require + remove_method :require + else + ## + # The Kernel#require from before RubyGems was loaded. - alias gem_original_require require + alias gem_original_require require + private :gem_original_require + end ## # When RubyGems is required, Kernel#require is replaced with our own which @@ -35,15 +41,20 @@ module Kernel if Gem.unresolved_deps.empty? or Gem.loaded_path? path then gem_original_require path else - specs = Gem.searcher.find_in_unresolved path - unless specs.empty? then - specs = [specs.last] - else - specs = Gem.searcher.find_in_unresolved_tree path - end + spec = Gem.searcher.find_active path - specs.each do |spec| - Gem.activate spec.name, spec.version # FIX: this is dumb + unless spec then + found_specs = Gem.searcher.find_in_unresolved path + unless found_specs.empty? then + found_specs = [found_specs.last] + else + found_specs = Gem.searcher.find_in_unresolved_tree path + end + + found_specs.each do |found_spec| + # FIX: this is dumb, activate a spec instead of name/version + Gem.activate found_spec.name, found_spec.version + end end return gem_original_require path @@ -57,7 +68,6 @@ module Kernel end private :require - private :gem_original_require end diff --git a/lib/rubygems/dependency_installer.rb b/lib/rubygems/dependency_installer.rb index 46ec63f14f..5afb1bfa0d 100644 --- a/lib/rubygems/dependency_installer.rb +++ b/lib/rubygems/dependency_installer.rb @@ -74,7 +74,7 @@ class Gem::DependencyInstaller @installed_gems = [] @install_dir = options[:install_dir] || Gem.dir - @cache_dir = options[:cache_dir] || Gem.cache_dir(@install_dir) + @cache_dir = options[:cache_dir] || @install_dir # Set with any errors that SpecFetcher finds while search through # gemspecs for a dep diff --git a/lib/rubygems/dependency_list.rb b/lib/rubygems/dependency_list.rb index 91c7c5ade4..a3db1d6829 100644 --- a/lib/rubygems/dependency_list.rb +++ b/lib/rubygems/dependency_list.rb @@ -121,7 +121,7 @@ class Gem::DependencyList def why_not_ok? quick = false unsatisfied = Hash.new { |h,k| h[k] = [] } source_index = Gem.source_index - @specs.each do |spec| + each do |spec| spec.runtime_dependencies.each do |dep| inst = source_index.any? { |_, installed_spec| dep.name == installed_spec.name and diff --git a/lib/rubygems/doc_manager.rb b/lib/rubygems/doc_manager.rb index 71c7d850ad..9cfa31a0a0 100644 --- a/lib/rubygems/doc_manager.rb +++ b/lib/rubygems/doc_manager.rb @@ -171,6 +171,7 @@ class Gem::DocManager args << @spec.require_paths.clone args << @spec.extra_rdoc_files args << '--title' << "#{@spec.full_name} Documentation" + args << '--quiet' args = args.flatten.map do |arg| arg.to_s end if self.class.rdoc_version >= Gem::Version.new('2.4.0') then diff --git a/lib/rubygems/gem_path_searcher.rb b/lib/rubygems/gem_path_searcher.rb index 5b85cbc9fb..79c3b0f6c9 100644 --- a/lib/rubygems/gem_path_searcher.rb +++ b/lib/rubygems/gem_path_searcher.rb @@ -56,6 +56,14 @@ class Gem::GemPathSearcher end end + def find_active(glob) + # HACK violation of encapsulation + @gemspecs.find do |spec| + # TODO: inverted responsibility + spec.loaded? and matching_file? spec, glob + end + end + ## # Works like #find, but finds all gemspecs matching +glob+. diff --git a/lib/rubygems/gemcutter_utilities.rb b/lib/rubygems/gemcutter_utilities.rb index a77a4911f2..9dce97cc1f 100644 --- a/lib/rubygems/gemcutter_utilities.rb +++ b/lib/rubygems/gemcutter_utilities.rb @@ -15,7 +15,9 @@ module Gem::GemcutterUtilities # Add the --key option def add_key_option - add_option '-k', '--key KEYNAME', Symbol, 'Use the given API key' do |value,options| + add_option('-k', '--key KEYNAME', Symbol, + 'Use the given API key', + 'from ~/.gem/credentials') do |value,options| options[:key] = value end end diff --git a/lib/rubygems/indexer.rb b/lib/rubygems/indexer.rb index 1a585c3c25..6e481c6790 100644 --- a/lib/rubygems/indexer.rb +++ b/lib/rubygems/indexer.rb @@ -6,6 +6,7 @@ require 'rubygems' require 'rubygems/format' +require 'time' begin gem 'builder' diff --git a/lib/rubygems/mock_gem_ui.rb b/lib/rubygems/mock_gem_ui.rb index f45f769b38..4450cc97a6 100644 --- a/lib/rubygems/mock_gem_ui.rb +++ b/lib/rubygems/mock_gem_ui.rb @@ -37,7 +37,7 @@ class Gem::MockGemUi < Gem::StreamUI outs.extend TTY errs.extend TTY - super ins, outs, errs + super ins, outs, errs, true @terminated = false end diff --git a/lib/rubygems/spec_fetcher.rb b/lib/rubygems/spec_fetcher.rb index ab05c2f9dd..6c71ee63aa 100644 --- a/lib/rubygems/spec_fetcher.rb +++ b/lib/rubygems/spec_fetcher.rb @@ -76,7 +76,8 @@ class Gem::SpecFetcher # Returns the local directory to write +uri+ to. def cache_dir(uri) - escaped_path = uri.path.sub(%r[^/([a-z]):/]i, '/\\1-/') # Correct for windows paths + # Correct for windows paths + escaped_path = uri.path.sub(/^\/([a-z]):\//i, '/\\1-/') File.join @dir, "#{uri.host}%#{uri.port}", File.dirname(escaped_path) end @@ -86,8 +87,14 @@ class Gem::SpecFetcher # false, all platforms are returned. If +prerelease+ is true, # prerelease versions are included. - def fetch_with_errors(dependency, all = false, matching_platform = true, prerelease = false) - specs_and_sources, errors = find_matching_with_errors dependency, all, matching_platform, prerelease + def fetch_with_errors(dependency, + all = false, + matching_platform = true, + prerelease = false) + specs_and_sources, errors = find_matching_with_errors(dependency, + all, + matching_platform, + prerelease) ss = specs_and_sources.map do |spec_tuple, source_uri| [fetch_spec(spec_tuple, URI.parse(source_uri)), source_uri] diff --git a/lib/rubygems/test_case.rb b/lib/rubygems/test_case.rb index 5c32bd2ddb..0f3b892eb1 100644 --- a/lib/rubygems/test_case.rb +++ b/lib/rubygems/test_case.rb @@ -463,7 +463,6 @@ class Gem::TestCase < MiniTest::Unit::TestCase util_build_gem spec cache_file = File.join @tempdir, 'gems', "#{spec.original_name}.gem" - gems_dir = File.dirname cache_file FileUtils.mkdir_p File.dirname cache_file FileUtils.mv Gem.cache_gem("#{spec.original_name}.gem"), cache_file FileUtils.rm File.join(@gemhome, 'specifications', spec.spec_name) diff --git a/lib/rubygems/user_interaction.rb b/lib/rubygems/user_interaction.rb index 538793181e..87d13dab26 100644 --- a/lib/rubygems/user_interaction.rb +++ b/lib/rubygems/user_interaction.rb @@ -138,10 +138,19 @@ class Gem::StreamUI attr_reader :ins, :outs, :errs - def initialize(in_stream, out_stream, err_stream=STDERR) + def initialize(in_stream, out_stream, err_stream=STDERR, usetty=true) @ins = in_stream @outs = out_stream @errs = err_stream + @usetty = usetty + end + + def tty? + if RUBY_PLATFORM =~ /mingw|mswin/ + @usetty + else + @usetty && @ins.tty? + end end ## @@ -173,7 +182,7 @@ class Gem::StreamUI # default. def ask_yes_no(question, default=nil) - unless @ins.tty? then + unless tty? then if default.nil? then raise Gem::OperationNotSupportedError, "Not connected to a tty and no default specified" @@ -209,7 +218,7 @@ class Gem::StreamUI # Ask a question. Returns an answer if connected to a tty, nil otherwise. def ask(question) - return nil if not @ins.tty? + return nil if not tty? @outs.print(question + " ") @outs.flush @@ -224,7 +233,7 @@ class Gem::StreamUI # Ask for a password. Does not echo response to terminal. def ask_for_password(question) - return nil if not @ins.tty? + return nil if not tty? require 'io/console' @@ -240,7 +249,7 @@ class Gem::StreamUI # Ask for a password. Does not echo response to terminal. def ask_for_password(question) - return nil if not @ins.tty? + return nil if not tty? @outs.print(question + " ") @outs.flush @@ -252,6 +261,8 @@ class Gem::StreamUI # Asks for a password that works on windows. Ripped from the Heroku gem. def ask_for_password_on_windows + return nil if not tty? + require "Win32API" char = nil password = '' @@ -273,6 +284,8 @@ class Gem::StreamUI # Asks for a password that works on unix def ask_for_password_on_unix + return nil if not tty? + system "stty -echo" password = @ins.gets password.chomp! if password @@ -333,6 +346,10 @@ class Gem::StreamUI # Return a progress reporter object chosen from the current verbosity. def progress_reporter(*args) + if self.kind_of?(Gem::SilentUI) + return SilentProgressReporter.new(@outs, *args) + end + case Gem.configuration.verbose when nil, false SilentProgressReporter.new(@outs, *args) @@ -435,6 +452,10 @@ class Gem::StreamUI # Return a download reporter object chosen from the current verbosity def download_reporter(*args) + if self.kind_of?(Gem::SilentUI) + return SilentDownloadReporter.new(@outs, *args) + end + case Gem.configuration.verbose when nil, false SilentDownloadReporter.new(@outs, *args) @@ -518,7 +539,7 @@ end class Gem::ConsoleUI < Gem::StreamUI def initialize - super STDIN, STDOUT, STDERR + super STDIN, STDOUT, STDERR, true end end @@ -537,7 +558,7 @@ class Gem::SilentUI < Gem::StreamUI writer = File.open('nul', 'w') end - super reader, writer, writer + super reader, writer, writer, false end def download_reporter(*args) diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb index 98d37a807e..118066b957 100644 --- a/test/rubygems/test_gem.rb +++ b/test/rubygems/test_gem.rb @@ -58,9 +58,9 @@ class TestGem < Gem::TestCase end def test_self_activate_via_require - a1 = new_spec "a", "1", "b" => "= 1" - b1 = new_spec "b", "1", nil, "lib/b/c.rb" - b2 = new_spec "b", "2", nil, "lib/b/c.rb" + new_spec "a", "1", "b" => "= 1" + new_spec "b", "1", nil, "lib/b/c.rb" + new_spec "b", "2", nil, "lib/b/c.rb" Gem.activate "a", "= 1" require "b/c" @@ -139,7 +139,7 @@ class TestGem < Gem::TestCase c2 = new_spec "c", "2" d1 = new_spec "d", "1", nil, "lib/d.rb" - install_specs a1, b1, b2, c1, c2 + install_specs a1, b1, b2, c1, c2, d1 Gem.activate "a", "= 1" assert_equal %w(a-1), loaded_spec_names @@ -161,7 +161,7 @@ class TestGem < Gem::TestCase c1 = new_spec "c", "1", nil, "lib/d.rb" c2 = new_spec("c", "2", { "a" => "1" }, "lib/d.rb") # conflicts with a-2 - install_specs a1, b1, b2, c1, c2 + install_specs a1, a2, b1, b2, c1, c2 Gem.activate "a", "= 2" assert_equal %w(a-2), loaded_spec_names @@ -174,6 +174,46 @@ class TestGem < Gem::TestCase end end + def test_require_already_activated + save_loaded_features do + a1 = new_spec "a", "1", nil, "lib/d.rb" + + install_specs a1 # , a2, b1, b2, c1, c2 + + Gem.activate "a", "= 1" + assert_equal %w(a-1), loaded_spec_names + assert_equal [], unresolved_names + + assert require "d" + + assert_equal %w(a-1), loaded_spec_names + assert_equal [], unresolved_names + end + end + + def test_require_already_activated_indirect_conflict + save_loaded_features do + a1 = new_spec "a", "1", "b" => "> 0" + a2 = new_spec "a", "2", "b" => "> 0" + b1 = new_spec "b", "1", "c" => ">= 1" + b2 = new_spec "b", "2", "c" => ">= 2" + c1 = new_spec "c", "1", nil, "lib/d.rb" + c2 = new_spec("c", "2", { "a" => "1" }, "lib/d.rb") # conflicts with a-2 + + install_specs a1, a2, b1, b2, c1, c2 + + Gem.activate "a", "= 1" + Gem.activate "c", "= 1" + assert_equal %w(a-1 c-1), loaded_spec_names + assert_equal ["b (> 0)"], unresolved_names + + assert require "d" + + assert_equal %w(a-1 c-1), loaded_spec_names + assert_equal ["b (> 0)"], unresolved_names + end + end + def test_require_missing save_loaded_features do assert_raises ::LoadError do @@ -211,11 +251,11 @@ class TestGem < Gem::TestCase # and should resolve using b-1.0 def test_self_activate_over - a, _ = util_spec 'a', '1.0', 'b' => '>= 1.0', 'c' => '= 1.0' - util_spec 'b', '1.0' - util_spec 'b', '1.1' - util_spec 'b', '2.0' - c, _ = util_spec 'c', '1.0', 'b' => '~> 1.0' + util_spec 'a', '1.0', 'b' => '>= 1.0', 'c' => '= 1.0' + util_spec 'b', '1.0' + util_spec 'b', '1.1' + util_spec 'b', '2.0' + util_spec 'c', '1.0', 'b' => '~> 1.0' Gem.activate "a" diff --git a/test/rubygems/test_gem_dependency_list.rb b/test/rubygems/test_gem_dependency_list.rb index 688455475b..4201a31cdd 100644 --- a/test/rubygems/test_gem_dependency_list.rb +++ b/test/rubygems/test_gem_dependency_list.rb @@ -157,6 +157,24 @@ class TestGemDependencyList < Gem::TestCase assert_equal exp, @deplist.why_not_ok? end + def test_why_not_ok_eh_old_dependency + a = new_spec 'a', '1', + 'b' => '~> 1.0' + + b0 = new_spec 'b', '1.0', + 'd' => '>= 0' + + b1 = new_spec 'b', '1.1' + + util_clear_gems + + @deplist.clear + + @deplist.add a, b0, b1 + + assert_equal({}, @deplist.why_not_ok?) + end + def test_ok_eh_mismatch a1 = quick_spec 'a', '1' a2 = quick_spec 'a', '2' diff --git a/test/rubygems/test_gem_indexer.rb b/test/rubygems/test_gem_indexer.rb index 71fb965460..e3c78ecb70 100644 --- a/test/rubygems/test_gem_indexer.rb +++ b/test/rubygems/test_gem_indexer.rb @@ -29,6 +29,8 @@ class TestGemIndexer < Gem::TestCase @d2_0_b = quick_spec 'd', '2.0.b' util_build_gem @d2_0_b + @tempdir = File.join(@tempdir, 'indexer') + gems = File.join(@tempdir, 'gems') FileUtils.mkdir_p gems FileUtils.mv Dir[Gem.cache_gem('*.gem', @gemhome)], gems diff --git a/test/rubygems/test_gem_installer.rb b/test/rubygems/test_gem_installer.rb index 0b73af996d..554865da90 100644 --- a/test/rubygems/test_gem_installer.rb +++ b/test/rubygems/test_gem_installer.rb @@ -187,7 +187,7 @@ load Gem.bin_path('a', 'executable', version) assert_equal true, File.directory?(util_inst_bindir) installed_exec = File.join(util_inst_bindir, 'executable') assert_equal true, File.exist?(installed_exec) - assert_equal(0100755, File.stat(installed_exec).mode) unless win_platform? + assert_equal mask, File.stat(installed_exec).mode unless win_platform? wrapper = File.read installed_exec assert_match %r|generated by RubyGems|, wrapper @@ -202,7 +202,7 @@ load Gem.bin_path('a', 'executable', version) assert_equal true, File.directory?(util_inst_bindir) installed_exec = File.join(util_inst_bindir, 'executable') assert_equal true, File.exist?(installed_exec) - assert_equal(0100755, File.stat(installed_exec).mode) unless win_platform? + assert_equal mask, File.stat(installed_exec).mode unless win_platform? wrapper = File.read installed_exec assert_match %r|generated by RubyGems|, wrapper @@ -255,7 +255,7 @@ load Gem.bin_path('a', 'executable', version) installed_exec = File.join("#{@gemhome}2", 'bin', 'executable') assert_equal true, File.exist?(installed_exec) - assert_equal(0100755, File.stat(installed_exec).mode) unless win_platform? + assert_equal mask, File.stat(installed_exec).mode unless win_platform? wrapper = File.read installed_exec assert_match %r|generated by RubyGems|, wrapper @@ -304,7 +304,7 @@ load Gem.bin_path('a', 'executable', version) installed_exec = File.join @gemhome, 'bin', 'executable' assert_equal true, File.exist?(installed_exec) - assert_equal 0100755, File.stat(installed_exec).mode unless win_platform? + assert_equal mask, File.stat(installed_exec).mode unless win_platform? wrapper = File.read installed_exec assert_match %r|generated by RubyGems|, wrapper @@ -329,7 +329,7 @@ load Gem.bin_path('a', 'executable', version) @installer.generate_bin assert_equal true, File.directory?(util_inst_bindir) assert_equal true, File.exist?(installed_exec) - assert_equal(0100755, File.stat(installed_exec).mode) unless win_platform? + assert_equal mask, File.stat(installed_exec).mode unless win_platform? assert_match %r|generated by RubyGems|, File.read(installed_exec) @@ -1020,5 +1020,9 @@ load Gem.bin_path('a', 'executable', version) @installer = util_installer @spec, gem, @gemhome end + def mask + 0100755 & (~File.umask) + end + end diff --git a/test/rubygems/test_gem_requirement.rb b/test/rubygems/test_gem_requirement.rb index df478190b5..c8490de199 100644 --- a/test/rubygems/test_gem_requirement.rb +++ b/test/rubygems/test_gem_requirement.rb @@ -193,11 +193,15 @@ class TestGemRequirement < Gem::TestCase 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" + + assert_satisfied_by "3.0.rc2", "> 0" end def test_illformed_requirements diff --git a/test/rubygems/test_gem_spec_fetcher.rb b/test/rubygems/test_gem_spec_fetcher.rb index 20a40b68c1..de7bd9a0fd 100644 --- a/test/rubygems/test_gem_spec_fetcher.rb +++ b/test/rubygems/test_gem_spec_fetcher.rb @@ -414,9 +414,8 @@ class TestGemSpecFetcher < Gem::TestCase def test_cache_dir_escapes_windows_paths uri = URI.parse("file:///C:/WINDOWS/Temp/gem_repo") - cache_dir = @sf.cache_dir(uri) - pos = (/\A[a-z]:/i =~ cache_dir) ? 2 : 0 - refute /:/ =~ cache_dir[pos..-1], "#{cache_dir} should not contain a :" + cache_dir = @sf.cache_dir(uri).gsub(@sf.dir, '') + assert cache_dir !~ /:/, "#{cache_dir} should not contain a :" end end diff --git a/test/rubygems/test_gem_specification.rb b/test/rubygems/test_gem_specification.rb index f820d7c1c3..d7f5772259 100644 --- a/test/rubygems/test_gem_specification.rb +++ b/test/rubygems/test_gem_specification.rb @@ -371,14 +371,6 @@ end assert_equal nil, @a1.default_executable end - def test_dependencies - rake = Gem::Dependency.new 'rake', '> 0.4' - jabber = Gem::Dependency.new 'jabber4r', '> 0.0.0' - pqa = Gem::Dependency.new 'pqa', ['> 0.4', '<= 0.6'] - - assert_equal [rake, jabber, pqa], @a1.dependencies - end - def test_dependencies util_setup_deps assert_equal [@bonobo, @monkey], @gem.dependencies diff --git a/test/rubygems/test_gem_stream_ui.rb b/test/rubygems/test_gem_stream_ui.rb index 1bc0e0bbd5..4bc6df6f93 100644 --- a/test/rubygems/test_gem_stream_ui.rb +++ b/test/rubygems/test_gem_stream_ui.rb @@ -37,10 +37,12 @@ class TestGemStreamUI < Gem::TestCase @in.extend IsTty @out.extend IsTty - @sui = Gem::StreamUI.new @in, @out, @err + @sui = Gem::StreamUI.new @in, @out, @err, true end def test_ask + skip 'TTY detection broken on windows' if Gem.win_platform? + timeout(1) do expected_answer = "Arthur, King of the Britons" @in.string = "#{expected_answer}\n" @@ -50,6 +52,8 @@ class TestGemStreamUI < Gem::TestCase end def test_ask_no_tty + skip 'TTY handling is broken on windows' if Gem.win_platform? + @in.tty = false timeout(0.1) do @@ -70,6 +74,8 @@ class TestGemStreamUI < Gem::TestCase end def test_ask_for_password_no_tty + skip 'TTY handling is broken on windows' if Gem.win_platform? + @in.tty = false timeout(0.1) do @@ -79,6 +85,8 @@ class TestGemStreamUI < Gem::TestCase end def test_ask_yes_no_no_tty_with_default + skip 'TTY handling is broken on windows' if Gem.win_platform? + @in.tty = false timeout(0.1) do @@ -91,6 +99,8 @@ class TestGemStreamUI < Gem::TestCase end def test_ask_yes_no_no_tty_without_default + skip 'TTY handling is broken on windows' if Gem.win_platform? + @in.tty = false timeout(0.1) do diff --git a/test/runner.rb b/test/runner.rb index 441bb0782e..93eb98c0b2 100644 --- a/test/runner.rb +++ b/test/runner.rb @@ -3,7 +3,7 @@ require 'rbconfig' require 'test/unit' src_testdir = File.dirname(File.expand_path(__FILE__)) -srcdir = File.dirname(src_testdir) +$LOAD_PATH << src_testdir require_relative 'profile_test_all' if ENV['RUBY_TEST_ALL_PROFILE'] == 'true'