summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-07-25 15:42:22 +0000
committernagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-07-25 15:42:22 +0000
commit589da706be0b7abcbcf54e6f8c979c94ea174b09 (patch)
tree43da9a5cb9c4c690a2f02209979dd7f739c8980c
parent7567977adc82ec528f4f0e5c650a940304e84b34 (diff)
* lib/rubygems: Update to RubyGems 2.0.6. [ruby-core:56160]
[Backport #8682] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@42170 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--lib/rubygems.rb2
-rw-r--r--lib/rubygems/commands/query_command.rb17
-rw-r--r--lib/rubygems/commands/search_command.rb2
-rw-r--r--lib/rubygems/ext/builder.rb4
-rw-r--r--lib/rubygems/ext/ext_conf_builder.rb4
-rw-r--r--lib/rubygems/psych_additions.rb2
-rw-r--r--lib/rubygems/remote_fetcher.rb9
-rw-r--r--lib/rubygems/test_case.rb6
-rw-r--r--test/rubygems/test_gem_commands_query_command.rb28
-rw-r--r--test/rubygems/test_gem_commands_search_command.rb17
-rw-r--r--test/rubygems/test_gem_ext_builder.rb58
-rw-r--r--test/rubygems/test_gem_ext_ext_conf_builder.rb5
-rw-r--r--version.h6
14 files changed, 148 insertions, 17 deletions
diff --git a/ChangeLog b/ChangeLog
index b3ca8320ed..27eacc700b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Fri Jul 26 00:38:58 2013 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+
+ * lib/rubygems: Update to RubyGems 2.0.6. [ruby-core:56160]
+ [Backport #8682]
+
Wed Jul 24 22:35:32 2013 NARUSE, Yui <naruse@ruby-lang.org>
* lib/uri/generic.rb (find_proxy): raise BadURIError if the URI is
diff --git a/lib/rubygems.rb b/lib/rubygems.rb
index ee9e56a0c8..a907362370 100644
--- a/lib/rubygems.rb
+++ b/lib/rubygems.rb
@@ -8,7 +8,7 @@
require 'rbconfig'
module Gem
- VERSION = '2.0.5'
+ VERSION = '2.0.6'
end
# Must be first since it unloads the prelude from 1.9.2
diff --git a/lib/rubygems/commands/query_command.rb b/lib/rubygems/commands/query_command.rb
index 7bda7383e2..05b214bb63 100644
--- a/lib/rubygems/commands/query_command.rb
+++ b/lib/rubygems/commands/query_command.rb
@@ -14,7 +14,7 @@ class Gem::Commands::QueryCommand < Gem::Command
summary = 'Query gem information in local or remote repositories')
super name, summary,
:name => //, :domain => :local, :details => false, :versions => true,
- :installed => false, :version => Gem::Requirement.default
+ :installed => nil, :version => Gem::Requirement.default
add_option('-i', '--[no-]installed',
'Check for installed gem') do |value, options|
@@ -67,15 +67,20 @@ class Gem::Commands::QueryCommand < Gem::Command
name = options[:name]
prerelease = options[:prerelease]
- if options[:installed] then
+ unless options[:installed].nil? then
if name.source.empty? then
alert_error "You must specify a gem name"
exit_code |= 4
- elsif installed? name, options[:version] then
- say "true"
else
- say "false"
- exit_code |= 1
+ installed = installed? name, options[:version]
+ installed = !installed unless options[:installed]
+
+ if installed then
+ say "true"
+ else
+ say "false"
+ exit_code |= 1
+ end
end
terminate_interaction exit_code
diff --git a/lib/rubygems/commands/search_command.rb b/lib/rubygems/commands/search_command.rb
index 7810c85b36..c125715fe2 100644
--- a/lib/rubygems/commands/search_command.rb
+++ b/lib/rubygems/commands/search_command.rb
@@ -7,6 +7,8 @@ class Gem::Commands::SearchCommand < Gem::Commands::QueryCommand
super 'search', 'Display all gems whose name contains STRING'
remove_option '--name-matches'
+
+ defaults[:domain] = :remote
end
def arguments # :nodoc:
diff --git a/lib/rubygems/ext/builder.rb b/lib/rubygems/ext/builder.rb
index ab454b4ba1..79cae906ee 100644
--- a/lib/rubygems/ext/builder.rb
+++ b/lib/rubygems/ext/builder.rb
@@ -23,11 +23,13 @@ class Gem::Ext::Builder
make_program = (/mswin/ =~ RUBY_PLATFORM) ? 'nmake' : 'make'
end
+ destdir = '"DESTDIR=%s"' % ENV['DESTDIR'] if RUBY_VERSION > '2.0'
+
['', 'install'].each do |target|
# Pass DESTDIR via command line to override what's in MAKEFLAGS
cmd = [
make_program,
- '"DESTDIR=%s"' % ENV['DESTDIR'],
+ destdir,
target
].join(' ').rstrip
run(cmd, results, "make #{target}".rstrip)
diff --git a/lib/rubygems/ext/ext_conf_builder.rb b/lib/rubygems/ext/ext_conf_builder.rb
index 0032f4163c..5112eb8e2f 100644
--- a/lib/rubygems/ext/ext_conf_builder.rb
+++ b/lib/rubygems/ext/ext_conf_builder.rb
@@ -50,14 +50,14 @@ class Gem::Ext::ExtConfBuilder < Gem::Ext::Builder
destent.exist? or File.rename(ent.path, destent.path)
end
end
-
- results
ensure
ENV["RUBYOPT"] = rubyopt
ENV["DESTDIR"] = destdir
end
end
t.unlink if t and t.path
+
+ results
ensure
FileUtils.rm_rf tmp_dest if tmp_dest
end
diff --git a/lib/rubygems/psych_additions.rb b/lib/rubygems/psych_additions.rb
index dcc13fdf2e..08a5cb37ea 100644
--- a/lib/rubygems/psych_additions.rb
+++ b/lib/rubygems/psych_additions.rb
@@ -3,7 +3,7 @@
# in Specification._load, but if we don't have the constant, Marshal
# blows up.
-module Psych # :nodoc:
+module Psych
class PrivateType
end
end
diff --git a/lib/rubygems/remote_fetcher.rb b/lib/rubygems/remote_fetcher.rb
index ec052b50da..86bad9de41 100644
--- a/lib/rubygems/remote_fetcher.rb
+++ b/lib/rubygems/remote_fetcher.rb
@@ -1,5 +1,6 @@
require 'rubygems'
require 'rubygems/user_interaction'
+require 'thread'
require 'uri'
require 'resolv'
@@ -72,6 +73,7 @@ class Gem::RemoteFetcher
Socket.do_not_reverse_lookup = true
@connections = {}
+ @connections_mutex = Mutex.new
@requests = Hash.new 0
@proxy_uri =
case proxy
@@ -391,8 +393,11 @@ class Gem::RemoteFetcher
end
connection_id = [Thread.current.object_id, *net_http_args].join ':'
- @connections[connection_id] ||= Net::HTTP.new(*net_http_args)
- connection = @connections[connection_id]
+
+ connection = @connections_mutex.synchronize do
+ @connections[connection_id] ||= Net::HTTP.new(*net_http_args)
+ @connections[connection_id]
+ end
if https?(uri) and not connection.started? then
configure_connection_for_https(connection)
diff --git a/lib/rubygems/test_case.rb b/lib/rubygems/test_case.rb
index e92e5d868a..7d087afade 100644
--- a/lib/rubygems/test_case.rb
+++ b/lib/rubygems/test_case.rb
@@ -1,5 +1,11 @@
# TODO: $SAFE = 1
+begin
+ gem 'minitest', '~> 4.0'
+rescue NoMethodError
+ # for ruby tests
+end
+
if defined? Gem::QuickLoader
Gem::QuickLoader.load_full_rubygems_library
else
diff --git a/test/rubygems/test_gem_commands_query_command.rb b/test/rubygems/test_gem_commands_query_command.rb
index b79d13d270..a7e5e01f09 100644
--- a/test/rubygems/test_gem_commands_query_command.rb
+++ b/test/rubygems/test_gem_commands_query_command.rb
@@ -195,6 +195,34 @@ pl (1)
assert_equal '', @ui.error
end
+ def test_execute_installed_inverse
+ @cmd.handle_options %w[-n a --no-installed]
+
+ e = assert_raises Gem::MockGemUi::TermError do
+ use_ui @ui do
+ @cmd.execute
+ end
+ end
+
+ assert_equal "false\n", @ui.output
+ assert_equal '', @ui.error
+
+ assert_equal 1, e.exit_code
+ end
+
+ def test_execute_installed_inverse_not_installed
+ @cmd.handle_options %w[-n not_installed --no-installed]
+
+ assert_raises Gem::MockGemUi::SystemExitException do
+ use_ui @ui do
+ @cmd.execute
+ end
+ end
+
+ assert_equal "true\n", @ui.output
+ assert_equal '', @ui.error
+ end
+
def test_execute_installed_no_name
@cmd.handle_options %w[--installed]
diff --git a/test/rubygems/test_gem_commands_search_command.rb b/test/rubygems/test_gem_commands_search_command.rb
index e69de29bb2..fb8debc245 100644
--- a/test/rubygems/test_gem_commands_search_command.rb
+++ b/test/rubygems/test_gem_commands_search_command.rb
@@ -0,0 +1,17 @@
+require 'rubygems/test_case'
+require 'rubygems/commands/search_command'
+
+class TestGemCommandsSearchCommand < Gem::TestCase
+
+ def setup
+ super
+
+ @cmd = Gem::Commands::SearchCommand.new
+ end
+
+ def test_initialize
+ assert_equal :remote, @cmd.defaults[:domain]
+ end
+
+end
+
diff --git a/test/rubygems/test_gem_ext_builder.rb b/test/rubygems/test_gem_ext_builder.rb
new file mode 100644
index 0000000000..14a77b8db3
--- /dev/null
+++ b/test/rubygems/test_gem_ext_builder.rb
@@ -0,0 +1,58 @@
+require 'rubygems/test_case'
+require 'rubygems/ext'
+
+class TestGemExtBuilder < Gem::TestCase
+
+ def setup
+ super
+
+ @ext = File.join @tempdir, 'ext'
+ @dest_path = File.join @tempdir, 'prefix'
+
+ FileUtils.mkdir_p @ext
+ FileUtils.mkdir_p @dest_path
+
+ @orig_DESTDIR = ENV['DESTDIR']
+ end
+
+ def teardown
+ ENV['DESTDIR'] = @orig_DESTDIR
+
+ super
+ end
+
+ def test_class_make
+ ENV['DESTDIR'] = 'destination'
+ results = []
+
+ Dir.chdir @ext do
+ open 'Makefile', 'w' do |io|
+ io.puts <<-MAKEFILE
+all:
+\t@#{Gem.ruby} -e "puts %Q{all: \#{ENV['DESTDIR']}}"
+
+install:
+\t@#{Gem.ruby} -e "puts %Q{install: \#{ENV['DESTDIR']}}"
+ MAKEFILE
+ end
+
+ Gem::Ext::Builder.make @dest_path, results
+ end
+
+ results = results.join "\n"
+
+
+ if RUBY_VERSION > '2.0' then
+ assert_match %r%"DESTDIR=#{ENV['DESTDIR']}"$%, results
+ assert_match %r%"DESTDIR=#{ENV['DESTDIR']}" install$%, results
+ else
+ refute_match %r%"DESTDIR=#{ENV['DESTDIR']}"$%, results
+ refute_match %r%"DESTDIR=#{ENV['DESTDIR']}" install$%, results
+ end
+
+ assert_match %r%^all: destination$%, results
+ assert_match %r%^install: destination$%, results
+ end
+
+end
+
diff --git a/test/rubygems/test_gem_ext_ext_conf_builder.rb b/test/rubygems/test_gem_ext_ext_conf_builder.rb
index ec4dd3d6ce..33398ac6f3 100644
--- a/test/rubygems/test_gem_ext_ext_conf_builder.rb
+++ b/test/rubygems/test_gem_ext_ext_conf_builder.rb
@@ -27,7 +27,10 @@ class TestGemExtExtConfBuilder < Gem::TestCase
output = []
Dir.chdir @ext do
- Gem::Ext::ExtConfBuilder.build 'extconf.rb', nil, @dest_path, output
+ result =
+ Gem::Ext::ExtConfBuilder.build 'extconf.rb', nil, @dest_path, output
+
+ assert_same result, output
end
assert_match(/^#{Gem.ruby} extconf.rb/, output[0])
diff --git a/version.h b/version.h
index 25ca9f1c82..b726305ccb 100644
--- a/version.h
+++ b/version.h
@@ -1,10 +1,10 @@
#define RUBY_VERSION "2.0.0"
-#define RUBY_RELEASE_DATE "2013-07-24"
-#define RUBY_PATCHLEVEL 279
+#define RUBY_RELEASE_DATE "2013-07-26"
+#define RUBY_PATCHLEVEL 280
#define RUBY_RELEASE_YEAR 2013
#define RUBY_RELEASE_MONTH 7
-#define RUBY_RELEASE_DAY 24
+#define RUBY_RELEASE_DAY 26
#include "ruby/version.h"