From c03c566dc2a612fdcbf59605dd41905e920139e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Wed, 22 Nov 2023 16:31:33 +0100 Subject: [PATCH] Ignore `default_path` test cases for Ruby with custom configuration RubyGems provides means to override their defaults, such as `Gem.default_path` method. With such modified configuration, the following errors might be observed: ~~~ 1) Failure: TestGem#test_default_path_vendor_dir [/home/runner/work/ruby/ruby/src/test/rubygems/test_gem.rb:612]: <["/home/runner/work/ruby/ruby/build/tmp/test_rubygems_20231110-59661-qs43ch/gemhome", "/home/runner/work/ruby/ruby/build/tmp/test_rubygems_20231110-59661-qs43ch/vendor/gems/3.3.0+0"]> expected but was <["/home/runner/work/ruby/ruby/build/tmp/test_rubygems_20231110-59661-qs43ch/gemhome", "/home/runner/work/ruby/ruby/build/tmp/test_rubygems_20231110-59661-qs43ch/vendor/gems/3.3.0+0", "/usr/local/lib/ruby/bundled_gems/3.3.0+0", "/usr/local/lib/ruby/default_gems/3.3.0+0"]>. make: *** [uncommon.mk:943: yes-test-all] Error 4 2) Failure: TestGem#test_default_path_missing_vendor [/home/runner/work/ruby/ruby/src/test/rubygems/test_gem.rb:592]: <["/home/runner/work/ruby/ruby/build/tmp/test_rubygems_20231110-59661-c41yb7/gemhome"]> expected but was <["/home/runner/work/ruby/ruby/build/tmp/test_rubygems_20231110-59661-c41yb7/gemhome", "/usr/local/lib/ruby/bundled_gems/3.3.0+0", "/usr/local/lib/ruby/default_gems/3.3.0+0"]>. 3) Failure: TestGem#test_default_path_user_home [/home/runner/work/ruby/ruby/src/test/rubygems/test_gem.rb:600]: <["/home/runner/work/ruby/ruby/build/tmp/test_rubygems_20231110-59661-5mm6uc/userhome/.local/share/gem/ruby/3.3.0+0", "/home/runner/work/ruby/ruby/build/tmp/test_rubygems_20231110-59661-5mm6uc/gemhome"]> expected but was <["/home/runner/work/ruby/ruby/build/tmp/test_rubygems_20231110-59661-5mm6uc/userhome/.local/share/gem/ruby/3.3.0+0", "/home/runner/work/ruby/ruby/build/tmp/test_rubygems_20231110-59661-5mm6uc/gemhome", "/usr/local/lib/ruby/bundled_gems/3.3.0+0", "/usr/local/lib/ruby/default_gems/3.3.0+0"]>. 4) Failure: TestGem#test_default_path [/home/runner/work/ruby/ruby/src/test/rubygems/test_gem.rb:582]: <["/home/runner/work/ruby/ruby/build/tmp/test_rubygems_20231110-59661-kan9o5/gemhome"]> expected but was <["/home/runner/work/ruby/ruby/build/tmp/test_rubygems_20231110-59661-kan9o5/gemhome", "/usr/local/lib/ruby/bundled_gems/3.3.0+0", "/usr/local/lib/ruby/default_gems/3.3.0+0"]>. ~~~ Of course the `Gem.default_path` could be stubbed, but testing stub should not be the point. Therefore, just detect if `Gem.default_path` was customized and ignore the test cases. --- test/rubygems/test_gem.rb | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb index 6537afad2ac8c6..6e1f6cd1785b53 100644 --- a/test/rubygems/test_gem.rb +++ b/test/rubygems/test_gem.rb @@ -574,6 +574,8 @@ def test_self_default_exec_format_jruby end def test_default_path + original_gem_default_path? + vendordir(File.join(@tempdir, "vendor")) do FileUtils.rm_rf Gem.user_home @@ -584,6 +586,8 @@ def test_default_path end def test_default_path_missing_vendor + original_gem_default_path? + vendordir(nil) do FileUtils.rm_rf Gem.user_home @@ -594,6 +598,8 @@ def test_default_path_missing_vendor end def test_default_path_user_home + original_gem_default_path? + vendordir(File.join(@tempdir, "vendor")) do expected = [Gem.user_dir, Gem.default_dir] @@ -602,6 +608,8 @@ def test_default_path_user_home end def test_default_path_vendor_dir + original_gem_default_path? + vendordir(File.join(@tempdir, "vendor")) do FileUtils.mkdir_p Gem.vendor_dir @@ -1796,4 +1804,10 @@ def util_remove_interrupt_command def util_cache_dir File.join Gem.dir, "cache" end + + def original_gem_default_path? + unless Gem.method(:default_path).source_location.first.match? "lib/rubygems/defaults.rb" + pend "Gem.default_path likely differs from original RubyGems implementation" + end + end end