rubygems-update 3.0.0 → 3.0.9
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/.rubocop.yml +1 -0
- data/.travis.yml +2 -0
- data/CODE_OF_CONDUCT.md +10 -8
- data/CONTRIBUTING.md +7 -0
- data/History.txt +180 -0
- data/Manifest.txt +5 -3
- data/README.md +6 -0
- data/Rakefile +33 -7
- data/bundler/CHANGELOG.md +11 -0
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/rubygems_gem_installer.rb +7 -0
- data/bundler/lib/bundler/source/metadata.rb +2 -3
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/man/bundle.ronn +3 -0
- data/lib/rubygems/command_manager.rb +12 -4
- data/lib/rubygems/commands/build_command.rb +28 -13
- data/lib/rubygems/commands/owner_command.rb +6 -1
- data/lib/rubygems/commands/push_command.rb +2 -0
- data/lib/rubygems/commands/setup_command.rb +14 -16
- data/lib/rubygems/commands/uninstall_command.rb +16 -6
- data/lib/rubygems/commands/which_command.rb +1 -3
- data/lib/rubygems/defaults.rb +1 -8
- data/lib/rubygems/dependency.rb +1 -1
- data/lib/rubygems/dependency_installer.rb +1 -2
- data/lib/rubygems/dependency_list.rb +1 -1
- data/lib/rubygems/exceptions.rb +0 -4
- data/lib/rubygems/gemcutter_utilities.rb +14 -7
- data/lib/rubygems/install_update_options.rb +1 -1
- data/lib/rubygems/installer.rb +37 -15
- data/lib/rubygems/installer_test_case.rb +2 -2
- data/lib/rubygems/package/old.rb +1 -1
- data/lib/rubygems/package/tar_header.rb +11 -2
- data/lib/rubygems/package.rb +12 -2
- data/lib/rubygems/rdoc.rb +2 -2
- data/lib/rubygems/remote_fetcher.rb +15 -54
- data/lib/rubygems/request.rb +1 -1
- data/lib/rubygems/request_set/gem_dependency_api.rb +11 -10
- data/lib/rubygems/requirement.rb +16 -5
- data/lib/rubygems/resolver.rb +4 -1
- data/lib/rubygems/s3_uri_signer.rb +183 -0
- data/lib/rubygems/security_option.rb +0 -1
- data/lib/rubygems/specification.rb +21 -23
- data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
- data/lib/rubygems/stub_specification.rb +1 -2
- data/lib/rubygems/test_case.rb +23 -12
- data/lib/rubygems/uninstaller.rb +1 -1
- data/lib/rubygems/user_interaction.rb +4 -1
- data/lib/rubygems/util.rb +13 -1
- data/lib/rubygems.rb +8 -13
- data/rubygems-update.gemspec +1 -1
- data/test/rubygems/ca_cert.pem +74 -65
- data/test/rubygems/client.pem +103 -45
- data/test/rubygems/ssl_cert.pem +78 -17
- data/test/rubygems/ssl_key.pem +25 -13
- data/test/rubygems/test_bundled_ca.rb +8 -5
- data/test/rubygems/test_gem.rb +55 -13
- data/test/rubygems/test_gem_bundler_version_finder.rb +4 -0
- data/test/rubygems/test_gem_command_manager.rb +10 -0
- data/test/rubygems/test_gem_commands_build_command.rb +1 -0
- data/test/rubygems/test_gem_commands_push_command.rb +15 -0
- data/test/rubygems/test_gem_commands_setup_command.rb +11 -7
- data/test/rubygems/test_gem_commands_uninstall_command.rb +80 -1
- data/test/rubygems/test_gem_ext_cmake_builder.rb +1 -1
- data/test/rubygems/test_gem_indexer.rb +15 -8
- data/test/rubygems/test_gem_installer.rb +191 -22
- data/test/rubygems/test_gem_package.rb +37 -0
- data/test/rubygems/test_gem_package_tar_header.rb +41 -0
- data/test/rubygems/test_gem_package_tar_writer.rb +3 -0
- data/test/rubygems/test_gem_rdoc.rb +1 -135
- data/test/rubygems/test_gem_remote_fetcher.rb +133 -14
- data/test/rubygems/test_gem_request.rb +4 -4
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +80 -57
- data/test/rubygems/test_gem_requirement.rb +6 -0
- data/test/rubygems/test_gem_security_policy.rb +1 -1
- data/test/rubygems/test_gem_specification.rb +32 -0
- data/test/rubygems/test_gem_stream_ui.rb +2 -2
- data/test/rubygems/test_gem_text.rb +5 -0
- data/test/rubygems/test_gem_uninstaller.rb +21 -2
- data/test/rubygems/test_gem_util.rb +25 -0
- data/util/ci +6 -1
- data/util/cops/deprecations.rb +52 -0
- data/util/create_certs.sh +27 -0
- data/util/create_encrypted_key.rb +4 -4
- data/util/update_bundled_ca_certificates.rb +1 -3
- metadata +12 -10
- data/lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
- data/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
- /data/lib/rubygems/ssl_certs/{index.rubygems.org → rubygems.org}/GlobalSignRootCA.pem +0 -0
data/rubygems-update.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "rubygems-update"
|
5
|
-
s.version = "3.0.
|
5
|
+
s.version = "3.0.9"
|
6
6
|
s.authors = ["Jim Weirich", "Chad Fowler", "Eric Hodel", "Luis Lavena", "Aaron Patterson", "Samuel Giddins", "André Arko", "Evan Phoenix", "Hiroshi SHIBATA"]
|
7
7
|
s.email = ["", "", "drbrain@segment7.net", "luislavena@gmail.com", "aaron@tenderlovemaking.com", "segiddins@segiddins.me", "andre@arko.net", "evan@phx.io", "hsbt@ruby-lang.org"]
|
8
8
|
|
data/test/rubygems/ca_cert.pem
CHANGED
@@ -1,68 +1,77 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
rT8Cq2Y+G2yA/L1EMRvvxwFBqxavqaqHl/6rwsIBFlB3zbqGA/0oec6MAVnYynq4
|
40
|
-
c4AcHTjx3bQ/S4r2sNTZq0DH4SYbQzIobx/YW8PjQUJt8KQdKMcwwi7arHP7A/Ha
|
41
|
-
LKu8eIC2nsUBnP4NhkYSGhbmpJK+PFD0FVtD0ZIRlY/wsnaZNjWWcnWF1/FNuQ4H
|
42
|
-
ySjIblqVQkPuzebv3Ror6ZnVDukn96Mg7kP4u6zgxOeqlJGRe1M949SS9Vudjl8X
|
43
|
-
SF4aZUUB9pQGhsqQJVqaz2OlhGOp9D0q54xko/rekjAIcuDjl1mdX4F2WRrzpUmZ
|
44
|
-
uY/bPeOBYiVsOYVe
|
45
|
-
-----END CERTIFICATE-----
|
1
|
+
Certificate:
|
2
|
+
Data:
|
3
|
+
Version: 3 (0x2)
|
4
|
+
Serial Number: 0 (0x0)
|
5
|
+
Signature Algorithm: sha256WithRSAEncryption
|
6
|
+
Issuer: C=JP, ST=Tokyo, O=RubyGemsTest, CN=CA
|
7
|
+
Validity
|
8
|
+
Not Before: Jan 1 00:00:00 2009 GMT
|
9
|
+
Not After : Dec 31 23:59:59 2049 GMT
|
10
|
+
Subject: C=JP, ST=Tokyo, O=RubyGemsTest, CN=CA
|
11
|
+
Subject Public Key Info:
|
12
|
+
Public Key Algorithm: rsaEncryption
|
13
|
+
RSA Public-Key: (2048 bit)
|
14
|
+
Modulus:
|
15
|
+
00:c8:19:2c:5a:1d:4d:2a:65:1d:9a:0b:d6:3a:5c:
|
16
|
+
5f:54:90:ac:17:6f:58:18:8f:e6:0f:33:36:ca:a0:
|
17
|
+
92:02:b8:49:85:96:e9:74:16:14:40:67:98:4a:1f:
|
18
|
+
4d:1c:d8:0b:c4:4e:f8:78:0a:68:70:39:d8:66:64:
|
19
|
+
c6:d5:ca:49:e9:02:c7:1a:1c:03:ba:a1:85:68:0a:
|
20
|
+
03:05:27:b5:7f:97:21:94:20:f3:fe:ea:2e:f5:2e:
|
21
|
+
99:34:6b:e0:e7:96:ca:51:4e:4d:40:48:09:d6:5f:
|
22
|
+
64:7b:e5:df:eb:3d:44:bf:42:25:f7:84:c7:2d:22:
|
23
|
+
e0:7f:00:37:c6:c3:16:75:75:37:6a:e5:56:da:1c:
|
24
|
+
77:37:3c:00:d3:1f:f4:9d:3b:27:08:ff:cd:cf:1e:
|
25
|
+
60:74:65:90:c2:59:b4:12:3e:a0:7f:22:47:87:ff:
|
26
|
+
52:f3:47:39:d1:91:02:1c:bb:8c:c9:20:1f:00:db:
|
27
|
+
d1:3a:b0:e0:ba:ee:55:05:8f:1a:f8:1e:dd:6d:83:
|
28
|
+
1c:1d:18:01:44:92:27:22:f1:2a:07:fe:43:83:08:
|
29
|
+
82:d3:2b:f1:ec:b1:68:b3:f8:94:1b:81:29:54:01:
|
30
|
+
56:12:54:66:ba:60:e7:5c:27:04:4d:a3:61:e3:f9:
|
31
|
+
8f:86:53:0b:83:eb:1f:1d:89:0c:83:66:88:c8:50:
|
32
|
+
8d:c5
|
33
|
+
Exponent: 65537 (0x10001)
|
34
|
+
X509v3 extensions:
|
35
|
+
X509v3 Subject Key Identifier:
|
36
|
+
D6:DB:87:AD:D3:45:FC:D4:8D:6B:2B:97:F4:CF:95:08:B6:FA:62:A4
|
37
|
+
X509v3 Authority Key Identifier:
|
38
|
+
keyid:D6:DB:87:AD:D3:45:FC:D4:8D:6B:2B:97:F4:CF:95:08:B6:FA:62:A4
|
46
39
|
|
40
|
+
X509v3 Basic Constraints: critical
|
41
|
+
CA:TRUE
|
42
|
+
Signature Algorithm: sha256WithRSAEncryption
|
43
|
+
06:92:f7:9a:0f:40:da:1a:7f:9f:0c:9e:04:37:4d:be:a4:1e:
|
44
|
+
86:65:b3:4a:be:87:13:a1:e4:6b:3b:d6:58:9d:ca:f8:ba:6d:
|
45
|
+
e4:dd:de:c5:e3:a2:ec:ef:32:2d:c0:06:01:3a:d5:81:5a:e1:
|
46
|
+
e4:f7:5f:68:67:ea:cd:28:90:b1:9c:82:d3:4e:00:51:b6:eb:
|
47
|
+
d5:8d:ec:ab:c3:18:b2:8b:8d:5b:63:6d:f8:f5:40:c6:c6:7e:
|
48
|
+
72:7b:ed:98:c5:5e:24:b9:ad:4f:5b:8f:1d:53:a3:d7:6a:4f:
|
49
|
+
07:2e:6a:b6:63:5c:dc:05:22:ac:77:af:b0:72:9d:39:6f:77:
|
50
|
+
9c:45:8b:ad:de:e8:bf:6a:b5:87:0b:58:47:af:11:1a:9e:84:
|
51
|
+
25:21:68:48:2a:b3:3c:5a:97:54:20:03:bd:87:34:dd:db:24:
|
52
|
+
a6:c7:50:e9:6c:87:55:f2:e5:33:9c:83:8f:8c:9e:f3:3a:38:
|
53
|
+
a0:92:a1:a7:c4:89:31:bd:33:83:11:dd:ad:bb:e0:47:19:bb:
|
54
|
+
62:6c:49:58:b3:13:12:c3:d0:dd:02:5f:6f:4f:13:07:6d:aa:
|
55
|
+
7b:2c:46:5a:74:52:6d:13:10:9c:f7:3d:5d:84:5b:b8:5b:a9:
|
56
|
+
c5:ae:56:4b:9a:8c:e2:fd:7f:55:80:cb:b0:2d:56:d7:a4:3c:
|
57
|
+
cf:3c:b2:ff
|
47
58
|
-----BEGIN CERTIFICATE-----
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
OgBdWwDeSClwhrTJni4d30dbq+eNMByIZ7QNGBQivpFzDxeNV/2UBrTU0CilKG5Q
|
67
|
-
j7ZwknfKeA4xUTd8TMK3vKab5JJCfjbXOTHZQsYUcEEGSjOMS8/YVQs=
|
59
|
+
MIIDUDCCAjigAwIBAgIBADANBgkqhkiG9w0BAQsFADBBMQswCQYDVQQGEwJKUDEO
|
60
|
+
MAwGA1UECAwFVG9reW8xFTATBgNVBAoMDFJ1YnlHZW1zVGVzdDELMAkGA1UEAwwC
|
61
|
+
Q0EwHhcNMDkwMTAxMDAwMDAwWhcNNDkxMjMxMjM1OTU5WjBBMQswCQYDVQQGEwJK
|
62
|
+
UDEOMAwGA1UECAwFVG9reW8xFTATBgNVBAoMDFJ1YnlHZW1zVGVzdDELMAkGA1UE
|
63
|
+
AwwCQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIGSxaHU0qZR2a
|
64
|
+
C9Y6XF9UkKwXb1gYj+YPMzbKoJICuEmFlul0FhRAZ5hKH00c2AvETvh4CmhwOdhm
|
65
|
+
ZMbVyknpAscaHAO6oYVoCgMFJ7V/lyGUIPP+6i71Lpk0a+DnlspRTk1ASAnWX2R7
|
66
|
+
5d/rPUS/QiX3hMctIuB/ADfGwxZ1dTdq5VbaHHc3PADTH/SdOycI/83PHmB0ZZDC
|
67
|
+
WbQSPqB/IkeH/1LzRznRkQIcu4zJIB8A29E6sOC67lUFjxr4Ht1tgxwdGAFEkici
|
68
|
+
8SoH/kODCILTK/HssWiz+JQbgSlUAVYSVGa6YOdcJwRNo2Hj+Y+GUwuD6x8diQyD
|
69
|
+
ZojIUI3FAgMBAAGjUzBRMB0GA1UdDgQWBBTW24et00X81I1rK5f0z5UItvpipDAf
|
70
|
+
BgNVHSMEGDAWgBTW24et00X81I1rK5f0z5UItvpipDAPBgNVHRMBAf8EBTADAQH/
|
71
|
+
MA0GCSqGSIb3DQEBCwUAA4IBAQAGkveaD0DaGn+fDJ4EN02+pB6GZbNKvocToeRr
|
72
|
+
O9ZYncr4um3k3d7F46Ls7zItwAYBOtWBWuHk919oZ+rNKJCxnILTTgBRtuvVjeyr
|
73
|
+
wxiyi41bY2349UDGxn5ye+2YxV4kua1PW48dU6PXak8HLmq2Y1zcBSKsd6+wcp05
|
74
|
+
b3ecRYut3ui/arWHC1hHrxEanoQlIWhIKrM8WpdUIAO9hzTd2ySmx1DpbIdV8uUz
|
75
|
+
nIOPjJ7zOjigkqGnxIkxvTODEd2tu+BHGbtibElYsxMSw9DdAl9vTxMHbap7LEZa
|
76
|
+
dFJtExCc9z1dhFu4W6nFrlZLmozi/X9VgMuwLVbXpDzPPLL/
|
68
77
|
-----END CERTIFICATE-----
|
data/test/rubygems/client.pem
CHANGED
@@ -1,49 +1,107 @@
|
|
1
|
+
Certificate:
|
2
|
+
Data:
|
3
|
+
Version: 3 (0x2)
|
4
|
+
Serial Number: 2 (0x2)
|
5
|
+
Signature Algorithm: sha256WithRSAEncryption
|
6
|
+
Issuer: C=JP, ST=Tokyo, O=RubyGemsTest, CN=CA
|
7
|
+
Validity
|
8
|
+
Not Before: Jan 1 00:00:00 2009 GMT
|
9
|
+
Not After : Dec 31 23:59:59 2049 GMT
|
10
|
+
Subject: C=JP, ST=Tokyo, O=RubyGemsTest, CN=client
|
11
|
+
Subject Public Key Info:
|
12
|
+
Public Key Algorithm: rsaEncryption
|
13
|
+
RSA Public-Key: (2048 bit)
|
14
|
+
Modulus:
|
15
|
+
00:c7:87:4a:f4:77:32:54:0e:56:0a:80:04:ac:b5:
|
16
|
+
71:b6:29:9f:c6:aa:f5:9b:3b:75:0a:c2:55:2c:cf:
|
17
|
+
34:c8:78:b7:38:ed:af:48:7d:7e:6c:4c:39:d8:0f:
|
18
|
+
cf:fc:ba:f5:e0:50:47:a0:76:72:cf:c7:de:91:a6:
|
19
|
+
1a:99:8b:5f:6f:0c:06:fc:f1:78:6b:0f:c5:bc:91:
|
20
|
+
cc:91:f0:85:05:5d:66:d3:cb:ac:54:a1:bc:9b:6c:
|
21
|
+
e8:17:f2:17:20:b8:b0:b2:03:cc:9d:a6:8e:c0:33:
|
22
|
+
6c:8b:5f:ef:1a:f6:38:6d:80:3f:4d:b5:e3:a5:a4:
|
23
|
+
f1:86:15:76:62:8b:6c:9d:fa:24:59:32:8f:60:b0:
|
24
|
+
80:f4:22:a2:68:57:13:aa:60:e4:cd:01:34:87:76:
|
25
|
+
2a:15:ca:86:9b:b7:aa:b5:66:fd:72:d8:35:86:7e:
|
26
|
+
c8:1d:a1:71:71:85:ac:65:64:c2:ea:19:52:7b:34:
|
27
|
+
1e:12:c4:87:8f:75:d7:65:35:85:dd:5a:33:5d:2c:
|
28
|
+
31:f8:2f:b4:84:a7:b6:56:56:2b:e1:9c:c9:c8:f9:
|
29
|
+
41:18:40:19:d9:bb:d4:3c:0d:c4:93:dc:b8:d1:99:
|
30
|
+
44:d0:3d:a2:de:de:29:7f:d6:0c:a8:07:df:bc:ed:
|
31
|
+
66:5b:aa:cc:64:44:b8:79:49:ed:48:77:88:e2:d1:
|
32
|
+
94:b9
|
33
|
+
Exponent: 65537 (0x10001)
|
34
|
+
X509v3 extensions:
|
35
|
+
X509v3 Basic Constraints:
|
36
|
+
CA:FALSE
|
37
|
+
Netscape Comment:
|
38
|
+
OpenSSL Generated Certificate
|
39
|
+
X509v3 Subject Key Identifier:
|
40
|
+
EF:5A:B6:46:3A:44:5F:0F:E4:F9:E0:6B:B2:C8:45:8D:07:0D:70:15
|
41
|
+
X509v3 Authority Key Identifier:
|
42
|
+
keyid:D6:DB:87:AD:D3:45:FC:D4:8D:6B:2B:97:F4:CF:95:08:B6:FA:62:A4
|
43
|
+
|
44
|
+
Signature Algorithm: sha256WithRSAEncryption
|
45
|
+
55:b5:5a:51:cd:0b:2a:81:10:e6:d1:d9:d6:6c:78:99:9b:01:
|
46
|
+
18:e7:91:32:89:6c:fd:3b:eb:c0:03:82:f8:5c:e2:19:c1:04:
|
47
|
+
5d:37:10:5b:97:0b:be:76:8b:98:71:d4:63:68:8c:0e:61:c9:
|
48
|
+
ec:3d:cf:ed:01:57:9f:9b:53:07:27:1a:7e:20:f3:8a:13:8c:
|
49
|
+
4f:30:bd:e6:a0:eb:d7:2c:a1:95:35:3f:a6:53:c9:00:11:f9:
|
50
|
+
f6:b3:9d:53:e4:b5:71:33:f1:dc:86:47:94:6f:a9:64:01:d4:
|
51
|
+
c5:1b:7c:95:0a:02:0e:6f:d1:70:94:5a:5f:7b:ac:77:f7:56:
|
52
|
+
35:6b:ad:a2:e2:fc:74:91:1e:c3:46:fc:32:01:19:a1:a5:27:
|
53
|
+
f3:31:14:79:86:7c:4d:9a:83:7c:28:03:9f:ac:3c:8c:e4:d9:
|
54
|
+
c8:b0:4e:a3:fe:75:cd:a9:8e:34:57:3b:6b:14:d6:df:35:42:
|
55
|
+
7b:c9:3d:88:0d:ea:5f:1e:c6:5f:80:0e:a5:b9:bf:25:06:ac:
|
56
|
+
ac:38:7f:cc:f9:a5:9e:68:cc:08:77:1e:de:45:0d:91:e5:38:
|
57
|
+
d2:b3:62:ea:03:ec:3c:18:9f:16:ec:43:21:30:7a:a7:8b:42:
|
58
|
+
c6:cb:e4:a8:ac:0b:15:82:a5:9c:93:b2:2c:20:1f:d2:de:e1:
|
59
|
+
cf:c0:74:bc
|
1
60
|
-----BEGIN CERTIFICATE-----
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
+
|
8
|
-
|
9
|
-
|
10
|
-
+
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
61
|
+
MIIDfDCCAmSgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBBMQswCQYDVQQGEwJKUDEO
|
62
|
+
MAwGA1UECAwFVG9reW8xFTATBgNVBAoMDFJ1YnlHZW1zVGVzdDELMAkGA1UEAwwC
|
63
|
+
Q0EwHhcNMDkwMTAxMDAwMDAwWhcNNDkxMjMxMjM1OTU5WjBFMQswCQYDVQQGEwJK
|
64
|
+
UDEOMAwGA1UECAwFVG9reW8xFTATBgNVBAoMDFJ1YnlHZW1zVGVzdDEPMA0GA1UE
|
65
|
+
AwwGY2xpZW50MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx4dK9Hcy
|
66
|
+
VA5WCoAErLVxtimfxqr1mzt1CsJVLM80yHi3OO2vSH1+bEw52A/P/Lr14FBHoHZy
|
67
|
+
z8fekaYamYtfbwwG/PF4aw/FvJHMkfCFBV1m08usVKG8m2zoF/IXILiwsgPMnaaO
|
68
|
+
wDNsi1/vGvY4bYA/TbXjpaTxhhV2YotsnfokWTKPYLCA9CKiaFcTqmDkzQE0h3Yq
|
69
|
+
FcqGm7eqtWb9ctg1hn7IHaFxcYWsZWTC6hlSezQeEsSHj3XXZTWF3VozXSwx+C+0
|
70
|
+
hKe2VlYr4ZzJyPlBGEAZ2bvUPA3Ek9y40ZlE0D2i3t4pf9YMqAffvO1mW6rMZES4
|
71
|
+
eUntSHeI4tGUuQIDAQABo3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1P
|
72
|
+
cGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU71q2RjpEXw/k
|
73
|
+
+eBrsshFjQcNcBUwHwYDVR0jBBgwFoAU1tuHrdNF/NSNayuX9M+VCLb6YqQwDQYJ
|
74
|
+
KoZIhvcNAQELBQADggEBAFW1WlHNCyqBEObR2dZseJmbARjnkTKJbP0768ADgvhc
|
75
|
+
4hnBBF03EFuXC752i5hx1GNojA5hyew9z+0BV5+bUwcnGn4g84oTjE8wveag69cs
|
76
|
+
oZU1P6ZTyQAR+faznVPktXEz8dyGR5RvqWQB1MUbfJUKAg5v0XCUWl97rHf3VjVr
|
77
|
+
raLi/HSRHsNG/DIBGaGlJ/MxFHmGfE2ag3woA5+sPIzk2ciwTqP+dc2pjjRXO2sU
|
78
|
+
1t81QnvJPYgN6l8exl+ADqW5vyUGrKw4f8z5pZ5ozAh3Ht5FDZHlONKzYuoD7DwY
|
79
|
+
nxbsQyEweqeLQsbL5KisCxWCpZyTsiwgH9Le4c/AdLw=
|
21
80
|
-----END CERTIFICATE-----
|
22
|
-
|
23
81
|
-----BEGIN RSA PRIVATE KEY-----
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
82
|
+
MIIEogIBAAKCAQEAx4dK9HcyVA5WCoAErLVxtimfxqr1mzt1CsJVLM80yHi3OO2v
|
83
|
+
SH1+bEw52A/P/Lr14FBHoHZyz8fekaYamYtfbwwG/PF4aw/FvJHMkfCFBV1m08us
|
84
|
+
VKG8m2zoF/IXILiwsgPMnaaOwDNsi1/vGvY4bYA/TbXjpaTxhhV2YotsnfokWTKP
|
85
|
+
YLCA9CKiaFcTqmDkzQE0h3YqFcqGm7eqtWb9ctg1hn7IHaFxcYWsZWTC6hlSezQe
|
86
|
+
EsSHj3XXZTWF3VozXSwx+C+0hKe2VlYr4ZzJyPlBGEAZ2bvUPA3Ek9y40ZlE0D2i
|
87
|
+
3t4pf9YMqAffvO1mW6rMZES4eUntSHeI4tGUuQIDAQABAoIBAHbfhuuQ3D4x8Fb/
|
88
|
+
IEnZK+8Qa22MSxl52ehYETDKHjNVoCtdiDGS+rAA1fGAsjRrGrPSgGn8R7i85kA2
|
89
|
+
CuDxpSDetIccQdbfJbqLzqof9tBUbj++t2QQm/KpdrlVdSv8fOEB3HUMVz3xJTkA
|
90
|
+
Jc8VZFbwskZVGFSGqZJt1QMu975By8mrNBiQ92dpWUwH6bcJ2rL+GgpW8LkosAtW
|
91
|
+
+bqAH86je2utErCStHTBMq459JIcef+dZxQ1iNALny+Q54MIsFbh21TbUf+mPsBK
|
92
|
+
B5Pe+RnlEw9uFmFH0gQybmZBIB/IDnsDj/+L0gRrSp6nYaQBD2Gw2jPJQL0PEu0s
|
93
|
+
nS1B4tECgYEA+E1z73eA35jBvDg/CI4mcL/f17xRCW9YsaeXTqEDMSi27b5OSgdP
|
94
|
+
0ETl3xreVgKGeDHygyaaJ6MR7uoPRPJhZR1ifrhWKoyPLuD55rwGIvKIbAWXVj7/
|
95
|
+
AvcY+qligVcK2dTJjczh6Tv8/XVYEPrfg4QdDlg9rodAlNJGofaX0WUCgYEAzbbD
|
96
|
+
8Yw/KbX1bSN6TtHoAAIVd/y2a4TEgHxOOOM5LAQ98fgP4L7njse8CBFUCH9RXYIS
|
97
|
+
lWyT7aHxykK/32wsd/6CfP1IlNcOSrBe5nA0b1m9piT6K9nZd7NMv1DpznaZ/roO
|
98
|
+
6jPxXrtQAgAC4jPCehH23t8SqP+abBIWvTlZisUCgYB4Jvqf+UL6b+/nxYvy9t5x
|
99
|
+
FtgZi/3mw+O2a/OSz+U8h4gleT5nIiykCoL1uAm4sxYg2YKRpj9YSNentclXwrYQ
|
100
|
+
eOyth0Pi6QtsUt96oKeTh6suInJ+AJPj+nAy835AOj988zPpEyiKdUXR3FOWO9+m
|
101
|
+
w2pQA7EtYDOHEE2vmCUU5QKBgCSP10OXKaLANF6xb4uSwyk9NZOd1s5FSqeLcFus
|
102
|
+
Bv1Lw7a94BSR2ZYG6eSFL+pStqNn+uWT5rbVkaPhOTj8gOrS0V5lpgDOODwOHM/Y
|
103
|
+
IXmo+YwOBmjEz2H2/C0EtIl9iuE7MGtvz/aGVDIGznxltqr7hmUWQLrIsymCDYiU
|
104
|
+
KNYBAoGAeZd1hDEK3dmzNAzNUWaIVWg2yq+B1RF7k1yzk7XcAc13vGEyZc2gILji
|
105
|
+
y+0IMS60/uKVZ7zYBvxuaDJImi1woEzAVSM2LUo2vHgFClrhHCF+tGKVEa1hbhhO
|
106
|
+
ScifJC8f/HoKI+Ddn0hrFF0ndBJ7g4mB9sm7RBHfm+1steGCV3Q=
|
49
107
|
-----END RSA PRIVATE KEY-----
|
data/test/rubygems/ssl_cert.pem
CHANGED
@@ -1,19 +1,80 @@
|
|
1
|
+
Certificate:
|
2
|
+
Data:
|
3
|
+
Version: 3 (0x2)
|
4
|
+
Serial Number: 1 (0x1)
|
5
|
+
Signature Algorithm: sha256WithRSAEncryption
|
6
|
+
Issuer: C=JP, ST=Tokyo, O=RubyGemsTest, CN=CA
|
7
|
+
Validity
|
8
|
+
Not Before: Jan 1 00:00:00 2009 GMT
|
9
|
+
Not After : Dec 31 23:59:59 2049 GMT
|
10
|
+
Subject: C=JP, ST=Tokyo, O=RubyGemsTest, CN=localhost
|
11
|
+
Subject Public Key Info:
|
12
|
+
Public Key Algorithm: rsaEncryption
|
13
|
+
RSA Public-Key: (2048 bit)
|
14
|
+
Modulus:
|
15
|
+
00:c1:9b:13:e1:65:2a:87:a9:3c:84:2e:c3:21:e1:
|
16
|
+
63:a2:8c:7c:6e:63:9a:ac:3e:45:f5:fa:37:08:aa:
|
17
|
+
c0:a7:6b:ff:42:27:1a:66:13:b9:ad:ca:d0:35:62:
|
18
|
+
52:00:56:56:71:cd:dc:74:04:fe:2a:a6:7d:00:61:
|
19
|
+
e2:b8:9a:0f:d1:2c:56:b7:50:c4:23:f1:52:68:f3:
|
20
|
+
fd:cf:6c:6b:86:93:91:f0:d8:7a:67:d8:55:fc:0d:
|
21
|
+
d1:30:f8:aa:a4:79:f2:17:ca:11:b3:8c:e5:01:34:
|
22
|
+
ad:21:bc:a8:4d:ea:18:bc:13:9c:0a:94:bf:fb:46:
|
23
|
+
cf:29:d2:52:03:e4:97:4e:92:ae:b7:9d:b0:d9:19:
|
24
|
+
49:5f:7a:5b:20:80:87:05:db:f4:73:df:04:69:12:
|
25
|
+
e8:14:1e:d2:c8:dd:d0:d3:81:72:04:f5:34:d7:9c:
|
26
|
+
61:b5:b6:d3:4b:61:ee:a9:04:36:60:79:c8:77:74:
|
27
|
+
24:70:89:a8:16:f8:6e:21:51:e9:30:61:fb:21:f6:
|
28
|
+
b3:6b:c1:b1:09:fa:26:ed:9f:3d:d2:2a:b6:34:d9:
|
29
|
+
b8:e8:46:d7:08:c3:3c:5d:0e:96:7a:e5:a1:ff:0a:
|
30
|
+
e2:36:bc:b4:06:3e:32:5a:9e:a5:4b:38:9e:0a:cc:
|
31
|
+
08:3a:9f:07:4e:74:d0:16:4b:0f:51:e4:d5:24:f3:
|
32
|
+
76:5d
|
33
|
+
Exponent: 65537 (0x10001)
|
34
|
+
X509v3 extensions:
|
35
|
+
X509v3 Basic Constraints:
|
36
|
+
CA:FALSE
|
37
|
+
Netscape Comment:
|
38
|
+
OpenSSL Generated Certificate
|
39
|
+
X509v3 Subject Key Identifier:
|
40
|
+
1E:0A:57:4F:0E:BC:B5:26:26:B9:01:80:E8:9A:25:98:4A:C0:D6:05
|
41
|
+
X509v3 Authority Key Identifier:
|
42
|
+
keyid:D6:DB:87:AD:D3:45:FC:D4:8D:6B:2B:97:F4:CF:95:08:B6:FA:62:A4
|
43
|
+
|
44
|
+
Signature Algorithm: sha256WithRSAEncryption
|
45
|
+
85:13:fa:00:1d:65:c4:f3:82:12:94:67:e3:34:a1:ac:0c:7b:
|
46
|
+
f1:2c:e7:20:db:ea:b8:d1:54:52:3e:34:00:bf:d3:1f:04:be:
|
47
|
+
df:c3:7d:96:20:b6:e5:cf:d3:67:b4:27:95:57:41:e9:51:9e:
|
48
|
+
90:88:a9:0e:97:4f:37:42:35:21:b5:e3:6e:82:c9:4c:66:1c:
|
49
|
+
61:df:84:28:00:6a:93:d4:dd:25:96:18:55:89:cc:3d:70:a5:
|
50
|
+
50:a4:e0:b9:db:c1:8e:aa:b1:aa:cc:89:dc:c1:1d:2d:c8:49:
|
51
|
+
ad:5b:96:eb:62:57:2e:0e:c0:5d:de:0a:86:27:b9:3c:92:bd:
|
52
|
+
2d:db:0a:3c:ed:ef:1a:cf:0e:33:c9:61:a2:44:c1:ad:53:e6:
|
53
|
+
ca:28:ee:4c:19:6f:dd:75:a2:cc:d8:9a:36:e7:8c:64:35:da:
|
54
|
+
1b:cb:9b:31:53:ca:a0:7b:d8:ac:ff:ee:a3:e8:9b:32:8f:5d:
|
55
|
+
0d:ce:0c:eb:b5:ed:82:d6:70:0e:c3:ca:9e:8b:e4:c1:fc:c0:
|
56
|
+
1e:ed:81:7e:5a:0a:a7:34:26:f7:0e:28:a0:7b:ba:21:42:14:
|
57
|
+
84:48:12:df:e8:9e:21:91:fc:c8:c0:f5:f8:6a:9f:c7:27:d4:
|
58
|
+
73:c5:9d:1a:5c:c8:62:24:71:d5:ae:4c:f2:c4:ad:14:c3:6d:
|
59
|
+
db:d6:56:bb
|
1
60
|
-----BEGIN CERTIFICATE-----
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
61
|
+
MIIDfzCCAmegAwIBAgIBATANBgkqhkiG9w0BAQsFADBBMQswCQYDVQQGEwJKUDEO
|
62
|
+
MAwGA1UECAwFVG9reW8xFTATBgNVBAoMDFJ1YnlHZW1zVGVzdDELMAkGA1UEAwwC
|
63
|
+
Q0EwHhcNMDkwMTAxMDAwMDAwWhcNNDkxMjMxMjM1OTU5WjBIMQswCQYDVQQGEwJK
|
64
|
+
UDEOMAwGA1UECAwFVG9reW8xFTATBgNVBAoMDFJ1YnlHZW1zVGVzdDESMBAGA1UE
|
65
|
+
AwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwZsT
|
66
|
+
4WUqh6k8hC7DIeFjoox8bmOarD5F9fo3CKrAp2v/QicaZhO5rcrQNWJSAFZWcc3c
|
67
|
+
dAT+KqZ9AGHiuJoP0SxWt1DEI/FSaPP9z2xrhpOR8Nh6Z9hV/A3RMPiqpHnyF8oR
|
68
|
+
s4zlATStIbyoTeoYvBOcCpS/+0bPKdJSA+SXTpKut52w2RlJX3pbIICHBdv0c98E
|
69
|
+
aRLoFB7SyN3Q04FyBPU015xhtbbTS2HuqQQ2YHnId3QkcImoFvhuIVHpMGH7Ifaz
|
70
|
+
a8GxCfom7Z890iq2NNm46EbXCMM8XQ6WeuWh/wriNry0Bj4yWp6lSzieCswIOp8H
|
71
|
+
TnTQFksPUeTVJPN2XQIDAQABo3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQf
|
72
|
+
Fh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUHgpXTw68
|
73
|
+
tSYmuQGA6JolmErA1gUwHwYDVR0jBBgwFoAU1tuHrdNF/NSNayuX9M+VCLb6YqQw
|
74
|
+
DQYJKoZIhvcNAQELBQADggEBAIUT+gAdZcTzghKUZ+M0oawMe/Es5yDb6rjRVFI+
|
75
|
+
NAC/0x8Evt/DfZYgtuXP02e0J5VXQelRnpCIqQ6XTzdCNSG1426CyUxmHGHfhCgA
|
76
|
+
apPU3SWWGFWJzD1wpVCk4LnbwY6qsarMidzBHS3ISa1blutiVy4OwF3eCoYnuTyS
|
77
|
+
vS3bCjzt7xrPDjPJYaJEwa1T5soo7kwZb911oszYmjbnjGQ12hvLmzFTyqB72Kz/
|
78
|
+
7qPomzKPXQ3ODOu17YLWcA7Dyp6L5MH8wB7tgX5aCqc0JvcOKKB7uiFCFIRIEt/o
|
79
|
+
niGR/MjA9fhqn8cn1HPFnRpcyGIkcdWuTPLErRTDbdvWVrs=
|
19
80
|
-----END CERTIFICATE-----
|
data/test/rubygems/ssl_key.pem
CHANGED
@@ -1,15 +1,27 @@
|
|
1
1
|
-----BEGIN RSA PRIVATE KEY-----
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
2
|
+
MIIEpAIBAAKCAQEAwZsT4WUqh6k8hC7DIeFjoox8bmOarD5F9fo3CKrAp2v/Qica
|
3
|
+
ZhO5rcrQNWJSAFZWcc3cdAT+KqZ9AGHiuJoP0SxWt1DEI/FSaPP9z2xrhpOR8Nh6
|
4
|
+
Z9hV/A3RMPiqpHnyF8oRs4zlATStIbyoTeoYvBOcCpS/+0bPKdJSA+SXTpKut52w
|
5
|
+
2RlJX3pbIICHBdv0c98EaRLoFB7SyN3Q04FyBPU015xhtbbTS2HuqQQ2YHnId3Qk
|
6
|
+
cImoFvhuIVHpMGH7Ifaza8GxCfom7Z890iq2NNm46EbXCMM8XQ6WeuWh/wriNry0
|
7
|
+
Bj4yWp6lSzieCswIOp8HTnTQFksPUeTVJPN2XQIDAQABAoIBAG0KWZ0VrGlxsKrF
|
8
|
+
55L6bXJMa3yEzsV54U9TmJFiElV5Ju/sNBsPuwEd/DxE3uhfuBoqlqIleb0tvbNs
|
9
|
+
bhQIeSYXMdPXQlD4BrEj0mxzpO/Lx2N9mRtJpcvrQEmzk/BE2kv5vBSDIyuVrnkU
|
10
|
+
1zniwgGTjcwL0UDFtcHZOeYFZg6S5Co7vbwBItIAcZKdZUXTHj7gt5j1uGD9a0FL
|
11
|
+
fOFYiysrr9Nh8lVJgTv5W/gdYxE4vmyG6nfIUIPSyZwTgzItk4RZU3ygGTA1bP3D
|
12
|
+
O0U3bW4avXKtJTdLUpy7MHT5edErZ0UX7LKYByfvinGMH9FpsBcp2XAcBKZmZwrG
|
13
|
+
e00XR+UCgYEA+g3Gj2GUwGz/LUmPUb2fT7vqbuoOJpNQUxsx1csbX6NetH7eJU4y
|
14
|
+
P/iZKSmAeVbf+RdfySf4/Z1brrwtKz700FMY7CYhfXiHH3vL+TCZgLq/wuU/hJYQ
|
15
|
+
YHV5P1/71YQg3ArCP4ukkoJH4Zm8ACN5MUx8YbRrwvdVYycf9nwVGWcCgYEAxjWr
|
16
|
+
b8kTCPhzbZIJiDWq5fDlnt5PwU+bXGDQMK5LnagxfcQg7LLlJm5c7+fxBX1Q0n6U
|
17
|
+
dtAdswaTiL5VotV9zQhF/Kmehjl7GAMxpcSfMYpwxSQEY5jDswTVCRej4B4GLDQD
|
18
|
+
7jO6Ih+o6fvxhxh6yP9kO5IMn/ATGqnxipwsI5sCgYB+pIt0As/7xThYD3FuzMLq
|
19
|
+
9xl8oz4Xe3SrIpLS3NM4VN2aPMb1zezVSWsI1eQjkERPO+9fScdpa1EL5nJZ/MCw
|
20
|
+
4eU1dPpxOaH16BUeV+bms657XvAUjowszlJiLpK1SP37c9d9p5PqP+F3+QymZVD0
|
21
|
+
DvDP6zjIvcuZNC+T/rQQ8QKBgQCUzZwMCye4N1Xo75cqZCgOAqFQeNPla89WNfR2
|
22
|
+
Z5OrI6csJP8W1GNGS9qH3VhL572ymYb5/9ocGhbOtR3zZlXQhKKOQgUZ/bNU3qj6
|
23
|
+
KzfcaHOq/RQydXCOSFVrQw0rZz75Fn/Q55KYpa4ZI6U65/zeQyXLtyS1OfYNsYH9
|
24
|
+
rqtQewKBgQDCXBOUc/wSzc77EFC6A3j4nETS1D4WLpz/sKljTDRES7zsIGqgur7N
|
25
|
+
P0Lbijz3HiW8RCS4Kt0VPXApsXEa6D8aYordzk2rp3Uk1pdWhcMoOr4FaXyRYgl7
|
26
|
+
+XYlxe0kzAFY7ZR6M0p9cXjh9XZ1Is15xJQg3q0/ru/J3QS0BTSrFg==
|
15
27
|
-----END RSA PRIVATE KEY-----
|
@@ -37,7 +37,7 @@ if ENV["CI"] || ENV["TEST_SSL"]
|
|
37
37
|
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
38
38
|
http.cert_store = bundled_certificate_store
|
39
39
|
http.get('/')
|
40
|
-
rescue Errno::ENOENT, Errno::ETIMEDOUT
|
40
|
+
rescue Errno::ENOENT, Errno::ETIMEDOUT, SocketError
|
41
41
|
skip "#{host} seems offline, I can't tell whether ssl would work."
|
42
42
|
rescue OpenSSL::SSL::SSLError => e
|
43
43
|
# Only fail for certificate verification errors
|
@@ -51,13 +51,16 @@ if ENV["CI"] || ENV["TEST_SSL"]
|
|
51
51
|
assert_https('rubygems.org')
|
52
52
|
end
|
53
53
|
|
54
|
-
def
|
55
|
-
assert_https('rubygems.
|
54
|
+
def test_accessing_www_rubygems
|
55
|
+
assert_https('www.rubygems.org')
|
56
56
|
end
|
57
57
|
|
58
|
-
def
|
59
|
-
assert_https('
|
58
|
+
def test_accessing_staging
|
59
|
+
assert_https('staging.rubygems.org')
|
60
60
|
end
|
61
61
|
|
62
|
+
def test_accessing_new_index
|
63
|
+
assert_https('index.rubygems.org')
|
64
|
+
end
|
62
65
|
end
|
63
66
|
end
|
data/test/rubygems/test_gem.rb
CHANGED
@@ -150,25 +150,28 @@ class TestGem < Gem::TestCase
|
|
150
150
|
File.umask(umask)
|
151
151
|
end
|
152
152
|
|
153
|
+
def test_self_install_permissions_with_format_executable
|
154
|
+
@format_executable = true
|
155
|
+
assert_self_install_permissions
|
156
|
+
end
|
157
|
+
|
153
158
|
def assert_self_install_permissions
|
154
|
-
mask =
|
159
|
+
mask = win_platform? ? 0700 : 0777
|
155
160
|
options = {
|
156
161
|
:dir_mode => 0500,
|
157
162
|
:prog_mode => 0510,
|
158
163
|
:data_mode => 0640,
|
159
164
|
:wrappers => true,
|
165
|
+
:format_executable => !!(@format_executable if defined?(@format_executable))
|
160
166
|
}
|
161
167
|
Dir.chdir @tempdir do
|
162
168
|
Dir.mkdir 'bin'
|
163
|
-
File.open 'bin/foo.cmd', 'w' do |fp|
|
164
|
-
fp.chmod(0755)
|
165
|
-
fp.puts 'p'
|
166
|
-
end
|
167
|
-
|
168
169
|
Dir.mkdir 'data'
|
169
|
-
|
170
|
-
|
171
|
-
|
170
|
+
|
171
|
+
File.write 'bin/foo.cmd', "p\n"
|
172
|
+
File.chmod 0755, 'bin/foo.cmd'
|
173
|
+
|
174
|
+
File.write 'data/foo.txt', "blah\n"
|
172
175
|
|
173
176
|
spec_fetcher do |f|
|
174
177
|
f.gem 'foo', 1 do |s|
|
@@ -182,14 +185,19 @@ class TestGem < Gem::TestCase
|
|
182
185
|
prog_mode = (options[:prog_mode] & mask).to_s(8)
|
183
186
|
dir_mode = (options[:dir_mode] & mask).to_s(8)
|
184
187
|
data_mode = (options[:data_mode] & mask).to_s(8)
|
188
|
+
prog_name = 'foo.cmd'
|
189
|
+
prog_name = RUBY_INSTALL_NAME.sub('ruby', 'foo.cmd') if options[:format_executable]
|
185
190
|
expected = {
|
186
|
-
"bin/#{
|
191
|
+
"bin/#{prog_name}" => prog_mode,
|
187
192
|
'gems/foo-1' => dir_mode,
|
188
193
|
'gems/foo-1/bin' => dir_mode,
|
189
194
|
'gems/foo-1/data' => dir_mode,
|
190
195
|
'gems/foo-1/bin/foo.cmd' => prog_mode,
|
191
196
|
'gems/foo-1/data/foo.txt' => data_mode,
|
192
197
|
}
|
198
|
+
# below is for intermittent errors on Appveyor & Travis 2019-01,
|
199
|
+
# see https://github.com/rubygems/rubygems/pull/2568
|
200
|
+
sleep 0.2
|
193
201
|
result = {}
|
194
202
|
Dir.chdir @gemhome do
|
195
203
|
expected.each_key do |n|
|
@@ -198,7 +206,7 @@ class TestGem < Gem::TestCase
|
|
198
206
|
end
|
199
207
|
assert_equal(expected, result)
|
200
208
|
ensure
|
201
|
-
File.chmod(
|
209
|
+
File.chmod(0755, *Dir.glob(@gemhome+'/gems/**/').map {|path| path.untaint})
|
202
210
|
end
|
203
211
|
|
204
212
|
def test_require_missing
|
@@ -315,6 +323,40 @@ class TestGem < Gem::TestCase
|
|
315
323
|
refute_includes e.message, "can't find gem bundler (>= 0.a) with executable bundle"
|
316
324
|
end
|
317
325
|
|
326
|
+
def test_activate_bin_path_respects_underscore_selection_if_given
|
327
|
+
bundler_latest = util_spec 'bundler', '2.0.1' do |s|
|
328
|
+
s.executables = ['bundle']
|
329
|
+
end
|
330
|
+
|
331
|
+
bundler_previous = util_spec 'bundler', '1.17.3' do |s|
|
332
|
+
s.executables = ['bundle']
|
333
|
+
end
|
334
|
+
|
335
|
+
install_specs bundler_latest, bundler_previous
|
336
|
+
|
337
|
+
File.open("Gemfile.lock", "w") do |f|
|
338
|
+
f.write <<-L.gsub(/ {8}/, "")
|
339
|
+
GEM
|
340
|
+
remote: https://rubygems.org/
|
341
|
+
specs:
|
342
|
+
|
343
|
+
PLATFORMS
|
344
|
+
ruby
|
345
|
+
|
346
|
+
DEPENDENCIES
|
347
|
+
|
348
|
+
BUNDLED WITH
|
349
|
+
2.0.1
|
350
|
+
L
|
351
|
+
end
|
352
|
+
|
353
|
+
File.open("Gemfile", "w") { |f| f.puts('source "https://rubygems.org"') }
|
354
|
+
|
355
|
+
load Gem.activate_bin_path("bundler", "bundle", "= 1.17.3")
|
356
|
+
|
357
|
+
assert_equal %w(bundler-1.17.3), loaded_spec_names
|
358
|
+
end
|
359
|
+
|
318
360
|
def test_self_bin_path_no_exec_name
|
319
361
|
e = assert_raises ArgumentError do
|
320
362
|
Gem.bin_path 'a'
|
@@ -536,7 +578,7 @@ class TestGem < Gem::TestCase
|
|
536
578
|
|
537
579
|
Gem.ensure_gem_subdirectories @gemhome, 0750
|
538
580
|
|
539
|
-
|
581
|
+
assert_directory_exists File.join(@gemhome, "cache")
|
540
582
|
|
541
583
|
assert_equal 0750, File::Stat.new(@gemhome).mode & 0777
|
542
584
|
assert_equal 0750, File::Stat.new(File.join(@gemhome, "cache")).mode & 0777
|
@@ -565,7 +607,7 @@ class TestGem < Gem::TestCase
|
|
565
607
|
|
566
608
|
Gem.ensure_gem_subdirectories gemdir
|
567
609
|
|
568
|
-
|
610
|
+
assert_directory_exists util_cache_dir
|
569
611
|
end
|
570
612
|
|
571
613
|
unless win_platform? || Process.uid.zero? # only for FS that support write protection
|
@@ -3,6 +3,8 @@ require 'rubygems/test_case'
|
|
3
3
|
|
4
4
|
class TestGemBundlerVersionFinder < Gem::TestCase
|
5
5
|
def setup
|
6
|
+
super
|
7
|
+
|
6
8
|
@argv = ARGV.dup
|
7
9
|
@env = ENV.to_hash.clone
|
8
10
|
ENV.delete("BUNDLER_VERSION")
|
@@ -13,6 +15,8 @@ class TestGemBundlerVersionFinder < Gem::TestCase
|
|
13
15
|
ARGV.replace @argv
|
14
16
|
ENV.replace @env
|
15
17
|
$0 = @dollar_0
|
18
|
+
|
19
|
+
super
|
16
20
|
end
|
17
21
|
|
18
22
|
def bvf
|
@@ -103,6 +103,16 @@ class TestGemCommandManager < Gem::TestCase
|
|
103
103
|
assert_match(/invalid option: --bad-arg/i, @ui.error)
|
104
104
|
end
|
105
105
|
|
106
|
+
def test_process_args_bad_no_ri
|
107
|
+
use_ui @ui do
|
108
|
+
assert_raises Gem::MockGemUi::TermError do
|
109
|
+
@command_manager.process_args %w[--no-ri]
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
assert_match(/invalid option: --no-ri. Use --no-document instead./i, @ui.error)
|
114
|
+
end
|
115
|
+
|
106
116
|
# HACK move to install command test
|
107
117
|
def test_process_args_install
|
108
118
|
#capture all install options
|