rubygems-update 2.4.8 → 2.5.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rubygems-update might be problematic. Click here for more details.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/CODE_OF_CONDUCT.md +40 -0
- data/CVE-2015-3900.txt +40 -0
- data/History.txt +173 -2
- data/Manifest.txt +14 -1
- data/Rakefile +36 -1
- data/lib/rubygems.rb +32 -14
- data/lib/rubygems/basic_specification.rb +31 -9
- data/lib/rubygems/commands/dependency_command.rb +25 -15
- data/lib/rubygems/commands/environment_command.rb +2 -0
- data/lib/rubygems/commands/help_command.rb +0 -10
- data/lib/rubygems/commands/install_command.rb +1 -1
- data/lib/rubygems/commands/list_command.rb +1 -1
- data/lib/rubygems/commands/pristine_command.rb +11 -1
- data/lib/rubygems/commands/query_command.rb +1 -1
- data/lib/rubygems/commands/sources_command.rb +1 -1
- data/lib/rubygems/commands/update_command.rb +2 -2
- data/lib/rubygems/config_file.rb +4 -4
- data/lib/rubygems/core_ext/kernel_require.rb +2 -2
- data/lib/rubygems/dependency.rb +9 -6
- data/lib/rubygems/dependency_list.rb +3 -0
- data/lib/rubygems/ext/builder.rb +2 -0
- data/lib/rubygems/ext/ext_conf_builder.rb +6 -1
- data/lib/rubygems/indexer.rb +26 -91
- data/lib/rubygems/installer.rb +58 -26
- data/lib/rubygems/installer_test_case.rb +2 -2
- data/lib/rubygems/package.rb +18 -6
- data/lib/rubygems/package/old.rb +2 -2
- data/lib/rubygems/package/tar_reader/entry.rb +7 -1
- data/lib/rubygems/package/tar_test_case.rb +12 -3
- data/lib/rubygems/package/tar_writer.rb +19 -1
- data/lib/rubygems/platform.rb +3 -2
- data/lib/rubygems/rdoc.rb +1 -2
- data/lib/rubygems/remote_fetcher.rb +25 -6
- data/lib/rubygems/request/connection_pools.rb +8 -4
- data/lib/rubygems/request_set.rb +3 -4
- data/lib/rubygems/request_set/gem_dependency_api.rb +2 -2
- data/lib/rubygems/request_set/lockfile.rb +1 -1
- data/lib/rubygems/request_set/lockfile/parser.rb +54 -43
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +16 -13
- data/lib/rubygems/resolver.rb +47 -242
- data/lib/rubygems/resolver/activation_request.rb +2 -1
- data/lib/rubygems/resolver/conflict.rb +0 -1
- data/lib/rubygems/resolver/dependency_request.rb +4 -1
- data/lib/rubygems/resolver/git_specification.rb +1 -2
- data/lib/rubygems/resolver/molinillo.rb +1 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +5 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +266 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +69 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +3 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +99 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +63 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +430 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +43 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +51 -0
- data/lib/rubygems/resolver/specification.rb +1 -1
- data/lib/rubygems/specification.rb +256 -86
- data/lib/rubygems/stub_specification.rb +37 -29
- data/lib/rubygems/test_case.rb +65 -28
- data/lib/rubygems/test_utilities.rb +18 -18
- data/lib/rubygems/text.rb +0 -2
- data/lib/rubygems/uninstaller.rb +1 -1
- data/lib/rubygems/util.rb +4 -4
- data/lib/rubygems/util/licenses.rb +309 -0
- data/lib/rubygems/util/list.rb +9 -21
- data/lib/rubygems/version.rb +24 -14
- data/test/rubygems/simple_gem.rb +1 -1
- data/test/rubygems/test_config.rb +10 -1
- data/test/rubygems/test_gem.rb +58 -11
- data/test/rubygems/test_gem_available_set.rb +2 -1
- data/test/rubygems/test_gem_commands_cleanup_command.rb +6 -5
- data/test/rubygems/test_gem_commands_dependency_command.rb +9 -1
- data/test/rubygems/test_gem_commands_install_command.rb +17 -28
- data/test/rubygems/test_gem_commands_mirror.rb +0 -13
- data/test/rubygems/test_gem_commands_outdated_command.rb +2 -3
- data/test/rubygems/test_gem_commands_pristine_command.rb +33 -5
- data/test/rubygems/test_gem_commands_query_command.rb +123 -158
- data/test/rubygems/test_gem_commands_server_command.rb +2 -2
- data/test/rubygems/test_gem_commands_specification_command.rb +4 -4
- data/test/rubygems/test_gem_commands_stale_command.rb +2 -0
- data/test/rubygems/test_gem_commands_uninstall_command.rb +5 -4
- data/test/rubygems/test_gem_commands_unpack_command.rb +4 -6
- data/test/rubygems/test_gem_commands_update_command.rb +22 -52
- data/test/rubygems/test_gem_commands_which_command.rb +1 -0
- data/test/rubygems/test_gem_config_file.rb +1 -1
- data/test/rubygems/test_gem_dependency.rb +7 -3
- data/test/rubygems/test_gem_dependency_installer.rb +5 -5
- data/test/rubygems/test_gem_doctor.rb +1 -1
- data/test/rubygems/test_gem_ext_builder.rb +2 -0
- data/test/rubygems/test_gem_ext_configure_builder.rb +8 -4
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +25 -21
- data/test/rubygems/test_gem_indexer.rb +4 -4
- data/test/rubygems/test_gem_install_update_options.rb +2 -2
- data/test/rubygems/test_gem_installer.rb +32 -26
- data/test/rubygems/test_gem_package.rb +46 -1
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +8 -1
- data/test/rubygems/test_gem_package_tar_writer.rb +10 -1
- data/test/rubygems/test_gem_package_task.rb +5 -2
- data/test/rubygems/test_gem_platform.rb +11 -0
- data/test/rubygems/test_gem_remote_fetcher.rb +64 -3
- data/test/rubygems/test_gem_request.rb +1 -1
- data/test/rubygems/test_gem_request_connection_pools.rb +10 -1
- data/test/rubygems/test_gem_request_set.rb +5 -8
- data/test/rubygems/test_gem_request_set_lockfile.rb +2 -4
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +1 -1
- data/test/rubygems/test_gem_resolver.rb +12 -31
- data/test/rubygems/test_gem_resolver_git_specification.rb +1 -0
- data/test/rubygems/test_gem_resolver_installer_set.rb +7 -11
- data/test/rubygems/test_gem_resolver_lock_specification.rb +3 -2
- data/test/rubygems/test_gem_security_trust_dir.rb +2 -0
- data/test/rubygems/test_gem_server.rb +4 -0
- data/test/rubygems/test_gem_specification.rb +344 -61
- data/test/rubygems/test_gem_stream_ui.rb +6 -6
- data/test/rubygems/test_gem_stub_specification.rb +21 -6
- data/test/rubygems/test_gem_text.rb +2 -0
- data/test/rubygems/test_gem_uninstaller.rb +2 -1
- data/test/rubygems/test_gem_util.rb +8 -0
- data/test/rubygems/test_require.rb +156 -125
- data/util/generate_spdx_license_list.rb +21 -0
- data/util/update_bundled_ca_certificates.rb +2 -1
- metadata +42 -6
- metadata.gz.sig +0 -0
- data/lib/rubygems/util/stringio.rb +0 -34
@@ -48,11 +48,11 @@ class TestGemIndexer < Gem::TestCase
|
|
48
48
|
assert indexer.build_modern
|
49
49
|
end
|
50
50
|
|
51
|
-
def
|
51
|
+
def test_build_indices
|
52
52
|
@indexer.make_temp_directories
|
53
53
|
|
54
54
|
use_ui @ui do
|
55
|
-
@indexer.
|
55
|
+
@indexer.build_indices
|
56
56
|
end
|
57
57
|
|
58
58
|
specs_path = File.join @indexer.directory, "specs.#{@marshal_version}"
|
@@ -198,7 +198,7 @@ class TestGemIndexer < Gem::TestCase
|
|
198
198
|
assert_match %r%^Generating latest specs index$%, @ui.output
|
199
199
|
assert_match %r%^Generating prerelease specs index$%, @ui.output
|
200
200
|
assert_match %r%^Complete$%, @ui.output
|
201
|
-
assert_match %r%^Compressing
|
201
|
+
assert_match %r%^Compressing indices$%, @ui.output
|
202
202
|
|
203
203
|
assert_equal '', @ui.error
|
204
204
|
end
|
@@ -294,7 +294,7 @@ class TestGemIndexer < Gem::TestCase
|
|
294
294
|
|
295
295
|
sys_gem = util_spec 'systemgem', '1.0'
|
296
296
|
util_build_gem sys_gem
|
297
|
-
|
297
|
+
install_default_gems sys_gem
|
298
298
|
yield
|
299
299
|
util_remove_gem sys_gem
|
300
300
|
end
|
@@ -129,7 +129,7 @@ class TestGemInstallUpdateOptions < Gem::InstallerTestCase
|
|
129
129
|
|
130
130
|
assert @cmd.options[:user_install]
|
131
131
|
|
132
|
-
@installer = Gem::Installer.
|
132
|
+
@installer = Gem::Installer.at @gem, @cmd.options
|
133
133
|
@installer.install
|
134
134
|
assert_path_exists File.join(Gem.user_dir, 'gems')
|
135
135
|
assert_path_exists File.join(Gem.user_dir, 'gems', @spec.full_name)
|
@@ -149,7 +149,7 @@ class TestGemInstallUpdateOptions < Gem::InstallerTestCase
|
|
149
149
|
Gem.use_paths @gemhome, @userhome
|
150
150
|
|
151
151
|
assert_raises(Gem::FilePermissionError) do
|
152
|
-
Gem::Installer.
|
152
|
+
Gem::Installer.at(@gem, @cmd.options).install
|
153
153
|
end
|
154
154
|
end
|
155
155
|
ensure
|
@@ -36,7 +36,7 @@ class TestGemInstaller < Gem::InstallerTestCase
|
|
36
36
|
|
37
37
|
require 'rubygems'
|
38
38
|
|
39
|
-
version = \">= 0\"
|
39
|
+
version = \">= 0.a\"
|
40
40
|
|
41
41
|
if ARGV.first
|
42
42
|
str = ARGV.first
|
@@ -257,7 +257,7 @@ gem 'other', version
|
|
257
257
|
s.add_dependency 'garbage ~> 5'
|
258
258
|
end
|
259
259
|
|
260
|
-
installer = Gem::Installer.
|
260
|
+
installer = Gem::Installer.at a_gem
|
261
261
|
|
262
262
|
e = assert_raises Gem::InstallError do
|
263
263
|
installer.ensure_loadable_spec
|
@@ -275,7 +275,7 @@ gem 'other', version
|
|
275
275
|
end
|
276
276
|
|
277
277
|
policy = Gem::Security::HighSecurity
|
278
|
-
installer = Gem::Installer.
|
278
|
+
installer = Gem::Installer.at a_gem, :security_policy => policy
|
279
279
|
|
280
280
|
assert_raises Gem::Security::Exception do
|
281
281
|
installer.ensure_loadable_spec
|
@@ -322,7 +322,7 @@ gem 'other', version
|
|
322
322
|
:install_dir => "/non/existent"
|
323
323
|
}
|
324
324
|
|
325
|
-
inst = Gem::Installer.
|
325
|
+
inst = Gem::Installer.at '', options
|
326
326
|
|
327
327
|
Gem::Installer.path_warning = false
|
328
328
|
|
@@ -575,8 +575,8 @@ gem 'other', version
|
|
575
575
|
util_make_exec
|
576
576
|
one = @spec.dup
|
577
577
|
one.version = 1
|
578
|
+
@installer = Gem::Installer.for_spec spec
|
578
579
|
@installer.gem_dir = util_gem_dir one
|
579
|
-
@installer.spec = spec
|
580
580
|
|
581
581
|
@installer.generate_bin
|
582
582
|
|
@@ -672,14 +672,14 @@ gem 'other', version
|
|
672
672
|
util_build_gem spec
|
673
673
|
FileUtils.mv spec.cache_file, @tempdir
|
674
674
|
|
675
|
-
installer = Gem::Installer.
|
675
|
+
installer = Gem::Installer.at gem
|
676
676
|
|
677
677
|
assert_equal File.join(@gemhome, 'gems', spec.full_name), installer.gem_dir
|
678
678
|
assert_equal File.join(@gemhome, 'bin'), installer.bin_dir
|
679
679
|
end
|
680
680
|
|
681
681
|
def test_initialize_user_install
|
682
|
-
installer = Gem::Installer.
|
682
|
+
installer = Gem::Installer.at @gem, :user_install => true
|
683
683
|
|
684
684
|
assert_equal File.join(Gem.user_dir, 'gems', @spec.full_name),
|
685
685
|
installer.gem_dir
|
@@ -688,7 +688,7 @@ gem 'other', version
|
|
688
688
|
|
689
689
|
def test_initialize_user_install_bin_dir
|
690
690
|
installer =
|
691
|
-
Gem::Installer.
|
691
|
+
Gem::Installer.at @gem, :user_install => true, :bin_dir => @tempdir
|
692
692
|
|
693
693
|
assert_equal File.join(Gem.user_dir, 'gems', @spec.full_name),
|
694
694
|
installer.gem_dir
|
@@ -870,7 +870,7 @@ gem 'other', version
|
|
870
870
|
Gem::Package.build @spec
|
871
871
|
end
|
872
872
|
end
|
873
|
-
@installer = Gem::Installer.
|
873
|
+
@installer = Gem::Installer.at @gem
|
874
874
|
build_rake_in do
|
875
875
|
use_ui @ui do
|
876
876
|
assert_equal @spec, @installer.install
|
@@ -884,7 +884,7 @@ gem 'other', version
|
|
884
884
|
|
885
885
|
def test_install_force
|
886
886
|
use_ui @ui do
|
887
|
-
installer = Gem::Installer.
|
887
|
+
installer = Gem::Installer.at old_ruby_required, :force => true
|
888
888
|
installer.install
|
889
889
|
end
|
890
890
|
|
@@ -993,7 +993,7 @@ gem 'other', version
|
|
993
993
|
use_ui @ui do
|
994
994
|
path = Gem::Package.build @spec
|
995
995
|
|
996
|
-
@installer = Gem::Installer.
|
996
|
+
@installer = Gem::Installer.at path
|
997
997
|
@installer.install
|
998
998
|
end
|
999
999
|
|
@@ -1016,7 +1016,7 @@ gem 'other', version
|
|
1016
1016
|
use_ui @ui do
|
1017
1017
|
path = Gem::Package.build @spec
|
1018
1018
|
|
1019
|
-
installer = Gem::Installer.
|
1019
|
+
installer = Gem::Installer.at path, :install_dir => gemhome2
|
1020
1020
|
installer.install
|
1021
1021
|
end
|
1022
1022
|
|
@@ -1056,7 +1056,7 @@ gem 'other', version
|
|
1056
1056
|
use_ui @ui do
|
1057
1057
|
path = Gem::Package.build @spec
|
1058
1058
|
|
1059
|
-
@installer = Gem::Installer.
|
1059
|
+
@installer = Gem::Installer.at path
|
1060
1060
|
@installer.install
|
1061
1061
|
end
|
1062
1062
|
assert_path_exists File.join @spec.gem_dir, rb
|
@@ -1097,7 +1097,7 @@ gem 'other', version
|
|
1097
1097
|
use_ui @ui do
|
1098
1098
|
path = Gem::Package.build @spec
|
1099
1099
|
|
1100
|
-
@installer = Gem::Installer.
|
1100
|
+
@installer = Gem::Installer.at path
|
1101
1101
|
@installer.install
|
1102
1102
|
end
|
1103
1103
|
assert_path_exists so
|
@@ -1175,7 +1175,7 @@ gem 'other', version
|
|
1175
1175
|
# that it work everything out on it's own.
|
1176
1176
|
Gem::Specification.reset
|
1177
1177
|
|
1178
|
-
installer = Gem::Installer.
|
1178
|
+
installer = Gem::Installer.at gem, :install_dir => gemhome2
|
1179
1179
|
|
1180
1180
|
build_rake_in do
|
1181
1181
|
use_ui @ui do
|
@@ -1186,7 +1186,7 @@ gem 'other', version
|
|
1186
1186
|
|
1187
1187
|
def test_pre_install_checks_ruby_version
|
1188
1188
|
use_ui @ui do
|
1189
|
-
installer = Gem::Installer.
|
1189
|
+
installer = Gem::Installer.at old_ruby_required
|
1190
1190
|
e = assert_raises Gem::InstallError do
|
1191
1191
|
installer.pre_install_checks
|
1192
1192
|
end
|
@@ -1205,7 +1205,7 @@ gem 'other', version
|
|
1205
1205
|
gem = File.join(@gemhome, 'cache', spec.file_name)
|
1206
1206
|
|
1207
1207
|
use_ui @ui do
|
1208
|
-
@installer = Gem::Installer.
|
1208
|
+
@installer = Gem::Installer.at gem
|
1209
1209
|
e = assert_raises Gem::InstallError do
|
1210
1210
|
@installer.pre_install_checks
|
1211
1211
|
end
|
@@ -1231,7 +1231,7 @@ gem 'other', version
|
|
1231
1231
|
def test_process_options_build_root
|
1232
1232
|
build_root = File.join @tempdir, 'build_root'
|
1233
1233
|
|
1234
|
-
@installer = Gem::Installer.
|
1234
|
+
@installer = Gem::Installer.at @gem, :build_root => build_root
|
1235
1235
|
|
1236
1236
|
assert_equal Pathname(build_root), @installer.build_root
|
1237
1237
|
assert_equal File.join(build_root, @gemhome, 'bin'), @installer.bin_dir
|
@@ -1406,7 +1406,7 @@ gem 'other', version
|
|
1406
1406
|
end
|
1407
1407
|
|
1408
1408
|
def test_write_build_info_file_install_dir
|
1409
|
-
installer = Gem::Installer.
|
1409
|
+
installer = Gem::Installer.at @gem, :install_dir => "#{@gemhome}2"
|
1410
1410
|
|
1411
1411
|
installer.build_args = %w[
|
1412
1412
|
--with-libyaml-dir /usr/local/Cellar/libyaml/0.1.4
|
@@ -1426,8 +1426,7 @@ gem 'other', version
|
|
1426
1426
|
FileUtils.mv cache_file, gem
|
1427
1427
|
refute_path_exists cache_file
|
1428
1428
|
|
1429
|
-
installer = Gem::Installer.
|
1430
|
-
installer.spec = @spec
|
1429
|
+
installer = Gem::Installer.at gem
|
1431
1430
|
installer.gem_home = @gemhome
|
1432
1431
|
|
1433
1432
|
installer.write_cache_file
|
@@ -1439,7 +1438,7 @@ gem 'other', version
|
|
1439
1438
|
FileUtils.rm @spec.spec_file
|
1440
1439
|
refute_path_exists @spec.spec_file
|
1441
1440
|
|
1442
|
-
@installer
|
1441
|
+
@installer = Gem::Installer.for_spec @spec
|
1443
1442
|
@installer.gem_home = @gemhome
|
1444
1443
|
|
1445
1444
|
@installer.write_spec
|
@@ -1459,7 +1458,7 @@ gem 'other', version
|
|
1459
1458
|
|
1460
1459
|
@spec.files = %w[a.rb b.rb c.rb]
|
1461
1460
|
|
1462
|
-
@installer
|
1461
|
+
@installer = Gem::Installer.for_spec @spec
|
1463
1462
|
@installer.gem_home = @gemhome
|
1464
1463
|
|
1465
1464
|
@installer.write_spec
|
@@ -1474,6 +1473,13 @@ gem 'other', version
|
|
1474
1473
|
assert_match %r!/gemhome/gems/a-2$!, @installer.dir
|
1475
1474
|
end
|
1476
1475
|
|
1476
|
+
def test_default_gem_loaded_from
|
1477
|
+
spec = util_spec 'a'
|
1478
|
+
installer = Gem::Installer.for_spec spec, :install_as_default => true
|
1479
|
+
installer.install
|
1480
|
+
assert_predicate spec, :default_gem?
|
1481
|
+
end
|
1482
|
+
|
1477
1483
|
def test_default_gem
|
1478
1484
|
FileUtils.rm_f File.join(Gem.dir, 'specifications')
|
1479
1485
|
|
@@ -1490,10 +1496,10 @@ gem 'other', version
|
|
1490
1496
|
installed_exec = File.join util_inst_bindir, 'executable'
|
1491
1497
|
assert_path_exists installed_exec
|
1492
1498
|
|
1493
|
-
assert File.directory? File.join(Gem.
|
1494
|
-
assert File.directory? File.join(Gem.
|
1499
|
+
assert File.directory? File.join(Gem.default_dir, 'specifications')
|
1500
|
+
assert File.directory? File.join(Gem.default_dir, 'specifications', 'default')
|
1495
1501
|
|
1496
|
-
default_spec = eval File.read File.join(Gem.
|
1502
|
+
default_spec = eval File.read File.join(Gem.default_dir, 'specifications', 'default', 'a-2.gemspec')
|
1497
1503
|
assert_equal Gem::Version.new("2"), default_spec.version
|
1498
1504
|
assert_equal ['bin/executable'], default_spec.files
|
1499
1505
|
end
|
@@ -132,6 +132,37 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
132
132
|
assert_equal %w[lib/code.rb], files
|
133
133
|
end
|
134
134
|
|
135
|
+
def test_add_files_symlink
|
136
|
+
skip 'symlink not supported' if Gem.win_platform?
|
137
|
+
|
138
|
+
spec = Gem::Specification.new
|
139
|
+
spec.files = %w[lib/code.rb lib/code_sym.rb]
|
140
|
+
|
141
|
+
FileUtils.mkdir_p 'lib'
|
142
|
+
open 'lib/code.rb', 'w' do |io| io.write '# lib/code.rb' end
|
143
|
+
File.symlink('lib/code.rb', 'lib/code_sym.rb')
|
144
|
+
|
145
|
+
package = Gem::Package.new 'bogus.gem'
|
146
|
+
package.spec = spec
|
147
|
+
|
148
|
+
tar = util_tar do |tar_io|
|
149
|
+
package.add_files tar_io
|
150
|
+
end
|
151
|
+
|
152
|
+
tar.rewind
|
153
|
+
|
154
|
+
files, symlinks = [], []
|
155
|
+
|
156
|
+
Gem::Package::TarReader.new tar do |tar_io|
|
157
|
+
tar_io.each_entry do |entry|
|
158
|
+
(entry.symlink? ? symlinks : files) << entry.full_name
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
assert_equal %w[lib/code.rb], files
|
163
|
+
assert_equal %w[lib/code_sym.rb], symlinks
|
164
|
+
end
|
165
|
+
|
135
166
|
def test_build
|
136
167
|
spec = Gem::Specification.new 'build', '1'
|
137
168
|
spec.summary = 'build'
|
@@ -396,6 +427,21 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
396
427
|
"#{@destination} is not allowed", e.message)
|
397
428
|
end
|
398
429
|
|
430
|
+
def test_extract_tar_gz_symlink_absolute
|
431
|
+
package = Gem::Package.new @gem
|
432
|
+
|
433
|
+
tgz_io = util_tar_gz do |tar|
|
434
|
+
tar.add_symlink 'code.rb', '/absolute.rb', 0644
|
435
|
+
end
|
436
|
+
|
437
|
+
e = assert_raises Gem::Package::PathError do
|
438
|
+
package.extract_tar_gz tgz_io, @destination
|
439
|
+
end
|
440
|
+
|
441
|
+
assert_equal("installing into parent path /absolute.rb of " +
|
442
|
+
"#{@destination} is not allowed", e.message)
|
443
|
+
end
|
444
|
+
|
399
445
|
def test_extract_tar_gz_directory
|
400
446
|
package = Gem::Package.new @gem
|
401
447
|
|
@@ -821,4 +867,3 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|
821
867
|
end
|
822
868
|
|
823
869
|
end
|
824
|
-
|
@@ -92,6 +92,14 @@ class TestGemPackageTarReaderEntry < Gem::Package::TarTestCase
|
|
92
92
|
close_util_entry(dir_ent) if dir_ent
|
93
93
|
end
|
94
94
|
|
95
|
+
def test_symlink_eh
|
96
|
+
assert_equal false, @entry.symlink?
|
97
|
+
symlink_ent = util_symlink_entry
|
98
|
+
assert_equal true, symlink_ent.symlink?
|
99
|
+
ensure
|
100
|
+
close_util_entry(symlink_ent) if symlink_ent
|
101
|
+
end
|
102
|
+
|
95
103
|
def test_file_eh
|
96
104
|
assert_equal true, @entry.file?
|
97
105
|
dir_ent = util_dir_entry
|
@@ -131,4 +139,3 @@ class TestGemPackageTarReaderEntry < Gem::Package::TarTestCase
|
|
131
139
|
end
|
132
140
|
|
133
141
|
end
|
134
|
-
|
@@ -30,6 +30,16 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
|
|
30
30
|
assert_equal 1024, @io.pos
|
31
31
|
end
|
32
32
|
|
33
|
+
def test_add_symlink
|
34
|
+
Time.stub :now, Time.at(1458518157) do
|
35
|
+
@tar_writer.add_symlink 'x', 'y', 0644
|
36
|
+
|
37
|
+
assert_headers_equal(tar_symlink_header('x', '', 0644, Time.now, 'y'),
|
38
|
+
@io.string[0, 512])
|
39
|
+
end
|
40
|
+
assert_equal 512, @io.pos
|
41
|
+
end
|
42
|
+
|
33
43
|
def test_add_file_digest
|
34
44
|
digest_algorithms = Digest::SHA1, Digest::SHA512
|
35
45
|
|
@@ -251,4 +261,3 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
|
|
251
261
|
end
|
252
262
|
|
253
263
|
end
|
254
|
-
|
@@ -1,6 +1,9 @@
|
|
1
1
|
require 'rubygems/test_case'
|
2
2
|
require 'rubygems'
|
3
|
-
|
3
|
+
begin
|
4
|
+
require 'rubygems/package_task'
|
5
|
+
rescue LoadError
|
6
|
+
end
|
4
7
|
|
5
8
|
class TestGemPackageTask < Gem::TestCase
|
6
9
|
|
@@ -76,5 +79,5 @@ class TestGemPackageTask < Gem::TestCase
|
|
76
79
|
assert_equal 'pkg/nokogiri-1.5.0-java', pkg.package_dir_path
|
77
80
|
end
|
78
81
|
|
79
|
-
end
|
82
|
+
end if defined?(Rake::PackageTask)
|
80
83
|
|
@@ -190,6 +190,17 @@ class TestGemPlatform < Gem::TestCase
|
|
190
190
|
assert((x86_darwin8 === Gem::Platform.local), 'universal =~ x86')
|
191
191
|
end
|
192
192
|
|
193
|
+
def test_nil_cpu_arch_is_treated_as_universal
|
194
|
+
with_nil_arch = Gem::Platform.new [nil, 'mingw32']
|
195
|
+
with_uni_arch = Gem::Platform.new ['universal', 'mingw32']
|
196
|
+
with_x86_arch = Gem::Platform.new ['x86', 'mingw32']
|
197
|
+
|
198
|
+
assert((with_nil_arch === with_uni_arch), 'nil =~ universal')
|
199
|
+
assert((with_uni_arch === with_nil_arch), 'universal =~ nil')
|
200
|
+
assert((with_nil_arch === with_x86_arch), 'nil =~ x86')
|
201
|
+
assert((with_x86_arch === with_nil_arch), 'x86 =~ nil')
|
202
|
+
end
|
203
|
+
|
193
204
|
def test_equals3_cpu_arm
|
194
205
|
arm = Gem::Platform.new 'arm-linux'
|
195
206
|
armv5 = Gem::Platform.new 'armv5-linux'
|
@@ -77,8 +77,34 @@ gems:
|
|
77
77
|
|
78
78
|
DIR = File.expand_path(File.dirname(__FILE__))
|
79
79
|
|
80
|
+
# Generated via:
|
81
|
+
# x = OpenSSL::PKey::DH.new(2048) # wait a while...
|
82
|
+
# x.to_s => pem
|
83
|
+
# x.priv_key.to_s => hex for OpenSSL::BN.new
|
84
|
+
TEST_KEY_DH2048 = OpenSSL::PKey::DH.new <<-_end_of_pem_
|
85
|
+
-----BEGIN DH PARAMETERS-----
|
86
|
+
MIIBCAKCAQEA3Ze2EHSfYkZLUn557torAmjBgPsqzbodaRaGZtgK1gEU+9nNJaFV
|
87
|
+
G1JKhmGUiEDyIW7idsBpe4sX/Wqjnp48Lr8IeI/SlEzLdoGpf05iRYXC8Cm9o8aM
|
88
|
+
cfmVgoSEAo9YLBpzoji2jHkO7Q5IPt4zxbTdlmmGFLc/GO9q7LGHhC+rcMcNTGsM
|
89
|
+
49AnILNn49pq4Y72jSwdmvq4psHZwwFBbPwLdw6bLUDDCN90jfqvYt18muwUxDiN
|
90
|
+
NP0fuvVAIB158VnQ0liHSwcl6+9vE1mL0Jo/qEXQxl0+UdKDjaGfTsn6HIrwTnmJ
|
91
|
+
PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
92
|
+
-----END DH PARAMETERS-----
|
93
|
+
_end_of_pem_
|
94
|
+
|
95
|
+
TEST_KEY_DH2048.priv_key = OpenSSL::BN.new("108911488509734781344423639" \
|
96
|
+
"5585749502236089033416160524030987005037540379474123441273555416835" \
|
97
|
+
"4725688238369352738266590757370603937618499698665047757588998555345" \
|
98
|
+
"3446251978586372525530219375408331096098220027413238477359960428372" \
|
99
|
+
"0195464393332338164504352015535549496585792320286513563739305843396" \
|
100
|
+
"9294344974028713065472959376197728193162272314514335882399554394661" \
|
101
|
+
"5306385003430991221886779612878793446851681835397455333989268503748" \
|
102
|
+
"7862488679178398716189205737442996155432191656080664090596502674943" \
|
103
|
+
"7902481557157485795980326766117882761941455140582265347052939604724" \
|
104
|
+
"964857770053363840471912215799994973597613931991572884", 16)
|
105
|
+
|
80
106
|
def setup
|
81
|
-
@proxies = %w[http_proxy HTTP_PROXY http_proxy_user HTTP_PROXY_USER http_proxy_pass HTTP_PROXY_PASS no_proxy NO_PROXY]
|
107
|
+
@proxies = %w[https_proxy http_proxy HTTP_PROXY http_proxy_user HTTP_PROXY_USER http_proxy_pass HTTP_PROXY_PASS no_proxy NO_PROXY]
|
82
108
|
@old_proxies = @proxies.map {|k| ENV[k] }
|
83
109
|
@proxies.each {|k| ENV[k] = nil }
|
84
110
|
|
@@ -226,6 +252,31 @@ gems:
|
|
226
252
|
dns.verify
|
227
253
|
end
|
228
254
|
|
255
|
+
def test_api_endpoint_timeout_warning
|
256
|
+
uri = URI.parse "http://gems.example.com/foo"
|
257
|
+
|
258
|
+
dns = MiniTest::Mock.new
|
259
|
+
def dns.getresource arg, *rest
|
260
|
+
raise Resolv::ResolvError.new('timeout!')
|
261
|
+
end
|
262
|
+
|
263
|
+
fetch = Gem::RemoteFetcher.new nil, dns
|
264
|
+
begin
|
265
|
+
old_verbose, Gem.configuration.verbose = Gem.configuration.verbose, 1
|
266
|
+
endpoint = use_ui @ui do
|
267
|
+
fetch.api_endpoint(uri)
|
268
|
+
end
|
269
|
+
ensure
|
270
|
+
Gem.configuration.verbose = old_verbose
|
271
|
+
end
|
272
|
+
|
273
|
+
assert_equal uri, endpoint
|
274
|
+
|
275
|
+
assert_equal "Getting SRV record failed: timeout!\n", @ui.output
|
276
|
+
|
277
|
+
dns.verify
|
278
|
+
end
|
279
|
+
|
229
280
|
def test_cache_update_path
|
230
281
|
uri = URI 'http://example/file'
|
231
282
|
path = File.join @tempdir, 'file'
|
@@ -647,6 +698,14 @@ gems:
|
|
647
698
|
assert_equal "too many redirects (#{url})", e.message
|
648
699
|
end
|
649
700
|
|
701
|
+
def test_fetch_http_with_additional_headers
|
702
|
+
ENV["http_proxy"] = @proxy_uri
|
703
|
+
ENV["no_proxy"] = URI::parse(@server_uri).host
|
704
|
+
fetcher = Gem::RemoteFetcher.new nil, nil, {"X-Captain" => "murphy"}
|
705
|
+
@fetcher = fetcher
|
706
|
+
assert_equal "murphy", fetcher.fetch_path(@server_uri)
|
707
|
+
end
|
708
|
+
|
650
709
|
def test_fetch_s3
|
651
710
|
fetcher = Gem::RemoteFetcher.new nil
|
652
711
|
@fetcher = fetcher
|
@@ -898,7 +957,7 @@ gems:
|
|
898
957
|
server.mount_proc("/insecure_redirect") { |req, res|
|
899
958
|
res.set_redirect(WEBrick::HTTPStatus::MovedPermanently, req.query['to'])
|
900
959
|
}
|
901
|
-
server.ssl_context.tmp_dh_callback = proc {
|
960
|
+
server.ssl_context.tmp_dh_callback = proc { TEST_KEY_DH2048 }
|
902
961
|
t = Thread.new do
|
903
962
|
begin
|
904
963
|
server.start
|
@@ -933,7 +992,9 @@ gems:
|
|
933
992
|
)
|
934
993
|
s.mount_proc("/kill") { |req, res| s.shutdown }
|
935
994
|
s.mount_proc("/yaml") { |req, res|
|
936
|
-
if
|
995
|
+
if req["X-Captain"]
|
996
|
+
res.body = req["X-Captain"]
|
997
|
+
elsif @enable_yaml
|
937
998
|
res.body = data
|
938
999
|
res['Content-Type'] = 'text/plain'
|
939
1000
|
res['content-length'] = data.size
|