rubygems-update 3.4.20 → 3.4.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +22 -0
- data/Manifest.txt +1 -0
- data/bundler/CHANGELOG.md +34 -3
- data/bundler/lib/bundler/build_metadata.rb +3 -3
- data/bundler/lib/bundler/cli/check.rb +1 -1
- data/bundler/lib/bundler/cli/gem.rb +1 -3
- data/bundler/lib/bundler/cli/install.rb +2 -2
- data/bundler/lib/bundler/cli/lock.rb +26 -23
- data/bundler/lib/bundler/cli/open.rb +5 -7
- data/bundler/lib/bundler/definition.rb +42 -25
- data/bundler/lib/bundler/env.rb +2 -2
- data/bundler/lib/bundler/gem_version_promoter.rb +2 -2
- data/bundler/lib/bundler/injector.rb +1 -1
- data/bundler/lib/bundler/installer/parallel_installer.rb +0 -26
- data/bundler/lib/bundler/installer/standalone.rb +13 -6
- data/bundler/lib/bundler/lockfile_parser.rb +29 -24
- data/bundler/lib/bundler/man/bundle-add.1 +1 -1
- data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
- data/bundler/lib/bundler/man/bundle-cache.1 +1 -1
- data/bundler/lib/bundler/man/bundle-check.1 +1 -1
- data/bundler/lib/bundler/man/bundle-clean.1 +1 -1
- data/bundler/lib/bundler/man/bundle-config.1 +1 -1
- data/bundler/lib/bundler/man/bundle-console.1 +1 -1
- data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
- data/bundler/lib/bundler/man/bundle-exec.1 +2 -2
- data/bundler/lib/bundler/man/bundle-exec.1.ronn +2 -3
- data/bundler/lib/bundler/man/bundle-gem.1 +1 -1
- data/bundler/lib/bundler/man/bundle-help.1 +1 -1
- data/bundler/lib/bundler/man/bundle-info.1 +1 -1
- data/bundler/lib/bundler/man/bundle-init.1 +1 -1
- data/bundler/lib/bundler/man/bundle-inject.1 +1 -1
- data/bundler/lib/bundler/man/bundle-install.1 +1 -1
- data/bundler/lib/bundler/man/bundle-list.1 +1 -1
- data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
- data/bundler/lib/bundler/man/bundle-open.1 +1 -1
- data/bundler/lib/bundler/man/bundle-outdated.1 +1 -1
- data/bundler/lib/bundler/man/bundle-platform.1 +1 -1
- data/bundler/lib/bundler/man/bundle-plugin.1 +17 -17
- data/bundler/lib/bundler/man/bundle-plugin.1.ronn +5 -5
- data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
- data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
- data/bundler/lib/bundler/man/bundle-show.1 +1 -1
- data/bundler/lib/bundler/man/bundle-update.1 +1 -1
- data/bundler/lib/bundler/man/bundle-version.1 +1 -1
- data/bundler/lib/bundler/man/bundle-viz.1 +1 -1
- data/bundler/lib/bundler/man/bundle.1 +1 -1
- data/bundler/lib/bundler/man/gemfile.5 +1 -1
- data/bundler/lib/bundler/resolver/package.rb +5 -0
- data/bundler/lib/bundler/resolver.rb +27 -7
- data/bundler/lib/bundler/ruby_version.rb +8 -1
- data/bundler/lib/bundler/settings.rb +53 -16
- data/bundler/lib/bundler/shared_helpers.rb +16 -1
- data/bundler/lib/bundler/source/git/git_proxy.rb +13 -4
- data/bundler/lib/bundler/spec_set.rb +2 -2
- data/bundler/lib/bundler/stub_specification.rb +4 -2
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +6 -2
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/lib/bundler/yaml_serializer.rb +6 -7
- data/lib/rubygems/basic_specification.rb +1 -1
- data/lib/rubygems/command.rb +2 -2
- data/lib/rubygems/command_manager.rb +1 -1
- data/lib/rubygems/commands/cert_command.rb +2 -2
- data/lib/rubygems/commands/check_command.rb +5 -1
- data/lib/rubygems/commands/cleanup_command.rb +1 -1
- data/lib/rubygems/commands/contents_command.rb +1 -1
- data/lib/rubygems/commands/help_command.rb +2 -2
- data/lib/rubygems/commands/open_command.rb +1 -3
- data/lib/rubygems/commands/owner_command.rb +1 -1
- data/lib/rubygems/commands/setup_command.rb +8 -8
- data/lib/rubygems/commands/specification_command.rb +5 -1
- data/lib/rubygems/commands/stale_command.rb +1 -1
- data/lib/rubygems/commands/update_command.rb +3 -3
- data/lib/rubygems/commands/yank_command.rb +1 -1
- data/lib/rubygems/config_file.rb +60 -13
- data/lib/rubygems/core_ext/kernel_gem.rb +1 -1
- data/lib/rubygems/core_ext/kernel_require.rb +1 -1
- data/lib/rubygems/defaults.rb +6 -2
- data/lib/rubygems/deprecate.rb +2 -1
- data/lib/rubygems/doctor.rb +1 -1
- data/lib/rubygems/errors.rb +1 -1
- data/lib/rubygems/exceptions.rb +1 -1
- data/lib/rubygems/ext/builder.rb +5 -4
- data/lib/rubygems/ext/cargo_builder.rb +2 -2
- data/lib/rubygems/gem_runner.rb +5 -1
- data/lib/rubygems/gemcutter_utilities.rb +2 -2
- data/lib/rubygems/indexer.rb +1 -1
- data/lib/rubygems/install_update_options.rb +1 -1
- data/lib/rubygems/installer.rb +8 -8
- data/lib/rubygems/package/old.rb +1 -1
- data/lib/rubygems/package/tar_writer.rb +1 -1
- data/lib/rubygems/package.rb +8 -8
- data/lib/rubygems/platform.rb +6 -2
- data/lib/rubygems/query_utils.rb +4 -4
- data/lib/rubygems/remote_fetcher.rb +10 -2
- data/lib/rubygems/request_set.rb +2 -1
- data/lib/rubygems/requirement.rb +1 -1
- data/lib/rubygems/resolver/api_set.rb +2 -1
- data/lib/rubygems/resolver/api_specification.rb +1 -1
- data/lib/rubygems/security/signer.rb +10 -2
- data/lib/rubygems/security/trust_dir.rb +4 -4
- data/lib/rubygems/security.rb +1 -1
- data/lib/rubygems/security_option.rb +1 -1
- data/lib/rubygems/source.rb +5 -1
- data/lib/rubygems/specification.rb +9 -10
- data/lib/rubygems/specification_policy.rb +5 -5
- data/lib/rubygems/uninstaller.rb +1 -1
- data/lib/rubygems/update_suggestion.rb +1 -1
- data/lib/rubygems/util.rb +5 -1
- data/lib/rubygems/version.rb +3 -2
- data/lib/rubygems/yaml_serializer.rb +88 -0
- data/lib/rubygems.rb +4 -4
- data/rubygems-update.gemspec +1 -1
- data/setup.rb +2 -0
- data/test/rubygems/bundler_test_gem.rb +6 -3
- data/test/rubygems/helper.rb +23 -15
- data/test/rubygems/package/tar_test_case.rb +2 -2
- data/test/rubygems/test_gem.rb +51 -26
- data/test/rubygems/test_gem_command.rb +3 -1
- data/test/rubygems/test_gem_commands_cert_command.rb +22 -22
- data/test/rubygems/test_gem_commands_cleanup_command.rb +2 -2
- data/test/rubygems/test_gem_commands_environment_command.rb +2 -1
- data/test/rubygems/test_gem_commands_exec_command.rb +5 -1
- data/test/rubygems/test_gem_commands_install_command.rb +3 -3
- data/test/rubygems/test_gem_commands_open_command.rb +5 -2
- data/test/rubygems/test_gem_commands_pristine_command.rb +2 -2
- data/test/rubygems/test_gem_commands_push_command.rb +7 -6
- data/test/rubygems/test_gem_commands_signin_command.rb +8 -8
- data/test/rubygems/test_gem_commands_uninstall_command.rb +1 -1
- data/test/rubygems/test_gem_commands_unpack_command.rb +2 -2
- data/test/rubygems/test_gem_config_file.rb +46 -12
- data/test/rubygems/test_gem_ext_cargo_builder.rb +2 -2
- data/test/rubygems/test_gem_gemcutter_utilities.rb +8 -5
- data/test/rubygems/test_gem_install_update_options.rb +3 -3
- data/test/rubygems/test_gem_installer.rb +15 -15
- data/test/rubygems/test_gem_package.rb +35 -34
- data/test/rubygems/test_gem_package_old.rb +1 -1
- data/test/rubygems/test_gem_package_tar_header.rb +3 -3
- data/test/rubygems/test_gem_package_tar_reader.rb +4 -4
- data/test/rubygems/test_gem_package_tar_writer.rb +28 -28
- data/test/rubygems/test_gem_rdoc.rb +2 -2
- data/test/rubygems/test_gem_remote_fetcher.rb +13 -9
- data/test/rubygems/test_gem_request.rb +5 -5
- data/test/rubygems/test_gem_request_connection_pools.rb +2 -1
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +14 -7
- data/test/rubygems/test_gem_security.rb +2 -2
- data/test/rubygems/test_gem_security_signer.rb +2 -2
- data/test/rubygems/test_gem_security_trust_dir.rb +6 -6
- data/test/rubygems/test_gem_spec_fetcher.rb +2 -2
- data/test/rubygems/test_gem_specification.rb +29 -29
- data/test/rubygems/test_gem_update_suggestion.rb +12 -6
- data/test/rubygems/test_gem_util.rb +2 -2
- data/test/rubygems/test_gem_version.rb +4 -2
- data/test/rubygems/utilities.rb +2 -1
- metadata +4 -3
@@ -204,8 +204,8 @@ gem 'other', version
|
|
204
204
|
bin_dir = bin_dir.downcase
|
205
205
|
end
|
206
206
|
|
207
|
-
orig_PATH
|
208
|
-
|
207
|
+
orig_PATH = ENV["PATH"]
|
208
|
+
ENV["PATH"] = [ENV["PATH"], bin_dir].join(File::PATH_SEPARATOR)
|
209
209
|
|
210
210
|
use_ui @ui do
|
211
211
|
installer.check_that_user_bin_dir_is_in_path
|
@@ -229,8 +229,8 @@ gem 'other', version
|
|
229
229
|
def test_check_that_user_bin_dir_is_in_path_tilde
|
230
230
|
pend "Tilde is PATH is not supported under MS Windows" if win_platform?
|
231
231
|
|
232
|
-
orig_PATH
|
233
|
-
|
232
|
+
orig_PATH = ENV["PATH"]
|
233
|
+
ENV["PATH"] = [ENV["PATH"], "~/bin"].join(File::PATH_SEPARATOR)
|
234
234
|
|
235
235
|
installer = setup_base_installer
|
236
236
|
installer.bin_dir.replace File.join @userhome, "bin"
|
@@ -467,14 +467,14 @@ gem 'other', version
|
|
467
467
|
elsif Process.uid.zero?
|
468
468
|
pend("test_generate_bin_script_no_perms skipped in root privilege")
|
469
469
|
else
|
470
|
-
FileUtils.chmod
|
470
|
+
FileUtils.chmod 0o000, util_inst_bindir
|
471
471
|
|
472
472
|
assert_raise Gem::FilePermissionError do
|
473
473
|
installer.generate_bin
|
474
474
|
end
|
475
475
|
end
|
476
476
|
ensure
|
477
|
-
FileUtils.chmod
|
477
|
+
FileUtils.chmod 0o755, util_inst_bindir unless ($DEBUG || win_platform?)
|
478
478
|
end
|
479
479
|
|
480
480
|
def test_generate_bin_script_no_shebang
|
@@ -571,14 +571,14 @@ gem 'other', version
|
|
571
571
|
elsif Process.uid.zero?
|
572
572
|
pend("test_user_install_disabled_read_only test skipped in root privilege")
|
573
573
|
else
|
574
|
-
FileUtils.chmod
|
574
|
+
FileUtils.chmod 0o000, util_inst_bindir
|
575
575
|
|
576
576
|
assert_raise Gem::FilePermissionError do
|
577
577
|
installer.generate_bin
|
578
578
|
end
|
579
579
|
end
|
580
580
|
ensure
|
581
|
-
FileUtils.chmod
|
581
|
+
FileUtils.chmod 0o755, util_inst_bindir unless ($DEBUG || win_platform?)
|
582
582
|
end
|
583
583
|
|
584
584
|
def test_generate_bin_symlink_update_newer
|
@@ -816,7 +816,7 @@ gem 'other', version
|
|
816
816
|
|
817
817
|
util_build_gem spec
|
818
818
|
|
819
|
-
File.chmod(
|
819
|
+
File.chmod(0o555, Gem.plugindir)
|
820
820
|
system_path = File.join(Gem.plugindir, "a_plugin.rb")
|
821
821
|
user_path = File.join(Gem.plugindir(Gem.user_dir), "a_plugin.rb")
|
822
822
|
installer = util_installer spec, Gem.dir, :user
|
@@ -838,7 +838,7 @@ gem 'other', version
|
|
838
838
|
|
839
839
|
util_build_gem spec
|
840
840
|
|
841
|
-
File.chmod(
|
841
|
+
File.chmod(0o555, Gem.plugindir)
|
842
842
|
system_path = File.join(Gem.plugindir, "a_plugin.rb")
|
843
843
|
|
844
844
|
build_root = File.join(@tempdir, "build_root")
|
@@ -1032,8 +1032,8 @@ end
|
|
1032
1032
|
exe = File.join gemdir, "bin", "executable"
|
1033
1033
|
assert_path_exist exe
|
1034
1034
|
|
1035
|
-
exe_mode = File.stat(exe).mode &
|
1036
|
-
assert_equal
|
1035
|
+
exe_mode = File.stat(exe).mode & 0o111
|
1036
|
+
assert_equal 0o111, exe_mode, "0%o" % exe_mode unless win_platform?
|
1037
1037
|
|
1038
1038
|
assert_path_exist File.join gemdir, "lib", "code.rb"
|
1039
1039
|
|
@@ -1617,7 +1617,7 @@ end
|
|
1617
1617
|
installer.install
|
1618
1618
|
end
|
1619
1619
|
assert_path_exist so
|
1620
|
-
rescue
|
1620
|
+
rescue StandardError
|
1621
1621
|
puts "-" * 78
|
1622
1622
|
puts File.read File.join(@gemhome, "gems", "a-2", "Makefile")
|
1623
1623
|
puts "-" * 78
|
@@ -2021,7 +2021,7 @@ end
|
|
2021
2021
|
|
2022
2022
|
bin_env = get_bin_env
|
2023
2023
|
|
2024
|
-
assert_equal("#!#{bin_env} #{RbConfig::CONFIG[
|
2024
|
+
assert_equal("#!#{bin_env} #{RbConfig::CONFIG["ruby_install_name"]}",
|
2025
2025
|
shebang)
|
2026
2026
|
end
|
2027
2027
|
|
@@ -2498,7 +2498,7 @@ end
|
|
2498
2498
|
end
|
2499
2499
|
|
2500
2500
|
def mask
|
2501
|
-
|
2501
|
+
0o100755
|
2502
2502
|
end
|
2503
2503
|
|
2504
2504
|
def load_relative(value)
|
@@ -205,7 +205,8 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
205
205
|
|
206
206
|
tar.rewind
|
207
207
|
|
208
|
-
files
|
208
|
+
files = []
|
209
|
+
symlinks = []
|
209
210
|
|
210
211
|
Gem::Package::TarReader.new tar do |tar_io|
|
211
212
|
tar_io.each_entry do |entry|
|
@@ -441,11 +442,11 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
441
442
|
data_tgz = util_tar_gz {}
|
442
443
|
|
443
444
|
gem = util_tar do |tar|
|
444
|
-
tar.add_file "data.tar.gz",
|
445
|
+
tar.add_file "data.tar.gz", 0o644 do |io|
|
445
446
|
io.write data_tgz.string
|
446
447
|
end
|
447
448
|
|
448
|
-
tar.add_file "metadata.gz",
|
449
|
+
tar.add_file "metadata.gz", 0o644 do |io|
|
449
450
|
Zlib::GzipWriter.wrap io do |gzio|
|
450
451
|
gzio.write @spec.to_yaml
|
451
452
|
end
|
@@ -478,7 +479,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
478
479
|
extracted = File.join @destination, "lib/code.rb"
|
479
480
|
assert_path_exist extracted
|
480
481
|
|
481
|
-
mask =
|
482
|
+
mask = 0o100666 & (~File.umask)
|
482
483
|
|
483
484
|
assert_equal mask.to_s(8), File.stat(extracted).mode.to_s(8) unless
|
484
485
|
win_platform?
|
@@ -488,11 +489,11 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
488
489
|
data_tgz = util_tar_gz {}
|
489
490
|
|
490
491
|
gem = util_tar do |tar|
|
491
|
-
tar.add_file "data.tar.gz",
|
492
|
+
tar.add_file "data.tar.gz", 0o644 do |io|
|
492
493
|
io.write data_tgz.string
|
493
494
|
end
|
494
495
|
|
495
|
-
tar.add_file "metadata.gz",
|
496
|
+
tar.add_file "metadata.gz", 0o644 do |io|
|
496
497
|
Zlib::GzipWriter.wrap io do |gzio|
|
497
498
|
gzio.write @spec.to_yaml
|
498
499
|
end
|
@@ -522,14 +523,14 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
522
523
|
filepath = File.join @destination, "README.rdoc"
|
523
524
|
assert_path_exist filepath
|
524
525
|
|
525
|
-
assert_equal
|
526
|
+
assert_equal 0o104444, File.stat(filepath).mode
|
526
527
|
end
|
527
528
|
|
528
529
|
def test_extract_tar_gz_absolute
|
529
530
|
package = Gem::Package.new @gem
|
530
531
|
|
531
532
|
tgz_io = util_tar_gz do |tar|
|
532
|
-
tar.add_file "/absolute.rb",
|
533
|
+
tar.add_file "/absolute.rb", 0o644 do |io|
|
533
534
|
io.write "hi"
|
534
535
|
end
|
535
536
|
end
|
@@ -547,12 +548,12 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
547
548
|
package.verify
|
548
549
|
|
549
550
|
tgz_io = util_tar_gz do |tar|
|
550
|
-
tar.add_file "relative.rb",
|
551
|
+
tar.add_file "relative.rb", 0o644 do |io|
|
551
552
|
io.write "hi"
|
552
553
|
end
|
553
554
|
|
554
|
-
tar.mkdir "lib",
|
555
|
-
tar.add_symlink "lib/foo.rb", "../relative.rb",
|
555
|
+
tar.mkdir "lib", 0o755
|
556
|
+
tar.add_symlink "lib/foo.rb", "../relative.rb", 0o644
|
556
557
|
end
|
557
558
|
|
558
559
|
begin
|
@@ -604,8 +605,8 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
604
605
|
package.verify
|
605
606
|
|
606
607
|
tgz_io = util_tar_gz do |tar|
|
607
|
-
tar.mkdir "lib",
|
608
|
-
tar.add_symlink "lib/foo.rb", "../broken.rb",
|
608
|
+
tar.mkdir "lib", 0o755
|
609
|
+
tar.add_symlink "lib/foo.rb", "../broken.rb", 0o644
|
609
610
|
end
|
610
611
|
|
611
612
|
ui = Gem::MockGemUi.new
|
@@ -624,9 +625,9 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
624
625
|
package = Gem::Package.new @gem
|
625
626
|
|
626
627
|
tgz_io = util_tar_gz do |tar|
|
627
|
-
tar.mkdir "lib",
|
628
|
-
tar.add_symlink "lib/link", "../..",
|
629
|
-
tar.add_file "lib/link/outside.txt",
|
628
|
+
tar.mkdir "lib", 0o755
|
629
|
+
tar.add_symlink "lib/link", "../..", 0o644
|
630
|
+
tar.add_file "lib/link/outside.txt", 0o644 do |io|
|
630
631
|
io.write "hi"
|
631
632
|
end
|
632
633
|
end
|
@@ -692,11 +693,11 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
692
693
|
package = Gem::Package.new @gem
|
693
694
|
|
694
695
|
tgz_io = util_tar_gz do |tar|
|
695
|
-
tar.mkdir "lib",
|
696
|
-
tar.add_file "lib/foo.rb",
|
696
|
+
tar.mkdir "lib", 0o755
|
697
|
+
tar.add_file "lib/foo.rb", 0o644 do |io|
|
697
698
|
io.write "hi"
|
698
699
|
end
|
699
|
-
tar.mkdir "lib/foo",
|
700
|
+
tar.mkdir "lib/foo", 0o755
|
700
701
|
end
|
701
702
|
|
702
703
|
package.extract_tar_gz tgz_io, @destination
|
@@ -712,7 +713,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
712
713
|
package = Gem::Package.new @gem
|
713
714
|
|
714
715
|
tgz_io = util_tar_gz do |tar|
|
715
|
-
tar.add_file "./dot_slash.rb",
|
716
|
+
tar.add_file "./dot_slash.rb", 0o644 do |io|
|
716
717
|
io.write "hi"
|
717
718
|
end
|
718
719
|
end
|
@@ -727,7 +728,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
727
728
|
package = Gem::Package.new @gem
|
728
729
|
|
729
730
|
tgz_io = util_tar_gz do |tar|
|
730
|
-
tar.add_file ".dot_file.rb",
|
731
|
+
tar.add_file ".dot_file.rb", 0o644 do |io|
|
731
732
|
io.write "hi"
|
732
733
|
end
|
733
734
|
end
|
@@ -743,7 +744,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
743
744
|
package = Gem::Package.new @gem
|
744
745
|
|
745
746
|
tgz_io = util_tar_gz do |tar|
|
746
|
-
tar.add_file "foo/file.rb",
|
747
|
+
tar.add_file "foo/file.rb", 0o644 do |io|
|
747
748
|
io.write "hi"
|
748
749
|
end
|
749
750
|
end
|
@@ -857,7 +858,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
857
858
|
|
858
859
|
def test_verify_checksum_bad
|
859
860
|
data_tgz = util_tar_gz do |tar|
|
860
|
-
tar.add_file "lib/code.rb",
|
861
|
+
tar.add_file "lib/code.rb", 0o444 do |io|
|
861
862
|
io.write "# lib/code.rb"
|
862
863
|
end
|
863
864
|
end
|
@@ -867,11 +868,11 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
867
868
|
gem = util_tar do |tar|
|
868
869
|
metadata_gz = Gem::Util.gzip @spec.to_yaml
|
869
870
|
|
870
|
-
tar.add_file "metadata.gz",
|
871
|
+
tar.add_file "metadata.gz", 0o444 do |io|
|
871
872
|
io.write metadata_gz
|
872
873
|
end
|
873
874
|
|
874
|
-
tar.add_file "data.tar.gz",
|
875
|
+
tar.add_file "data.tar.gz", 0o444 do |io|
|
875
876
|
io.write data_tgz
|
876
877
|
end
|
877
878
|
|
@@ -881,7 +882,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
881
882
|
"metadata.gz" => "bogus",
|
882
883
|
},
|
883
884
|
}
|
884
|
-
tar.add_file "checksums.yaml.gz",
|
885
|
+
tar.add_file "checksums.yaml.gz", 0o444 do |io|
|
885
886
|
Zlib::GzipWriter.wrap io do |gz_io|
|
886
887
|
gz_io.write Psych.dump bogus_checksums
|
887
888
|
end
|
@@ -904,7 +905,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
904
905
|
|
905
906
|
def test_verify_checksum_missing
|
906
907
|
data_tgz = util_tar_gz do |tar|
|
907
|
-
tar.add_file "lib/code.rb",
|
908
|
+
tar.add_file "lib/code.rb", 0o444 do |io|
|
908
909
|
io.write "# lib/code.rb"
|
909
910
|
end
|
910
911
|
end
|
@@ -914,7 +915,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
914
915
|
gem = util_tar do |tar|
|
915
916
|
metadata_gz = Gem::Util.gzip @spec.to_yaml
|
916
917
|
|
917
|
-
tar.add_file "metadata.gz",
|
918
|
+
tar.add_file "metadata.gz", 0o444 do |io|
|
918
919
|
io.write metadata_gz
|
919
920
|
end
|
920
921
|
|
@@ -927,13 +928,13 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
927
928
|
},
|
928
929
|
}
|
929
930
|
|
930
|
-
tar.add_file "checksums.yaml.gz",
|
931
|
+
tar.add_file "checksums.yaml.gz", 0o444 do |io|
|
931
932
|
Zlib::GzipWriter.wrap io do |gz_io|
|
932
933
|
gz_io.write Psych.dump checksums
|
933
934
|
end
|
934
935
|
end
|
935
936
|
|
936
|
-
tar.add_file "data.tar.gz",
|
937
|
+
tar.add_file "data.tar.gz", 0o444 do |io|
|
937
938
|
io.write data_tgz
|
938
939
|
end
|
939
940
|
end
|
@@ -952,7 +953,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
952
953
|
tf = Tempfile.open "corrupt" do |io|
|
953
954
|
data = Gem::Util.gzip "a" * 10
|
954
955
|
io.write \
|
955
|
-
tar_file_header("metadata.gz", "\000x",
|
956
|
+
tar_file_header("metadata.gz", "\000x", 0o644, data.length, Time.now)
|
956
957
|
io.write data
|
957
958
|
io.rewind
|
958
959
|
|
@@ -1093,8 +1094,8 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
1093
1094
|
build.add_metadata gem
|
1094
1095
|
build.add_contents gem
|
1095
1096
|
|
1096
|
-
gem.add_file_simple "a.sig",
|
1097
|
-
gem.add_file_simple "a.sig",
|
1097
|
+
gem.add_file_simple "a.sig", 0o444, 0
|
1098
|
+
gem.add_file_simple "a.sig", 0o444, 0
|
1098
1099
|
end
|
1099
1100
|
end
|
1100
1101
|
|
@@ -1170,7 +1171,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
1170
1171
|
def key; "key"; end
|
1171
1172
|
def sign(*); "fake_sig"; end
|
1172
1173
|
end
|
1173
|
-
gem.add_file_signed "data2.tar.gz",
|
1174
|
+
gem.add_file_signed "data2.tar.gz", 0o444, fake_signer.new do |io|
|
1174
1175
|
io.write bogus_data
|
1175
1176
|
end
|
1176
1177
|
|
@@ -39,7 +39,7 @@ unless Gem.java_platform? # jruby can't require the simple_gem file
|
|
39
39
|
extracted = File.join @destination, "lib/foo.rb"
|
40
40
|
assert_path_exist extracted
|
41
41
|
|
42
|
-
mask =
|
42
|
+
mask = 0o100644 & (~File.umask)
|
43
43
|
|
44
44
|
assert_equal mask, File.stat(extracted).mode unless win_platform?
|
45
45
|
end
|
@@ -9,7 +9,7 @@ class TestGemPackageTarHeader < Gem::Package::TarTestCase
|
|
9
9
|
|
10
10
|
header = {
|
11
11
|
:name => "x",
|
12
|
-
:mode =>
|
12
|
+
:mode => 0o644,
|
13
13
|
:uid => 1000,
|
14
14
|
:gid => 10_000,
|
15
15
|
:size => 100,
|
@@ -44,7 +44,7 @@ class TestGemPackageTarHeader < Gem::Package::TarTestCase
|
|
44
44
|
assert_equal "group", @tar_header.gname, "gname"
|
45
45
|
assert_equal "link", @tar_header.linkname, "linkname"
|
46
46
|
assert_equal "ustar", @tar_header.magic, "magic"
|
47
|
-
assert_equal
|
47
|
+
assert_equal 0o644, @tar_header.mode, "mode"
|
48
48
|
assert_equal 12_345, @tar_header.mtime, "mtime"
|
49
49
|
assert_equal "x", @tar_header.name, "name"
|
50
50
|
assert_equal "y", @tar_header.prefix, "prefix"
|
@@ -199,7 +199,7 @@ tjmather\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
|
|
199
199
|
assert_equal 1_991_400_094, tar_header.gid
|
200
200
|
|
201
201
|
assert_equal "GeoIP2-City_20190528/", tar_header.name
|
202
|
-
assert_equal
|
202
|
+
assert_equal 0o755, tar_header.mode
|
203
203
|
assert_equal 0, tar_header.size
|
204
204
|
assert_equal 1_559_064_640, tar_header.mtime
|
205
205
|
assert_equal 6932, tar_header.checksum
|
@@ -29,7 +29,7 @@ class TestGemPackageTarReader < Gem::Package::TarTestCase
|
|
29
29
|
content = ("a".."z").to_a.join(" ")
|
30
30
|
|
31
31
|
str =
|
32
|
-
tar_file_header("lib/foo", "",
|
32
|
+
tar_file_header("lib/foo", "", 0o10644, content.size, Time.now) +
|
33
33
|
content + "\0" * (512 - content.size)
|
34
34
|
str << "\0" * 1024
|
35
35
|
|
@@ -90,7 +90,7 @@ class TestGemPackageTarReader < Gem::Package::TarTestCase
|
|
90
90
|
|
91
91
|
def test_read_in_gem_data
|
92
92
|
gem_tar = util_gem_data_tar do |tar|
|
93
|
-
tar.add_file "lib/code.rb",
|
93
|
+
tar.add_file "lib/code.rb", 0o444 do |io|
|
94
94
|
io.write "# lib/code.rb"
|
95
95
|
end
|
96
96
|
end
|
@@ -112,10 +112,10 @@ class TestGemPackageTarReader < Gem::Package::TarTestCase
|
|
112
112
|
|
113
113
|
def test_seek_in_gem_data
|
114
114
|
gem_tar = util_gem_data_tar do |tar|
|
115
|
-
tar.add_file "lib/code.rb",
|
115
|
+
tar.add_file "lib/code.rb", 0o444 do |io|
|
116
116
|
io.write "# lib/code.rb"
|
117
117
|
end
|
118
|
-
tar.add_file "lib/foo.rb",
|
118
|
+
tar.add_file "lib/foo.rb", 0o444 do |io|
|
119
119
|
io.write "# lib/foo.rb"
|
120
120
|
end
|
121
121
|
end
|
@@ -29,11 +29,11 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
|
|
29
29
|
|
30
30
|
def test_add_file
|
31
31
|
Time.stub :now, Time.at(1_458_518_157) do
|
32
|
-
@tar_writer.add_file "x",
|
32
|
+
@tar_writer.add_file "x", 0o644 do |f|
|
33
33
|
f.write "a" * 10
|
34
34
|
end
|
35
35
|
|
36
|
-
assert_headers_equal(tar_file_header("x", "",
|
36
|
+
assert_headers_equal(tar_file_header("x", "", 0o644, 10, Time.now),
|
37
37
|
@io.string[0, 512])
|
38
38
|
end
|
39
39
|
assert_equal "aaaaaaaaaa#{"\0" * 502}", @io.string[512, 512]
|
@@ -43,18 +43,18 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
|
|
43
43
|
def test_add_file_source_date_epoch
|
44
44
|
ENV["SOURCE_DATE_EPOCH"] = "123456789"
|
45
45
|
Time.stub :now, Time.at(1_458_518_157) do
|
46
|
-
@tar_writer.mkdir "foo",
|
46
|
+
@tar_writer.mkdir "foo", 0o644
|
47
47
|
|
48
|
-
assert_headers_equal tar_dir_header("foo", "",
|
48
|
+
assert_headers_equal tar_dir_header("foo", "", 0o644, Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc),
|
49
49
|
@io.string[0, 512]
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
53
53
|
def test_add_symlink
|
54
54
|
Time.stub :now, Time.at(1_458_518_157) do
|
55
|
-
@tar_writer.add_symlink "x", "y",
|
55
|
+
@tar_writer.add_symlink "x", "y", 0o644
|
56
56
|
|
57
|
-
assert_headers_equal(tar_symlink_header("x", "",
|
57
|
+
assert_headers_equal(tar_symlink_header("x", "", 0o644, Time.now, "y"),
|
58
58
|
@io.string[0, 512])
|
59
59
|
end
|
60
60
|
assert_equal 512, @io.pos
|
@@ -63,9 +63,9 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
|
|
63
63
|
def test_add_symlink_source_date_epoch
|
64
64
|
ENV["SOURCE_DATE_EPOCH"] = "123456789"
|
65
65
|
Time.stub :now, Time.at(1_458_518_157) do
|
66
|
-
@tar_writer.add_symlink "x", "y",
|
66
|
+
@tar_writer.add_symlink "x", "y", 0o644
|
67
67
|
|
68
|
-
assert_headers_equal(tar_symlink_header("x", "",
|
68
|
+
assert_headers_equal(tar_symlink_header("x", "", 0o644, Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc, "y"),
|
69
69
|
@io.string[0, 512])
|
70
70
|
end
|
71
71
|
end
|
@@ -74,7 +74,7 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
|
|
74
74
|
digest_algorithms = Digest::SHA1.new, Digest::SHA512.new
|
75
75
|
|
76
76
|
Time.stub :now, Time.at(1_458_518_157) do
|
77
|
-
digests = @tar_writer.add_file_digest "x",
|
77
|
+
digests = @tar_writer.add_file_digest "x", 0o644, digest_algorithms do |io|
|
78
78
|
io.write "a" * 10
|
79
79
|
end
|
80
80
|
|
@@ -86,7 +86,7 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
|
|
86
86
|
"e1cf14b0",
|
87
87
|
digests["SHA512"].hexdigest
|
88
88
|
|
89
|
-
assert_headers_equal(tar_file_header("x", "",
|
89
|
+
assert_headers_equal(tar_file_header("x", "", 0o644, 10, Time.now),
|
90
90
|
@io.string[0, 512])
|
91
91
|
end
|
92
92
|
assert_equal "aaaaaaaaaa#{"\0" * 502}", @io.string[512, 512]
|
@@ -97,7 +97,7 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
|
|
97
97
|
digest_algorithms = [Digest::SHA1.new, Digest::SHA512.new]
|
98
98
|
|
99
99
|
Time.stub :now, Time.at(1_458_518_157) do
|
100
|
-
digests = @tar_writer.add_file_digest "x",
|
100
|
+
digests = @tar_writer.add_file_digest "x", 0o644, digest_algorithms do |io|
|
101
101
|
io.write "a" * 10
|
102
102
|
end
|
103
103
|
|
@@ -109,7 +109,7 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
|
|
109
109
|
"e1cf14b0",
|
110
110
|
digests["SHA512"].hexdigest
|
111
111
|
|
112
|
-
assert_headers_equal(tar_file_header("x", "",
|
112
|
+
assert_headers_equal(tar_file_header("x", "", 0o644, 10, Time.now),
|
113
113
|
@io.string[0, 512])
|
114
114
|
end
|
115
115
|
assert_equal "aaaaaaaaaa#{"\0" * 502}", @io.string[512, 512]
|
@@ -122,11 +122,11 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
|
|
122
122
|
signer = Gem::Security::Signer.new PRIVATE_KEY, [PUBLIC_CERT]
|
123
123
|
|
124
124
|
Time.stub :now, Time.at(1_458_518_157) do
|
125
|
-
@tar_writer.add_file_signed "x",
|
125
|
+
@tar_writer.add_file_signed "x", 0o644, signer do |io|
|
126
126
|
io.write "a" * 10
|
127
127
|
end
|
128
128
|
|
129
|
-
assert_headers_equal(tar_file_header("x", "",
|
129
|
+
assert_headers_equal(tar_file_header("x", "", 0o644, 10, Time.now),
|
130
130
|
@io.string[0, 512])
|
131
131
|
|
132
132
|
assert_equal "aaaaaaaaaa#{"\0" * 502}", @io.string[512, 512]
|
@@ -136,7 +136,7 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
|
|
136
136
|
|
137
137
|
signature = signer.sign digest.digest
|
138
138
|
|
139
|
-
assert_headers_equal(tar_file_header("x.sig", "",
|
139
|
+
assert_headers_equal(tar_file_header("x.sig", "", 0o444, signature.length,
|
140
140
|
Time.now),
|
141
141
|
@io.string[1024, 512])
|
142
142
|
assert_equal "#{signature}#{"\0" * (512 - signature.length)}",
|
@@ -150,11 +150,11 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
|
|
150
150
|
signer = Gem::Security::Signer.new nil, nil
|
151
151
|
|
152
152
|
Time.stub :now, Time.at(1_458_518_157) do
|
153
|
-
@tar_writer.add_file_signed "x",
|
153
|
+
@tar_writer.add_file_signed "x", 0o644, signer do |io|
|
154
154
|
io.write "a" * 10
|
155
155
|
end
|
156
156
|
|
157
|
-
assert_headers_equal(tar_file_header("x", "",
|
157
|
+
assert_headers_equal(tar_file_header("x", "", 0o644, 10, Time.now),
|
158
158
|
@io.string[0, 512])
|
159
159
|
end
|
160
160
|
assert_equal "aaaaaaaaaa#{"\0" * 502}", @io.string[512, 512]
|
@@ -164,11 +164,11 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
|
|
164
164
|
|
165
165
|
def test_add_file_simple
|
166
166
|
Time.stub :now, Time.at(1_458_518_157) do
|
167
|
-
@tar_writer.add_file_simple "x",
|
167
|
+
@tar_writer.add_file_simple "x", 0o644, 10 do |io|
|
168
168
|
io.write "a" * 10
|
169
169
|
end
|
170
170
|
|
171
|
-
assert_headers_equal(tar_file_header("x", "",
|
171
|
+
assert_headers_equal(tar_file_header("x", "", 0o644, 10, Time.now),
|
172
172
|
@io.string[0, 512])
|
173
173
|
|
174
174
|
assert_equal "aaaaaaaaaa#{"\0" * 502}", @io.string[512, 512]
|
@@ -179,11 +179,11 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
|
|
179
179
|
def test_add_file_simple_source_date_epoch
|
180
180
|
ENV["SOURCE_DATE_EPOCH"] = "123456789"
|
181
181
|
Time.stub :now, Time.at(1_458_518_157) do
|
182
|
-
@tar_writer.add_file_simple "x",
|
182
|
+
@tar_writer.add_file_simple "x", 0o644, 10 do |io|
|
183
183
|
io.write "a" * 10
|
184
184
|
end
|
185
185
|
|
186
|
-
assert_headers_equal(tar_file_header("x", "",
|
186
|
+
assert_headers_equal(tar_file_header("x", "", 0o644, 10, Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc),
|
187
187
|
@io.string[0, 512])
|
188
188
|
end
|
189
189
|
end
|
@@ -248,9 +248,9 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
|
|
248
248
|
|
249
249
|
def test_mkdir
|
250
250
|
Time.stub :now, Time.at(1_458_518_157) do
|
251
|
-
@tar_writer.mkdir "foo",
|
251
|
+
@tar_writer.mkdir "foo", 0o644
|
252
252
|
|
253
|
-
assert_headers_equal tar_dir_header("foo", "",
|
253
|
+
assert_headers_equal tar_dir_header("foo", "", 0o644, Time.now),
|
254
254
|
@io.string[0, 512]
|
255
255
|
|
256
256
|
assert_equal 512, @io.pos
|
@@ -260,19 +260,19 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
|
|
260
260
|
def test_mkdir_source_date_epoch
|
261
261
|
ENV["SOURCE_DATE_EPOCH"] = "123456789"
|
262
262
|
Time.stub :now, Time.at(1_458_518_157) do
|
263
|
-
@tar_writer.mkdir "foo",
|
263
|
+
@tar_writer.mkdir "foo", 0o644
|
264
264
|
|
265
|
-
assert_headers_equal tar_dir_header("foo", "",
|
265
|
+
assert_headers_equal tar_dir_header("foo", "", 0o644, Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc),
|
266
266
|
@io.string[0, 512]
|
267
267
|
end
|
268
268
|
end
|
269
269
|
|
270
270
|
def test_split_name
|
271
271
|
assert_equal ["b" * 100, "a" * 155],
|
272
|
-
@tar_writer.split_name("#{
|
272
|
+
@tar_writer.split_name("#{"a" * 155}/#{"b" * 100}")
|
273
273
|
|
274
|
-
assert_equal ["#{
|
275
|
-
@tar_writer.split_name("#{
|
274
|
+
assert_equal ["#{"qwer/" * 19}bla", "a" * 151],
|
275
|
+
@tar_writer.split_name("#{"a" * 151}/#{"qwer/" * 19}bla")
|
276
276
|
names = [
|
277
277
|
([""] + ["123456789"] * 9 + ["1234567890"]).join("/"), # 101 bytes (several pieces)
|
278
278
|
(["123456789"] * 9 + ["1234567890"] + [""]).join("/"), # 101 bytes (several pieces)
|
@@ -100,7 +100,7 @@ class TestGemRDoc < Gem::TestCase
|
|
100
100
|
|
101
101
|
assert_equal @a.base_dir, e.directory
|
102
102
|
ensure
|
103
|
-
FileUtils.chmod(
|
103
|
+
FileUtils.chmod(0o755, @a.base_dir) if File.directory?(@a.base_dir)
|
104
104
|
end
|
105
105
|
|
106
106
|
def test_ri_installed?
|
@@ -130,7 +130,7 @@ class TestGemRDoc < Gem::TestCase
|
|
130
130
|
assert_equal @a.doc_dir, e.directory
|
131
131
|
ensure
|
132
132
|
if File.exist? @a.doc_dir
|
133
|
-
FileUtils.chmod
|
133
|
+
FileUtils.chmod 0o755, @a.doc_dir
|
134
134
|
FileUtils.rm_r @a.doc_dir
|
135
135
|
end
|
136
136
|
end
|
@@ -361,9 +361,13 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
361
361
|
FileUtils.mv @a1_gem, @tempdir
|
362
362
|
local_path = File.join @tempdir, @a1.file_name
|
363
363
|
inst = nil
|
364
|
-
FileUtils.chmod
|
365
|
-
|
366
|
-
|
364
|
+
FileUtils.chmod 0o555, @a1.cache_dir
|
365
|
+
begin
|
366
|
+
FileUtils.mkdir_p File.join(Gem.user_dir, "cache")
|
367
|
+
rescue StandardError
|
368
|
+
nil
|
369
|
+
end
|
370
|
+
FileUtils.chmod 0o555, File.join(Gem.user_dir, "cache")
|
367
371
|
|
368
372
|
Dir.chdir @tempdir do
|
369
373
|
inst = Gem::RemoteFetcher.fetcher
|
@@ -372,21 +376,21 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
372
376
|
assert_equal(File.join(@tempdir, @a1.file_name),
|
373
377
|
inst.download(@a1, local_path))
|
374
378
|
ensure
|
375
|
-
FileUtils.chmod
|
376
|
-
FileUtils.chmod
|
379
|
+
FileUtils.chmod 0o755, File.join(Gem.user_dir, "cache")
|
380
|
+
FileUtils.chmod 0o755, @a1.cache_dir
|
377
381
|
end
|
378
382
|
|
379
383
|
def test_download_read_only
|
380
|
-
FileUtils.chmod
|
381
|
-
FileUtils.chmod
|
384
|
+
FileUtils.chmod 0o555, @a1.cache_dir
|
385
|
+
FileUtils.chmod 0o555, @gemhome
|
382
386
|
|
383
387
|
fetcher = util_fuck_with_fetcher File.read(@a1_gem)
|
384
388
|
fetcher.download(@a1, "http://gems.example.com")
|
385
389
|
a1_cache_gem = File.join Gem.user_dir, "cache", @a1.file_name
|
386
390
|
assert File.exist? a1_cache_gem
|
387
391
|
ensure
|
388
|
-
FileUtils.chmod
|
389
|
-
FileUtils.chmod
|
392
|
+
FileUtils.chmod 0o755, @gemhome
|
393
|
+
FileUtils.chmod 0o755, @a1.cache_dir
|
390
394
|
end
|
391
395
|
end
|
392
396
|
|