diff options
author | hsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-10-30 00:54:12 +0000 |
---|---|---|
committer | hsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-10-30 00:54:12 +0000 |
commit | e00d5437d1453f0ec4fbc980a81c15630624eb71 (patch) | |
tree | 07c1340a8c4ea3d0b7ae2f209866af85de089f27 /test/rubygems/test_require.rb | |
parent | f363bbdf1042562e40aaccbd1bdd7b783c096ff0 (diff) | |
download | ruby-e00d5437d1453f0ec4fbc980a81c15630624eb71.tar.gz |
* lib/rubygems: Update to RubyGems HEAD(60d7972).
this version contains pull requests number of #1343, #1356, #1357, #1363
at https://github.com/rubygems/rubygems/pulls
* test/rubygems: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52372 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/rubygems/test_require.rb')
-rw-r--r-- | test/rubygems/test_require.rb | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb index 96906595d7..08dd4cb9f9 100644 --- a/test/rubygems/test_require.rb +++ b/test/rubygems/test_require.rb @@ -80,6 +80,8 @@ class TestGemRequire < Gem::TestCase end def test_concurrent_require + skip 'deadlock' if /^1\.8\./ =~ RUBY_VERSION + Object.const_set :FILE_ENTERED_LATCH, Latch.new(2) Object.const_set :FILE_EXIT_LATCH, Latch.new(1) @@ -103,6 +105,8 @@ class TestGemRequire < Gem::TestCase assert t1.join, "thread 1 should exit" assert t2.join, "thread 2 should exit" ensure + return if $! # skipping + Object.send :remove_const, :FILE_ENTERED_LATCH Object.send :remove_const, :FILE_EXIT_LATCH end @@ -247,6 +251,32 @@ class TestGemRequire < Gem::TestCase assert_equal "unable to find a version of 'b' to activate", e.message end + def test_require_works_after_cleanup + a1 = new_default_spec "a", "1.0", nil, "a/b.rb" + b1 = new_default_spec "b", "1.0", nil, "b/c.rb" + b2 = new_default_spec "b", "2.0", nil, "b/d.rb" + + install_default_gems a1 + install_default_gems b1 + install_default_gems b2 + + # Load default ruby gems fresh as if we've just started a ruby script. + Gem::Specification.reset + require 'rubygems' + Gem::Specification.stubs + + # Remove an old default gem version directly from disk as if someone ran + # gem cleanup. + FileUtils.rm_rf(File.join @default_dir, "#{b1.full_name}") + FileUtils.rm_rf(File.join @default_spec_dir, "#{b1.full_name}.gemspec") + + # Require gems that have not been removed. + assert_require 'a/b' + assert_equal %w(a-1.0), loaded_spec_names + assert_require 'b/d' + assert_equal %w(a-1.0 b-2.0), loaded_spec_names + end + def test_default_gem_only default_gem_spec = new_default_spec("default", "2.0.0.0", nil, "default/gem.rb") |