diff options
author | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2022-04-11 19:45:23 +0900 |
---|---|---|
committer | nagachika <nagachika@ruby-lang.org> | 2022-04-12 14:07:25 +0900 |
commit | 48be8051ef26dd93e714846d94a2c3794c5b101b (patch) | |
tree | 0bae4db96d8723fafd9ad45b8e92467ed11022d2 /test/rubygems/test_gem_installer.rb | |
parent | e73165c4cd3876435040100b8acab6ffc84f8fa8 (diff) |
Merge RubyGems-3.2.33
Diffstat (limited to 'test/rubygems/test_gem_installer.rb')
-rw-r--r-- | test/rubygems/test_gem_installer.rb | 42 |
1 files changed, 37 insertions, 5 deletions
diff --git a/test/rubygems/test_gem_installer.rb b/test/rubygems/test_gem_installer.rb index 988f14146d..dae2b070d5 100644 --- a/test/rubygems/test_gem_installer.rb +++ b/test/rubygems/test_gem_installer.rb @@ -288,6 +288,33 @@ gem 'other', version "(SyntaxError)", e.message end + def test_ensure_no_race_conditions_between_installing_and_loading_gemspecs + a, a_gem = util_gem 'a', 2 + + Gem::Installer.at(a_gem).install + + t1 = Thread.new do + 5.times do + Gem::Installer.at(a_gem).install + sleep 0.1 + end + end + + t2 = Thread.new do + _, err = capture_output do + 20.times do + Gem::Specification.load(a.spec_file) + Gem::Specification.send(:clear_load_cache) + end + end + + assert_empty err + end + + t1.join + t2.join + end + def test_ensure_loadable_spec_security_policy pend 'openssl is missing' unless Gem::HAVE_OPENSSL @@ -948,7 +975,6 @@ gem 'other', version Gem.pre_install do assert_path_not_exist cache_file, 'cache file must not exist yet' - assert_path_not_exist spec_file, 'spec file must not exist yet' true end @@ -956,13 +982,11 @@ gem 'other', version assert_path_exist gemdir, 'gem install dir must exist' assert_path_exist rakefile, 'gem executable must exist' assert_path_not_exist stub_exe, 'gem executable must not exist' - assert_path_not_exist spec_file, 'spec file must not exist yet' true end Gem.post_install do assert_path_exist cache_file, 'cache file must exist' - assert_path_exist spec_file, 'spec file must exist' end @newspec = nil @@ -1237,7 +1261,11 @@ gem 'other', version end def test_install_post_build_false - installer = setup_base_installer + @spec = util_spec 'a' + + util_build_gem @spec + + installer = util_installer @spec, @gemhome Gem.post_build do false @@ -1279,7 +1307,11 @@ gem 'other', version end def test_install_pre_install_false - installer = setup_base_installer + @spec = util_spec 'a' + + util_build_gem @spec + + installer = util_installer @spec, @gemhome Gem.pre_install do false |