rubygems-update 1.8.30 → 2.0.0.preview2
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 +6 -6
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +3 -0
- data/.autotest +6 -3
- data/History.txt +137 -63
- data/LICENSE.txt +1 -5
- data/Manifest.txt +69 -32
- data/README.rdoc +11 -9
- data/Rakefile +24 -38
- data/bin/gem +0 -9
- data/bin/update_rubygems +1 -0
- data/lib/rubygems.rb +193 -405
- data/lib/rubygems/available_set.rb +95 -0
- data/lib/rubygems/command.rb +88 -45
- data/lib/rubygems/command_manager.rb +67 -40
- data/lib/rubygems/commands/build_command.rb +5 -23
- data/lib/rubygems/commands/cert_command.rb +199 -57
- data/lib/rubygems/commands/check_command.rb +14 -39
- data/lib/rubygems/commands/cleanup_command.rb +9 -1
- data/lib/rubygems/commands/contents_command.rb +30 -12
- data/lib/rubygems/commands/dependency_command.rb +3 -8
- data/lib/rubygems/commands/environment_command.rb +13 -8
- data/lib/rubygems/commands/fetch_command.rb +3 -16
- data/lib/rubygems/commands/generate_index_command.rb +7 -47
- data/lib/rubygems/commands/help_command.rb +1 -1
- data/lib/rubygems/commands/install_command.rb +69 -36
- data/lib/rubygems/commands/list_command.rb +6 -4
- data/lib/rubygems/commands/lock_command.rb +1 -1
- data/lib/rubygems/commands/mirror_command.rb +17 -0
- data/lib/rubygems/commands/outdated_command.rb +6 -3
- data/lib/rubygems/commands/owner_command.rb +13 -5
- data/lib/rubygems/commands/pristine_command.rb +19 -4
- data/lib/rubygems/commands/push_command.rb +12 -1
- data/lib/rubygems/commands/query_command.rb +43 -27
- data/lib/rubygems/commands/rdoc_command.rb +23 -28
- data/lib/rubygems/commands/search_command.rb +4 -18
- data/lib/rubygems/commands/server_command.rb +1 -1
- data/lib/rubygems/commands/setup_command.rb +124 -38
- data/lib/rubygems/commands/sources_command.rb +16 -16
- data/lib/rubygems/commands/specification_command.rb +11 -13
- data/lib/rubygems/commands/uninstall_command.rb +24 -7
- data/lib/rubygems/commands/unpack_command.rb +7 -3
- data/lib/rubygems/commands/update_command.rb +22 -36
- data/lib/rubygems/commands/yank_command.rb +98 -0
- data/lib/rubygems/compatibility.rb +51 -0
- data/lib/rubygems/config_file.rb +82 -54
- data/lib/rubygems/core_ext/kernel_gem.rb +53 -0
- data/lib/rubygems/core_ext/kernel_require.rb +119 -0
- data/lib/rubygems/defaults.rb +10 -21
- data/lib/rubygems/dependency.rb +61 -10
- data/lib/rubygems/dependency_installer.rb +157 -69
- data/lib/rubygems/dependency_list.rb +11 -19
- data/lib/rubygems/dependency_resolver.rb +562 -0
- data/lib/rubygems/deprecate.rb +40 -40
- data/lib/rubygems/errors.rb +77 -24
- data/lib/rubygems/exceptions.rb +25 -7
- data/lib/rubygems/ext/builder.rb +20 -23
- data/lib/rubygems/ext/configure_builder.rb +2 -2
- data/lib/rubygems/ext/ext_conf_builder.rb +5 -45
- data/lib/rubygems/ext/rake_builder.rb +2 -2
- data/lib/rubygems/gem_runner.rb +3 -16
- data/lib/rubygems/gemcutter_utilities.rb +22 -7
- data/lib/rubygems/indexer.rb +6 -159
- data/lib/rubygems/install_message.rb +12 -0
- data/lib/rubygems/install_update_options.rb +56 -18
- data/lib/rubygems/installer.rb +244 -134
- data/lib/rubygems/installer_test_case.rb +71 -19
- data/lib/rubygems/mock_gem_ui.rb +17 -0
- data/lib/rubygems/name_tuple.rb +110 -0
- data/lib/rubygems/package.rb +514 -43
- data/lib/rubygems/package/digest_io.rb +64 -0
- data/lib/rubygems/package/old.rb +147 -0
- data/lib/rubygems/package/tar_header.rb +18 -55
- data/lib/rubygems/package/tar_reader.rb +20 -3
- data/lib/rubygems/package/tar_writer.rb +63 -7
- data/lib/rubygems/package_task.rb +3 -4
- data/lib/rubygems/path_support.rb +14 -7
- data/lib/rubygems/platform.rb +19 -26
- data/lib/rubygems/rdoc.rb +316 -0
- data/lib/rubygems/remote_fetcher.rb +117 -54
- data/lib/rubygems/request_set.rb +182 -0
- data/lib/rubygems/requirement.rb +63 -26
- data/lib/rubygems/security.rb +295 -555
- data/lib/rubygems/security/policies.rb +115 -0
- data/lib/rubygems/security/policy.rb +227 -0
- data/lib/rubygems/security/signer.rb +136 -0
- data/lib/rubygems/security/trust_dir.rb +104 -0
- data/lib/rubygems/server.rb +45 -55
- data/lib/rubygems/source.rb +144 -0
- data/lib/rubygems/source_list.rb +87 -0
- data/lib/rubygems/source_local.rb +92 -0
- data/lib/rubygems/source_specific_file.rb +28 -0
- data/lib/rubygems/spec_fetcher.rb +116 -184
- data/lib/rubygems/specification.rb +731 -335
- data/lib/rubygems/ssl_certs/AddTrustExternalCARoot.pem +88 -30
- data/lib/rubygems/ssl_certs/Entrust_net-Secure-Server-Certification-Authority.pem +90 -0
- data/lib/rubygems/ssl_certs/VerisignClass3PublicPrimaryCertificationAuthority-G2.pem +57 -0
- data/lib/rubygems/syck_hack.rb +2 -0
- data/lib/rubygems/test_case.rb +199 -109
- data/lib/rubygems/test_utilities.rb +25 -5
- data/lib/rubygems/uninstaller.rb +62 -20
- data/lib/rubygems/user_interaction.rb +10 -0
- data/lib/rubygems/validator.rb +33 -40
- data/lib/rubygems/version.rb +19 -8
- data/setup.rb +8 -1
- data/test/rubygems/alternate_cert.pem +9 -0
- data/test/rubygems/alternate_cert_32.pem +9 -0
- data/test/rubygems/alternate_key.pem +9 -0
- data/test/rubygems/bad_rake.rb +1 -0
- data/test/rubygems/child_cert.pem +9 -0
- data/test/rubygems/child_cert_32.pem +9 -0
- data/test/rubygems/child_key.pem +9 -0
- data/test/rubygems/data/null-type.gemspec.rz +0 -0
- data/test/rubygems/expired_cert.pem +9 -0
- data/test/rubygems/future_cert.pem +9 -0
- data/test/rubygems/future_cert_32.pem +9 -0
- data/test/rubygems/good_rake.rb +1 -0
- data/test/rubygems/grandchild_cert.pem +9 -0
- data/test/rubygems/grandchild_cert_32.pem +9 -0
- data/test/rubygems/grandchild_key.pem +9 -0
- data/test/rubygems/invalid_issuer_cert.pem +9 -0
- data/test/rubygems/invalid_issuer_cert_32.pem +9 -0
- data/test/rubygems/invalid_key.pem +9 -0
- data/test/rubygems/invalid_signer_cert.pem +9 -0
- data/test/rubygems/invalid_signer_cert_32.pem +9 -0
- data/test/rubygems/invalidchild_cert.pem +9 -0
- data/test/rubygems/invalidchild_cert_32.pem +9 -0
- data/test/rubygems/invalidchild_key.pem +9 -0
- data/test/rubygems/plugin/exception/rubygems_plugin.rb +1 -1
- data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +1 -1
- data/test/rubygems/private_key.pem +7 -25
- data/test/rubygems/public_cert.pem +8 -18
- data/test/rubygems/public_cert_32.pem +10 -0
- data/test/rubygems/public_key.pem +4 -0
- data/test/rubygems/rubygems/commands/crash_command.rb +1 -1
- data/test/rubygems/test_config.rb +4 -6
- data/test/rubygems/test_deprecate.rb +76 -0
- data/test/rubygems/test_gem.rb +318 -83
- data/test/rubygems/test_gem_available_set.rb +106 -0
- data/test/rubygems/test_gem_command.rb +10 -0
- data/test/rubygems/test_gem_command_manager.rb +55 -9
- data/test/rubygems/test_gem_commands_build_command.rb +11 -19
- data/test/rubygems/test_gem_commands_cert_command.rb +441 -42
- data/test/rubygems/test_gem_commands_cleanup_command.rb +29 -1
- data/test/rubygems/test_gem_commands_contents_command.rb +23 -0
- data/test/rubygems/test_gem_commands_dependency_command.rb +5 -0
- data/test/rubygems/test_gem_commands_fetch_command.rb +19 -20
- data/test/rubygems/test_gem_commands_generate_index_command.rb +2 -83
- data/test/rubygems/test_gem_commands_help_command.rb +2 -1
- data/test/rubygems/test_gem_commands_install_command.rb +647 -48
- data/test/rubygems/test_gem_commands_mirror.rb +32 -0
- data/test/rubygems/test_gem_commands_owner_command.rb +4 -8
- data/test/rubygems/test_gem_commands_pristine_command.rb +99 -4
- data/test/rubygems/test_gem_commands_push_command.rb +62 -8
- data/test/rubygems/test_gem_commands_query_command.rb +51 -0
- data/test/rubygems/test_gem_commands_search_command.rb +25 -0
- data/test/rubygems/test_gem_commands_setup_command.rb +45 -0
- data/test/rubygems/test_gem_commands_sources_command.rb +21 -6
- data/test/rubygems/test_gem_commands_specification_command.rb +33 -1
- data/test/rubygems/test_gem_commands_uninstall_command.rb +91 -31
- data/test/rubygems/test_gem_commands_unpack_command.rb +3 -3
- data/test/rubygems/test_gem_commands_update_command.rb +56 -38
- data/test/rubygems/test_gem_commands_which_command.rb +4 -4
- data/test/rubygems/test_gem_commands_yank_command.rb +97 -0
- data/test/rubygems/test_gem_config_file.rb +66 -21
- data/test/rubygems/test_gem_dependency.rb +46 -0
- data/test/rubygems/test_gem_dependency_installer.rb +228 -18
- data/test/rubygems/test_gem_dependency_list.rb +0 -9
- data/test/rubygems/test_gem_dependency_resolver.rb +327 -0
- data/test/rubygems/test_gem_ext_configure_builder.rb +4 -4
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +21 -49
- data/test/rubygems/test_gem_ext_rake_builder.rb +13 -13
- data/test/rubygems/test_gem_gem_runner.rb +27 -5
- data/test/rubygems/test_gem_gemcutter_utilities.rb +19 -0
- data/test/rubygems/test_gem_indexer.rb +14 -227
- data/test/rubygems/test_gem_install_update_options.rb +83 -3
- data/test/rubygems/test_gem_installer.rb +211 -236
- data/test/rubygems/test_gem_local_remote_options.rb +8 -2
- data/test/rubygems/test_gem_name_tuple.rb +15 -0
- data/test/rubygems/test_gem_package.rb +547 -0
- data/test/rubygems/test_gem_package_old.rb +37 -0
- data/test/rubygems/test_gem_package_tar_reader.rb +32 -0
- data/test/rubygems/test_gem_package_tar_writer.rb +84 -1
- data/test/rubygems/test_gem_path_support.rb +4 -30
- data/test/rubygems/test_gem_platform.rb +3 -6
- data/test/rubygems/test_gem_rdoc.rb +245 -0
- data/test/rubygems/test_gem_remote_fetcher.rb +51 -5
- data/test/rubygems/test_gem_request_set.rb +70 -0
- data/test/rubygems/test_gem_requirement.rb +53 -24
- data/test/rubygems/test_gem_security.rb +189 -43
- data/test/rubygems/test_gem_security_policy.rb +376 -0
- data/test/rubygems/test_gem_security_signer.rb +184 -0
- data/test/rubygems/test_gem_security_trust_dir.rb +94 -0
- data/test/rubygems/test_gem_server.rb +31 -36
- data/test/rubygems/test_gem_silent_ui.rb +2 -2
- data/test/rubygems/test_gem_source.rb +188 -0
- data/test/rubygems/test_gem_source_list.rb +87 -0
- data/test/rubygems/test_gem_source_local.rb +83 -0
- data/test/rubygems/test_gem_source_specific_file.rb +33 -0
- data/test/rubygems/test_gem_spec_fetcher.rb +91 -255
- data/test/rubygems/test_gem_specification.rb +293 -39
- data/test/rubygems/test_gem_uninstaller.rb +136 -13
- data/test/rubygems/test_gem_validator.rb +14 -41
- data/test/rubygems/test_gem_version.rb +15 -21
- data/test/rubygems/test_require.rb +193 -0
- data/test/rubygems/wrong_key_cert.pem +9 -0
- data/test/rubygems/wrong_key_cert_32.pem +9 -0
- metadata +171 -83
- metadata.gz.sig +1 -0
- data/CVE-2013-4287.txt +0 -36
- data/CVE-2013-4363.txt +0 -45
- data/ci_build.sh +0 -27
- data/cruise_config.rb +0 -32
- data/lib/rbconfig/datadir.rb +0 -13
- data/lib/rubygems/builder.rb +0 -99
- data/lib/rubygems/custom_require.rb +0 -69
- data/lib/rubygems/doc_manager.rb +0 -243
- data/lib/rubygems/format.rb +0 -82
- data/lib/rubygems/gem_openssl.rb +0 -90
- data/lib/rubygems/gem_path_searcher.rb +0 -172
- data/lib/rubygems/old_format.rb +0 -153
- data/lib/rubygems/package/f_sync_dir.rb +0 -23
- data/lib/rubygems/package/tar_input.rb +0 -234
- data/lib/rubygems/package/tar_output.rb +0 -146
- data/lib/rubygems/require_paths_builder.rb +0 -18
- data/lib/rubygems/source_index.rb +0 -406
- data/lib/rubygems/ssl_certs/AddTrustExternalCARoot-2048.pem +0 -25
- data/lib/rubygems/ssl_certs/Class3PublicPrimaryCertificationAuthority.pem +0 -14
- data/lib/rubygems/ssl_certs/DigiCertHighAssuranceEVRootCA.pem +0 -23
- data/lib/rubygems/ssl_certs/EntrustnetSecureServerCertificationAuthority.pem +0 -28
- data/lib/rubygems/ssl_certs/GeoTrustGlobalCA.pem +0 -20
- data/test/rubygems/test_bundled_ca.rb +0 -59
- data/test/rubygems/test_gem_builder.rb +0 -44
- data/test/rubygems/test_gem_doc_manager.rb +0 -32
- data/test/rubygems/test_gem_ext_builder.rb +0 -58
- data/test/rubygems/test_gem_format.rb +0 -88
- data/test/rubygems/test_gem_gem_path_searcher.rb +0 -94
- data/test/rubygems/test_gem_package_tar_input.rb +0 -129
- data/test/rubygems/test_gem_package_tar_output.rb +0 -101
- data/test/rubygems/test_gem_source_index.rb +0 -250
- data/util/update_bundled_ca_certificates.rb +0 -103
@@ -1,32 +1,90 @@
|
|
1
|
+
This CA certificate is for verifying HTTPS connection to;
|
2
|
+
- https://rubygems.org/ (obtained by RubyGems team)
|
3
|
+
|
4
|
+
Certificate:
|
5
|
+
Data:
|
6
|
+
Version: 3 (0x2)
|
7
|
+
Serial Number: 1 (0x1)
|
8
|
+
Signature Algorithm: sha1WithRSAEncryption
|
9
|
+
Issuer: C=SE, O=AddTrust AB, OU=AddTrust External TTP Network, CN=AddTrust External CA Root
|
10
|
+
Validity
|
11
|
+
Not Before: May 30 10:48:38 2000 GMT
|
12
|
+
Not After : May 30 10:48:38 2020 GMT
|
13
|
+
Subject: C=SE, O=AddTrust AB, OU=AddTrust External TTP Network, CN=AddTrust External CA Root
|
14
|
+
Subject Public Key Info:
|
15
|
+
Public Key Algorithm: rsaEncryption
|
16
|
+
Public-Key: (2048 bit)
|
17
|
+
Modulus:
|
18
|
+
00:b7:f7:1a:33:e6:f2:00:04:2d:39:e0:4e:5b:ed:
|
19
|
+
1f:bc:6c:0f:cd:b5:fa:23:b6:ce:de:9b:11:33:97:
|
20
|
+
a4:29:4c:7d:93:9f:bd:4a:bc:93:ed:03:1a:e3:8f:
|
21
|
+
cf:e5:6d:50:5a:d6:97:29:94:5a:80:b0:49:7a:db:
|
22
|
+
2e:95:fd:b8:ca:bf:37:38:2d:1e:3e:91:41:ad:70:
|
23
|
+
56:c7:f0:4f:3f:e8:32:9e:74:ca:c8:90:54:e9:c6:
|
24
|
+
5f:0f:78:9d:9a:40:3c:0e:ac:61:aa:5e:14:8f:9e:
|
25
|
+
87:a1:6a:50:dc:d7:9a:4e:af:05:b3:a6:71:94:9c:
|
26
|
+
71:b3:50:60:0a:c7:13:9d:38:07:86:02:a8:e9:a8:
|
27
|
+
69:26:18:90:ab:4c:b0:4f:23:ab:3a:4f:84:d8:df:
|
28
|
+
ce:9f:e1:69:6f:bb:d7:42:d7:6b:44:e4:c7:ad:ee:
|
29
|
+
6d:41:5f:72:5a:71:08:37:b3:79:65:a4:59:a0:94:
|
30
|
+
37:f7:00:2f:0d:c2:92:72:da:d0:38:72:db:14:a8:
|
31
|
+
45:c4:5d:2a:7d:b7:b4:d6:c4:ee:ac:cd:13:44:b7:
|
32
|
+
c9:2b:dd:43:00:25:fa:61:b9:69:6a:58:23:11:b7:
|
33
|
+
a7:33:8f:56:75:59:f5:cd:29:d7:46:b7:0a:2b:65:
|
34
|
+
b6:d3:42:6f:15:b2:b8:7b:fb:ef:e9:5d:53:d5:34:
|
35
|
+
5a:27
|
36
|
+
Exponent: 65537 (0x10001)
|
37
|
+
X509v3 extensions:
|
38
|
+
X509v3 Subject Key Identifier:
|
39
|
+
AD:BD:98:7A:34:B4:26:F7:FA:C4:26:54:EF:03:BD:E0:24:CB:54:1A
|
40
|
+
X509v3 Key Usage:
|
41
|
+
Certificate Sign, CRL Sign
|
42
|
+
X509v3 Basic Constraints: critical
|
43
|
+
CA:TRUE
|
44
|
+
X509v3 Authority Key Identifier:
|
45
|
+
keyid:AD:BD:98:7A:34:B4:26:F7:FA:C4:26:54:EF:03:BD:E0:24:CB:54:1A
|
46
|
+
DirName:/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root
|
47
|
+
serial:01
|
48
|
+
|
49
|
+
Signature Algorithm: sha1WithRSAEncryption
|
50
|
+
b0:9b:e0:85:25:c2:d6:23:e2:0f:96:06:92:9d:41:98:9c:d9:
|
51
|
+
84:79:81:d9:1e:5b:14:07:23:36:65:8f:b0:d8:77:bb:ac:41:
|
52
|
+
6c:47:60:83:51:b0:f9:32:3d:e7:fc:f6:26:13:c7:80:16:a5:
|
53
|
+
bf:5a:fc:87:cf:78:79:89:21:9a:e2:4c:07:0a:86:35:bc:f2:
|
54
|
+
de:51:c4:d2:96:b7:dc:7e:4e:ee:70:fd:1c:39:eb:0c:02:51:
|
55
|
+
14:2d:8e:bd:16:e0:c1:df:46:75:e7:24:ad:ec:f4:42:b4:85:
|
56
|
+
93:70:10:67:ba:9d:06:35:4a:18:d3:2b:7a:cc:51:42:a1:7a:
|
57
|
+
63:d1:e6:bb:a1:c5:2b:c2:36:be:13:0d:e6:bd:63:7e:79:7b:
|
58
|
+
a7:09:0d:40:ab:6a:dd:8f:8a:c3:f6:f6:8c:1a:42:05:51:d4:
|
59
|
+
45:f5:9f:a7:62:21:68:15:20:43:3c:99:e7:7c:bd:24:d8:a9:
|
60
|
+
91:17:73:88:3f:56:1b:31:38:18:b4:71:0f:9a:cd:c8:0e:9e:
|
61
|
+
8e:2e:1b:e1:8c:98:83:cb:1f:31:f1:44:4c:c6:04:73:49:76:
|
62
|
+
60:0f:c7:f8:bd:17:80:6b:2e:e9:cc:4c:0e:5a:9a:79:0f:20:
|
63
|
+
0a:2e:d5:9e:63:26:1e:55:92:94:d8:82:17:5a:7b:d0:bc:c7:
|
64
|
+
8f:4e:86:04
|
65
|
+
|
1
66
|
-----BEGIN CERTIFICATE-----
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
Ly9vY3NwLnVzZXJ0cnVzdC5jb20wDQYJKoZIhvcNAQEMBQADggEBAGS/g/FfmoXQ
|
26
|
-
zbihKVcN6Fr30ek+8nYEbvFScLsePP9NDXRqzIGCJdPDoCpdTPW6i6FtxFQJdcfj
|
27
|
-
Jw5dhHk3QBN39bSsHNA7qxcS1u80GH4r6XnTq1dFDK8o+tDb5VCViLvfhVdpfZLY
|
28
|
-
Uspzgb8c8+a4bmYRBbMelC1/kZWSWfFMzqORcUx8Rww7Cxn2obFshj5cqsQugsv5
|
29
|
-
B5a6SE2Q8pTIqXOi6wZ7I53eovNNVZ96YUWYGGjHXkBrI/V5eu+MtWuLt29G9Hvx
|
30
|
-
PUsE2JOAWVrgQSQdso8VYFhH2+9uRv0V9dlfmrPb2LjkQLPNlzmuhbsdjrzch5vR
|
31
|
-
pu/xO28QOG8=
|
67
|
+
MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU
|
68
|
+
MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs
|
69
|
+
IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290
|
70
|
+
MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux
|
71
|
+
FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h
|
72
|
+
bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v
|
73
|
+
dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt
|
74
|
+
H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9
|
75
|
+
uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX
|
76
|
+
mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX
|
77
|
+
a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN
|
78
|
+
E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0
|
79
|
+
WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD
|
80
|
+
VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0
|
81
|
+
Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU
|
82
|
+
cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx
|
83
|
+
IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN
|
84
|
+
AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH
|
85
|
+
YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
|
86
|
+
6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC
|
87
|
+
Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX
|
88
|
+
c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a
|
89
|
+
mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
|
32
90
|
-----END CERTIFICATE-----
|
@@ -0,0 +1,90 @@
|
|
1
|
+
This CA certificate is for verifying HTTPS connection to;
|
2
|
+
- https://d2chzxaqi4y7f8.cloudfront.net/ (prepared by AWS)
|
3
|
+
|
4
|
+
Certificate:
|
5
|
+
Data:
|
6
|
+
Version: 3 (0x2)
|
7
|
+
Serial Number: 927650371 (0x374ad243)
|
8
|
+
Signature Algorithm: sha1WithRSAEncryption
|
9
|
+
Issuer: C=US, O=Entrust.net, OU=www.entrust.net/CPS incorp. by ref. (limits liab.), OU=(c) 1999 Entrust.net Limited, CN=Entrust.net Secure Server Certification Authority
|
10
|
+
Validity
|
11
|
+
Not Before: May 25 16:09:40 1999 GMT
|
12
|
+
Not After : May 25 16:39:40 2019 GMT
|
13
|
+
Subject: C=US, O=Entrust.net, OU=www.entrust.net/CPS incorp. by ref. (limits liab.), OU=(c) 1999 Entrust.net Limited, CN=Entrust.net Secure Server Certification Authority
|
14
|
+
Subject Public Key Info:
|
15
|
+
Public Key Algorithm: rsaEncryption
|
16
|
+
Public-Key: (1024 bit)
|
17
|
+
Modulus:
|
18
|
+
00:cd:28:83:34:54:1b:89:f3:0f:af:37:91:31:ff:
|
19
|
+
af:31:60:c9:a8:e8:b2:10:68:ed:9f:e7:93:36:f1:
|
20
|
+
0a:64:bb:47:f5:04:17:3f:23:47:4d:c5:27:19:81:
|
21
|
+
26:0c:54:72:0d:88:2d:d9:1f:9a:12:9f:bc:b3:71:
|
22
|
+
d3:80:19:3f:47:66:7b:8c:35:28:d2:b9:0a:df:24:
|
23
|
+
da:9c:d6:50:79:81:7a:5a:d3:37:f7:c2:4a:d8:29:
|
24
|
+
92:26:64:d1:e4:98:6c:3a:00:8a:f5:34:9b:65:f8:
|
25
|
+
ed:e3:10:ff:fd:b8:49:58:dc:a0:de:82:39:6b:81:
|
26
|
+
b1:16:19:61:b9:54:b6:e6:43
|
27
|
+
Exponent: 3 (0x3)
|
28
|
+
X509v3 extensions:
|
29
|
+
Netscape Cert Type:
|
30
|
+
SSL CA, S/MIME CA, Object Signing CA
|
31
|
+
X509v3 CRL Distribution Points:
|
32
|
+
|
33
|
+
Full Name:
|
34
|
+
DirName: C = US, O = Entrust.net, OU = www.entrust.net/CPS incorp. by ref. (limits liab.), OU = (c) 1999 Entrust.net Limited, CN = Entrust.net Secure Server Certification Authority, CN = CRL1
|
35
|
+
|
36
|
+
Full Name:
|
37
|
+
URI:http://www.entrust.net/CRL/net1.crl
|
38
|
+
|
39
|
+
X509v3 Private Key Usage Period:
|
40
|
+
Not Before: May 25 16:09:40 1999 GMT, Not After: May 25 16:09:40 2019 GMT
|
41
|
+
X509v3 Key Usage:
|
42
|
+
Certificate Sign, CRL Sign
|
43
|
+
X509v3 Authority Key Identifier:
|
44
|
+
keyid:F0:17:62:13:55:3D:B3:FF:0A:00:6B:FB:50:84:97:F3:ED:62:D0:1A
|
45
|
+
|
46
|
+
X509v3 Subject Key Identifier:
|
47
|
+
F0:17:62:13:55:3D:B3:FF:0A:00:6B:FB:50:84:97:F3:ED:62:D0:1A
|
48
|
+
X509v3 Basic Constraints:
|
49
|
+
CA:TRUE
|
50
|
+
1.2.840.113533.7.65.0:
|
51
|
+
0
|
52
|
+
..V4.0....
|
53
|
+
Signature Algorithm: sha1WithRSAEncryption
|
54
|
+
90:dc:30:02:fa:64:74:c2:a7:0a:a5:7c:21:8d:34:17:a8:fb:
|
55
|
+
47:0e:ff:25:7c:8d:13:0a:fb:e4:98:b5:ef:8c:f8:c5:10:0d:
|
56
|
+
f7:92:be:f1:c3:d5:d5:95:6a:04:bb:2c:ce:26:36:65:c8:31:
|
57
|
+
c6:e7:ee:3f:e3:57:75:84:7a:11:ef:46:4f:18:f4:d3:98:bb:
|
58
|
+
a8:87:32:ba:72:f6:3c:e2:3d:9f:d7:1d:d9:c3:60:43:8c:58:
|
59
|
+
0e:22:96:2f:62:a3:2c:1f:ba:ad:05:ef:ab:32:78:87:a0:54:
|
60
|
+
73:19:b5:5c:05:f9:52:3e:6d:2d:45:0b:f7:0a:93:ea:ed:06:
|
61
|
+
f9:b2
|
62
|
+
|
63
|
+
-----BEGIN CERTIFICATE-----
|
64
|
+
MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC
|
65
|
+
VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u
|
66
|
+
ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc
|
67
|
+
KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u
|
68
|
+
ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05OTA1
|
69
|
+
MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIGA1UE
|
70
|
+
ChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5j
|
71
|
+
b3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF
|
72
|
+
bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUg
|
73
|
+
U2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUA
|
74
|
+
A4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQaO2f55M28Qpku0f1BBc/
|
75
|
+
I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5gXpa0zf3
|
76
|
+
wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OC
|
77
|
+
AdcwggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHb
|
78
|
+
oIHYpIHVMIHSMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5
|
79
|
+
BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1p
|
80
|
+
dHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1pdGVk
|
81
|
+
MTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp
|
82
|
+
b24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu
|
83
|
+
dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0
|
84
|
+
MFqBDzIwMTkwNTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8Bdi
|
85
|
+
E1U9s/8KAGv7UISX8+1i0BowHQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAa
|
86
|
+
MAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EABAwwChsEVjQuMAMCBJAwDQYJKoZI
|
87
|
+
hvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyNEwr75Ji174z4xRAN
|
88
|
+
95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9n9cd
|
89
|
+
2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI=
|
90
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,57 @@
|
|
1
|
+
This CA certificate is for verifying HTTPS connection to;
|
2
|
+
- https://s3.amazon.com/ (prepared by AWS)
|
3
|
+
|
4
|
+
Certificate:
|
5
|
+
Data:
|
6
|
+
Version: 1 (0x0)
|
7
|
+
Serial Number:
|
8
|
+
7d:d9:fe:07:cf:a8:1e:b7:10:79:67:fb:a7:89:34:c6
|
9
|
+
Signature Algorithm: sha1WithRSAEncryption
|
10
|
+
Issuer: C=US, O=VeriSign, Inc., OU=Class 3 Public Primary Certification Authority - G2, OU=(c) 1998 VeriSign, Inc. - For authorized use only, OU=VeriSign Trust Network
|
11
|
+
Validity
|
12
|
+
Not Before: May 18 00:00:00 1998 GMT
|
13
|
+
Not After : Aug 1 23:59:59 2028 GMT
|
14
|
+
Subject: C=US, O=VeriSign, Inc., OU=Class 3 Public Primary Certification Authority - G2, OU=(c) 1998 VeriSign, Inc. - For authorized use only, OU=VeriSign Trust Network
|
15
|
+
Subject Public Key Info:
|
16
|
+
Public Key Algorithm: rsaEncryption
|
17
|
+
Public-Key: (1024 bit)
|
18
|
+
Modulus:
|
19
|
+
00:cc:5e:d1:11:5d:5c:69:d0:ab:d3:b9:6a:4c:99:
|
20
|
+
1f:59:98:30:8e:16:85:20:46:6d:47:3f:d4:85:20:
|
21
|
+
84:e1:6d:b3:f8:a4:ed:0c:f1:17:0f:3b:f9:a7:f9:
|
22
|
+
25:d7:c1:cf:84:63:f2:7c:63:cf:a2:47:f2:c6:5b:
|
23
|
+
33:8e:64:40:04:68:c1:80:b9:64:1c:45:77:c7:d8:
|
24
|
+
6e:f5:95:29:3c:50:e8:34:d7:78:1f:a8:ba:6d:43:
|
25
|
+
91:95:8f:45:57:5e:7e:c5:fb:ca:a4:04:eb:ea:97:
|
26
|
+
37:54:30:6f:bb:01:47:32:33:cd:dc:57:9b:64:69:
|
27
|
+
61:f8:9b:1d:1c:89:4f:5c:67
|
28
|
+
Exponent: 65537 (0x10001)
|
29
|
+
Signature Algorithm: sha1WithRSAEncryption
|
30
|
+
51:4d:cd:be:5c:cb:98:19:9c:15:b2:01:39:78:2e:4d:0f:67:
|
31
|
+
70:70:99:c6:10:5a:94:a4:53:4d:54:6d:2b:af:0d:5d:40:8b:
|
32
|
+
64:d3:d7:ee:de:56:61:92:5f:a6:c4:1d:10:61:36:d3:2c:27:
|
33
|
+
3c:e8:29:09:b9:11:64:74:cc:b5:73:9f:1c:48:a9:bc:61:01:
|
34
|
+
ee:e2:17:a6:0c:e3:40:08:3b:0e:e7:eb:44:73:2a:9a:f1:69:
|
35
|
+
92:ef:71:14:c3:39:ac:71:a7:91:09:6f:e4:71:06:b3:ba:59:
|
36
|
+
57:26:79:00:f6:f8:0d:a2:33:30:28:d4:aa:58:a0:9d:9d:69:
|
37
|
+
91:fd
|
38
|
+
|
39
|
+
-----BEGIN CERTIFICATE-----
|
40
|
+
MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJ
|
41
|
+
BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh
|
42
|
+
c3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy
|
43
|
+
MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp
|
44
|
+
emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X
|
45
|
+
DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw
|
46
|
+
FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMg
|
47
|
+
UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo
|
48
|
+
YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5
|
49
|
+
MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB
|
50
|
+
AQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCOFoUgRm1HP9SFIIThbbP4
|
51
|
+
pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71lSk8UOg0
|
52
|
+
13gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwID
|
53
|
+
AQABMA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSk
|
54
|
+
U01UbSuvDV1Ai2TT1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7i
|
55
|
+
F6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpY
|
56
|
+
oJ2daZH9
|
57
|
+
-----END CERTIFICATE-----
|
data/lib/rubygems/syck_hack.rb
CHANGED
data/lib/rubygems/test_case.rb
CHANGED
@@ -1,6 +1,4 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
gem 'minitest', '~> 4.0'
|
1
|
+
# TODO: $SAFE = 1
|
4
2
|
|
5
3
|
if defined? Gem::QuickLoader
|
6
4
|
Gem::QuickLoader.load_full_rubygems_library
|
@@ -13,7 +11,14 @@ begin
|
|
13
11
|
rescue Gem::LoadError
|
14
12
|
end
|
15
13
|
|
16
|
-
|
14
|
+
# We have to load these up front because otherwise we'll try to load
|
15
|
+
# them while we're testing rubygems, and thus we can't actually load them.
|
16
|
+
unless Gem::Dependency.new('rdoc', '>= 3.10').matching_specs.empty?
|
17
|
+
gem 'rdoc'
|
18
|
+
gem 'json'
|
19
|
+
end
|
20
|
+
|
21
|
+
require 'rubygems/deprecate'
|
17
22
|
require 'minitest/autorun'
|
18
23
|
require 'fileutils'
|
19
24
|
require 'tmpdir'
|
@@ -23,7 +28,6 @@ require 'rubygems/test_utilities'
|
|
23
28
|
require 'pp'
|
24
29
|
require 'zlib'
|
25
30
|
require 'pathname'
|
26
|
-
require 'shellwords'
|
27
31
|
Gem.load_yaml
|
28
32
|
|
29
33
|
require 'rubygems/mock_gem_ui'
|
@@ -38,16 +42,6 @@ module Gem
|
|
38
42
|
@searcher = searcher
|
39
43
|
end
|
40
44
|
|
41
|
-
##
|
42
|
-
# Allows setting the default SourceIndex. This method is available when
|
43
|
-
# requiring 'rubygems/test_case'
|
44
|
-
|
45
|
-
def self.source_index=(si)
|
46
|
-
raise "This method is not supported"
|
47
|
-
Gem::Specification.reset if si # HACK
|
48
|
-
@@source_index = si
|
49
|
-
end
|
50
|
-
|
51
45
|
##
|
52
46
|
# Allows toggling Windows behavior. This method is available when requiring
|
53
47
|
# 'rubygems/test_case'
|
@@ -95,69 +89,14 @@ class Gem::TestCase < MiniTest::Unit::TestCase
|
|
95
89
|
refute File.exist?(path), msg
|
96
90
|
end
|
97
91
|
|
98
|
-
def scan_make_command_lines(output)
|
99
|
-
output.scan(/^#{Regexp.escape make_command}(?:[[:blank:]].*)?$/)
|
100
|
-
end
|
101
|
-
|
102
|
-
def parse_make_command_line(line)
|
103
|
-
command, *args = line.shellsplit
|
104
|
-
|
105
|
-
targets = []
|
106
|
-
macros = {}
|
107
|
-
|
108
|
-
args.each do |arg|
|
109
|
-
case arg
|
110
|
-
when /\A(\w+)=/
|
111
|
-
macros[$1] = $'
|
112
|
-
else
|
113
|
-
targets << arg
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
targets << '' if targets.empty?
|
118
|
-
|
119
|
-
{
|
120
|
-
:command => command,
|
121
|
-
:targets => targets,
|
122
|
-
:macros => macros,
|
123
|
-
}
|
124
|
-
end
|
125
|
-
|
126
|
-
def assert_contains_make_command(target, output, msg = nil)
|
127
|
-
if output.match(/\n/)
|
128
|
-
msg = message(msg) {
|
129
|
-
'Expected output containing make command "%s": %s' % [
|
130
|
-
('%s %s' % [make_command, target]).rstrip,
|
131
|
-
output.inspect
|
132
|
-
]
|
133
|
-
}
|
134
|
-
else
|
135
|
-
msg = message(msg) {
|
136
|
-
'Expected make command "%s": %s' % [
|
137
|
-
('%s %s' % [make_command, target]).rstrip,
|
138
|
-
output.inspect
|
139
|
-
]
|
140
|
-
}
|
141
|
-
end
|
142
|
-
|
143
|
-
assert scan_make_command_lines(output).any? { |line|
|
144
|
-
make = parse_make_command_line(line)
|
145
|
-
|
146
|
-
if make[:targets].include?(target)
|
147
|
-
yield make, line if block_given?
|
148
|
-
true
|
149
|
-
else
|
150
|
-
false
|
151
|
-
end
|
152
|
-
}, msg
|
153
|
-
end
|
154
|
-
|
155
92
|
include Gem::DefaultUserInteraction
|
156
93
|
|
157
94
|
undef_method :default_test if instance_methods.include? 'default_test' or
|
158
95
|
instance_methods.include? :default_test
|
159
96
|
|
160
|
-
@@project_dir = Dir.pwd unless defined?(@@project_dir)
|
97
|
+
@@project_dir = Dir.pwd.untaint unless defined?(@@project_dir)
|
98
|
+
|
99
|
+
@@initial_reset = false
|
161
100
|
|
162
101
|
##
|
163
102
|
# #setup prepares a sandboxed location to install gems. All installs are
|
@@ -179,8 +118,8 @@ class Gem::TestCase < MiniTest::Unit::TestCase
|
|
179
118
|
@current_dir = Dir.pwd
|
180
119
|
@ui = Gem::MockGemUi.new
|
181
120
|
|
182
|
-
|
183
|
-
|
121
|
+
# Need to do this in the project because $SAFE fucks up _everything_
|
122
|
+
tmpdir = File.expand_path("tmp/test")
|
184
123
|
|
185
124
|
if ENV['KEEP_FILES'] then
|
186
125
|
@tempdir = File.join(tmpdir, "test_rubygems_#{$$}.#{Time.now.to_i}")
|
@@ -192,14 +131,14 @@ class Gem::TestCase < MiniTest::Unit::TestCase
|
|
192
131
|
@userhome = File.join @tempdir, 'userhome'
|
193
132
|
|
194
133
|
@orig_ruby = if ruby = ENV['RUBY'] then
|
195
|
-
Gem.class_eval { ruby, @ruby = @ruby, ruby }
|
134
|
+
Gem.class_eval { ruby, @ruby = @ruby, ruby.dup }
|
196
135
|
ruby
|
197
136
|
end
|
198
137
|
|
199
138
|
Gem.ensure_gem_subdirectories @gemhome
|
200
139
|
|
201
140
|
@orig_LOAD_PATH = $LOAD_PATH.dup
|
202
|
-
$LOAD_PATH.map! { |s| File.expand_path
|
141
|
+
$LOAD_PATH.map! { |s| File.expand_path(s).untaint }
|
203
142
|
|
204
143
|
Dir.chdir @tempdir
|
205
144
|
|
@@ -210,21 +149,39 @@ class Gem::TestCase < MiniTest::Unit::TestCase
|
|
210
149
|
FileUtils.mkdir_p @gemhome
|
211
150
|
FileUtils.mkdir_p @userhome
|
212
151
|
|
152
|
+
@default_dir = File.join @tempdir, 'default'
|
153
|
+
@default_spec_dir = File.join @default_dir, "specifications", "default"
|
154
|
+
Gem.instance_variable_set :@default_dir, @default_dir
|
155
|
+
FileUtils.mkdir_p @default_spec_dir
|
156
|
+
|
157
|
+
# We use Gem::Specification.reset the first time only so that if there
|
158
|
+
# are unresolved deps that leak into the whole test suite, they're at least
|
159
|
+
# reported once.
|
160
|
+
if @@initial_reset
|
161
|
+
Gem::Specification.unresolved_deps.clear # done to avoid cross-test warnings
|
162
|
+
else
|
163
|
+
@@initial_reset = true
|
164
|
+
Gem::Specification.reset
|
165
|
+
end
|
213
166
|
Gem.use_paths(@gemhome)
|
214
167
|
|
168
|
+
Gem::Security.reset
|
169
|
+
|
215
170
|
Gem.loaded_specs.clear
|
216
|
-
Gem.
|
171
|
+
Gem.clear_default_specs
|
172
|
+
Gem::Specification.unresolved_deps.clear
|
217
173
|
|
218
174
|
Gem.configuration.verbose = true
|
219
175
|
Gem.configuration.update_sources = true
|
220
176
|
|
177
|
+
Gem::RemoteFetcher.fetcher = Gem::FakeFetcher.new
|
178
|
+
|
221
179
|
@gem_repo = "http://gems.example.com/"
|
222
180
|
@uri = URI.parse @gem_repo
|
223
181
|
Gem.sources.replace [@gem_repo]
|
224
182
|
|
225
183
|
Gem.searcher = nil
|
226
184
|
Gem::SpecFetcher.fetcher = nil
|
227
|
-
|
228
185
|
@orig_BASERUBY = Gem::ConfigMap[:BASERUBY]
|
229
186
|
Gem::ConfigMap[:BASERUBY] = Gem::ConfigMap[:ruby_install_name]
|
230
187
|
|
@@ -241,8 +198,11 @@ class Gem::TestCase < MiniTest::Unit::TestCase
|
|
241
198
|
# TODO: move to installer test cases
|
242
199
|
Gem.post_build_hooks.clear
|
243
200
|
Gem.post_install_hooks.clear
|
201
|
+
Gem.done_installing_hooks.clear
|
202
|
+
Gem.post_reset_hooks.clear
|
244
203
|
Gem.post_uninstall_hooks.clear
|
245
204
|
Gem.pre_install_hooks.clear
|
205
|
+
Gem.pre_reset_hooks.clear
|
246
206
|
Gem.pre_uninstall_hooks.clear
|
247
207
|
|
248
208
|
# TODO: move to installer test cases
|
@@ -274,7 +234,7 @@ class Gem::TestCase < MiniTest::Unit::TestCase
|
|
274
234
|
# tempdir unless the +KEEP_FILES+ environment variable was set.
|
275
235
|
|
276
236
|
def teardown
|
277
|
-
$LOAD_PATH.replace @orig_LOAD_PATH
|
237
|
+
$LOAD_PATH.replace @orig_LOAD_PATH if @orig_LOAD_PATH
|
278
238
|
|
279
239
|
Gem::ConfigMap[:BASERUBY] = @orig_BASERUBY
|
280
240
|
Gem::ConfigMap[:arch] = @orig_arch
|
@@ -298,6 +258,8 @@ class Gem::TestCase < MiniTest::Unit::TestCase
|
|
298
258
|
else
|
299
259
|
ENV.delete 'HOME'
|
300
260
|
end
|
261
|
+
|
262
|
+
Gem.instance_variable_set :@default_dir, nil
|
301
263
|
end
|
302
264
|
|
303
265
|
##
|
@@ -306,13 +268,17 @@ class Gem::TestCase < MiniTest::Unit::TestCase
|
|
306
268
|
def install_gem spec, options = {}
|
307
269
|
require 'rubygems/installer'
|
308
270
|
|
309
|
-
|
310
|
-
|
311
|
-
|
271
|
+
gem = File.join @tempdir, "gems", "#{spec.full_name}.gem"
|
272
|
+
|
273
|
+
unless File.exists? gem
|
274
|
+
use_ui Gem::MockGemUi.new do
|
275
|
+
Dir.chdir @tempdir do
|
276
|
+
Gem::Package.build spec
|
277
|
+
end
|
312
278
|
end
|
313
|
-
end
|
314
279
|
|
315
|
-
|
280
|
+
gem = File.join(@tempdir, File.basename(spec.cache_file)).untaint
|
281
|
+
end
|
316
282
|
|
317
283
|
Gem::Installer.new(gem, options.merge({:wrappers => true})).install
|
318
284
|
end
|
@@ -335,6 +301,7 @@ class Gem::TestCase < MiniTest::Unit::TestCase
|
|
335
301
|
|
336
302
|
##
|
337
303
|
# creates a temporary directory with hax
|
304
|
+
# TODO: deprecate and remove
|
338
305
|
|
339
306
|
def create_tmpdir
|
340
307
|
tmpdir = nil
|
@@ -395,8 +362,7 @@ class Gem::TestCase < MiniTest::Unit::TestCase
|
|
395
362
|
# homepage, summary and description are defaulted. The specification is
|
396
363
|
# yielded for customization.
|
397
364
|
#
|
398
|
-
# The gem is added to the installed gems in +@gemhome+ and
|
399
|
-
# source_index.
|
365
|
+
# The gem is added to the installed gems in +@gemhome+ and the runtime.
|
400
366
|
#
|
401
367
|
# Use this with #write_file to build an installed gem.
|
402
368
|
|
@@ -469,7 +435,7 @@ class Gem::TestCase < MiniTest::Unit::TestCase
|
|
469
435
|
end
|
470
436
|
|
471
437
|
use_ui Gem::MockGemUi.new do
|
472
|
-
Gem::
|
438
|
+
Gem::Package.build spec
|
473
439
|
end
|
474
440
|
|
475
441
|
cache = spec.cache_file
|
@@ -499,6 +465,16 @@ class Gem::TestCase < MiniTest::Unit::TestCase
|
|
499
465
|
Gem.searcher = nil
|
500
466
|
end
|
501
467
|
|
468
|
+
##
|
469
|
+
# Install the provided default specs
|
470
|
+
|
471
|
+
def install_default_specs(*specs)
|
472
|
+
install_specs(*specs)
|
473
|
+
specs.each do |spec|
|
474
|
+
Gem.register_default_spec(spec)
|
475
|
+
end
|
476
|
+
end
|
477
|
+
|
502
478
|
##
|
503
479
|
# Create a new spec (or gem if passed an array of files) and set it
|
504
480
|
# up properly. Use this instead of util_spec and util_gem.
|
@@ -543,6 +519,24 @@ class Gem::TestCase < MiniTest::Unit::TestCase
|
|
543
519
|
spec
|
544
520
|
end
|
545
521
|
|
522
|
+
def new_default_spec(name, version, deps = nil, *files)
|
523
|
+
spec = new_spec(name, version, deps)
|
524
|
+
spec.loaded_from = File.join(@default_spec_dir, spec.spec_name)
|
525
|
+
spec.files = files
|
526
|
+
|
527
|
+
lib_dir = File.join(@tempdir, "default_gems", "lib")
|
528
|
+
$LOAD_PATH.unshift(lib_dir)
|
529
|
+
files.each do |file|
|
530
|
+
rb_path = File.join(lib_dir, file)
|
531
|
+
FileUtils.mkdir_p(File.dirname(rb_path))
|
532
|
+
File.open(rb_path, "w") do |rb|
|
533
|
+
rb << "# #{file}"
|
534
|
+
end
|
535
|
+
end
|
536
|
+
|
537
|
+
spec
|
538
|
+
end
|
539
|
+
|
546
540
|
##
|
547
541
|
# Creates a spec with +name+, +version+ and +deps+.
|
548
542
|
|
@@ -657,6 +651,12 @@ Also, a list:
|
|
657
651
|
@a_evil9 = quick_gem('a_evil', '9', &init)
|
658
652
|
@b2 = quick_gem('b', '2', &init)
|
659
653
|
@c1_2 = quick_gem('c', '1.2', &init)
|
654
|
+
@x = quick_gem('x', '1', &init)
|
655
|
+
@dep_x = quick_gem('dep_x', '1') do |s|
|
656
|
+
s.files = %w[lib/code.rb]
|
657
|
+
s.require_paths = %w[lib]
|
658
|
+
s.add_dependency 'x', '>= 1'
|
659
|
+
end
|
660
660
|
|
661
661
|
@pl1 = quick_gem 'pl', '1' do |s| # l for legacy
|
662
662
|
s.files = %w[lib/code.rb]
|
@@ -677,8 +677,10 @@ Also, a list:
|
|
677
677
|
write_file File.join(*%W[gems #{@b2.original_name} lib code.rb])
|
678
678
|
write_file File.join(*%W[gems #{@c1_2.original_name} lib code.rb])
|
679
679
|
write_file File.join(*%W[gems #{@pl1.original_name} lib code.rb])
|
680
|
+
write_file File.join(*%W[gems #{@x.original_name} lib code.rb])
|
681
|
+
write_file File.join(*%W[gems #{@dep_x.original_name} lib code.rb])
|
680
682
|
|
681
|
-
[@a1, @a2, @a3a, @a_evil9, @b2, @c1_2, @pl1].each do |spec|
|
683
|
+
[@a1, @a2, @a3a, @a_evil9, @b2, @c1_2, @pl1, @x, @dep_x].each do |spec|
|
682
684
|
util_build_gem spec
|
683
685
|
end
|
684
686
|
|
@@ -723,6 +725,15 @@ Also, a list:
|
|
723
725
|
Gem::RemoteFetcher.fetcher = @fetcher
|
724
726
|
end
|
725
727
|
|
728
|
+
##
|
729
|
+
# Add +spec+ to +@fetcher+ serving the data in the file +path+.
|
730
|
+
# +repo+ indicates which repo to make +spec+ appear to be in.
|
731
|
+
|
732
|
+
def add_to_fetcher(spec, path=nil, repo=@gem_repo)
|
733
|
+
path ||= spec.cache_file
|
734
|
+
@fetcher.data["#{@gem_repo}gems/#{spec.file_name}"] = read_binary(path)
|
735
|
+
end
|
736
|
+
|
726
737
|
##
|
727
738
|
# Sets up Gem::SpecFetcher to return information from the gems in +specs+.
|
728
739
|
# Best used with +@all_gems+ from #util_setup_fake_fetcher.
|
@@ -733,26 +744,23 @@ Also, a list:
|
|
733
744
|
|
734
745
|
spec_fetcher = Gem::SpecFetcher.fetcher
|
735
746
|
|
736
|
-
prerelease,
|
747
|
+
prerelease, all = Gem::Specification.partition { |spec|
|
737
748
|
spec.version.prerelease?
|
738
749
|
}
|
739
750
|
|
740
751
|
spec_fetcher.specs[@uri] = []
|
741
|
-
|
742
|
-
|
743
|
-
spec_fetcher.specs[@uri] << spec_tuple
|
752
|
+
all.each do |spec|
|
753
|
+
spec_fetcher.specs[@uri] << spec.name_tuple
|
744
754
|
end
|
745
755
|
|
746
756
|
spec_fetcher.latest_specs[@uri] = []
|
747
757
|
Gem::Specification.latest_specs.each do |spec|
|
748
|
-
|
749
|
-
spec_fetcher.latest_specs[@uri] << spec_tuple
|
758
|
+
spec_fetcher.latest_specs[@uri] << spec.name_tuple
|
750
759
|
end
|
751
760
|
|
752
761
|
spec_fetcher.prerelease_specs[@uri] = []
|
753
762
|
prerelease.each do |spec|
|
754
|
-
|
755
|
-
spec_fetcher.prerelease_specs[@uri] << spec_tuple
|
763
|
+
spec_fetcher.prerelease_specs[@uri] << spec.name_tuple
|
756
764
|
end
|
757
765
|
|
758
766
|
v = Gem.marshal_version
|
@@ -829,6 +837,14 @@ Also, a list:
|
|
829
837
|
system('nmake /? 1>NUL 2>&1')
|
830
838
|
end
|
831
839
|
|
840
|
+
# In case we're building docs in a background process, this method waits for
|
841
|
+
# that process to exit (or if it's already been reaped, or never happened,
|
842
|
+
# swallows the Errno::ECHILD error).
|
843
|
+
def wait_for_child_process_to_exit
|
844
|
+
Process.wait if Process.respond_to?(:fork)
|
845
|
+
rescue Errno::ECHILD
|
846
|
+
end
|
847
|
+
|
832
848
|
##
|
833
849
|
# Allows tests to use a random (but controlled) port number instead of
|
834
850
|
# a hardcoded one. This helps CI tools when running parallels builds on
|
@@ -848,12 +864,13 @@ Also, a list:
|
|
848
864
|
##
|
849
865
|
# Allows the proper version of +rake+ to be used for the test.
|
850
866
|
|
851
|
-
def build_rake_in
|
867
|
+
def build_rake_in(good=true)
|
852
868
|
gem_ruby = Gem.ruby
|
853
869
|
Gem.ruby = @@ruby
|
854
870
|
env_rake = ENV["rake"]
|
855
|
-
|
856
|
-
|
871
|
+
rake = (good ? @@good_rake : @@bad_rake)
|
872
|
+
ENV["rake"] = rake
|
873
|
+
yield rake
|
857
874
|
ensure
|
858
875
|
Gem.ruby = gem_ruby
|
859
876
|
if env_rake
|
@@ -893,15 +910,8 @@ Also, a list:
|
|
893
910
|
end
|
894
911
|
|
895
912
|
@@ruby = rubybin
|
896
|
-
|
897
|
-
|
898
|
-
@@rake = if env_rake then
|
899
|
-
ENV["rake"]
|
900
|
-
elsif File.exist? ruby19_rake then
|
901
|
-
@@ruby + " " + ruby19_rake
|
902
|
-
else
|
903
|
-
'rake'
|
904
|
-
end
|
913
|
+
@@good_rake = "#{rubybin} #{File.expand_path('../../../test/rubygems/good_rake.rb', __FILE__)}"
|
914
|
+
@@bad_rake = "#{rubybin} #{File.expand_path('../../../test/rubygems/bad_rake.rb', __FILE__)}"
|
905
915
|
|
906
916
|
##
|
907
917
|
# Construct a new Gem::Dependency.
|
@@ -932,4 +942,84 @@ Also, a list:
|
|
932
942
|
Gem::Version.create string
|
933
943
|
end
|
934
944
|
|
945
|
+
class StaticSet
|
946
|
+
def initialize(specs)
|
947
|
+
@specs = specs.sort_by { |s| s.full_name }
|
948
|
+
end
|
949
|
+
|
950
|
+
def find_spec(dep)
|
951
|
+
@specs.reverse_each do |s|
|
952
|
+
return s if dep.matches_spec? s
|
953
|
+
end
|
954
|
+
end
|
955
|
+
|
956
|
+
def find_all(dep)
|
957
|
+
@specs.find_all { |s| dep.matches_spec? s }
|
958
|
+
end
|
959
|
+
|
960
|
+
def prefetch(reqs)
|
961
|
+
end
|
962
|
+
end
|
963
|
+
|
964
|
+
##
|
965
|
+
# Loads certificate named +cert_name+ from <tt>test/rubygems/</tt>.
|
966
|
+
|
967
|
+
def self.load_cert cert_name
|
968
|
+
cert_file = cert_path cert_name
|
969
|
+
|
970
|
+
cert = File.read cert_file
|
971
|
+
|
972
|
+
OpenSSL::X509::Certificate.new cert
|
973
|
+
end
|
974
|
+
|
975
|
+
##
|
976
|
+
# Returns the path to the certificate named +cert_name+ from
|
977
|
+
# <tt>test/rubygems/</tt>.
|
978
|
+
|
979
|
+
def self.cert_path cert_name
|
980
|
+
if 32 == (Time.at(2**32) rescue 32) then
|
981
|
+
cert_file =
|
982
|
+
File.expand_path "../../../test/rubygems/#{cert_name}_cert_32.pem",
|
983
|
+
__FILE__
|
984
|
+
|
985
|
+
return cert_file if File.exist? cert_file
|
986
|
+
end
|
987
|
+
|
988
|
+
File.expand_path "../../../test/rubygems/#{cert_name}_cert.pem", __FILE__
|
989
|
+
end
|
990
|
+
|
991
|
+
##
|
992
|
+
# Loads an RSA private key named +key_name+ in <tt>test/rubygems/</tt>
|
993
|
+
|
994
|
+
def self.load_key key_name
|
995
|
+
key_file = key_path key_name
|
996
|
+
|
997
|
+
key = File.read key_file
|
998
|
+
|
999
|
+
OpenSSL::PKey::RSA.new key
|
1000
|
+
end
|
1001
|
+
|
1002
|
+
##
|
1003
|
+
# Returns the path tot he key named +key_name+ from <tt>test/rubygems</tt>
|
1004
|
+
|
1005
|
+
def self.key_path key_name
|
1006
|
+
File.expand_path "../../../test/rubygems/#{key_name}_key.pem", __FILE__
|
1007
|
+
end
|
1008
|
+
|
1009
|
+
# :stopdoc:
|
1010
|
+
# only available in RubyGems tests
|
1011
|
+
|
1012
|
+
begin
|
1013
|
+
PRIVATE_KEY = load_key 'private'
|
1014
|
+
PRIVATE_KEY_PATH = key_path 'private'
|
1015
|
+
PUBLIC_KEY = PRIVATE_KEY.public_key
|
1016
|
+
|
1017
|
+
PUBLIC_CERT = load_cert 'public'
|
1018
|
+
PUBLIC_CERT_PATH = cert_path 'public'
|
1019
|
+
rescue Errno::ENOENT
|
1020
|
+
PRIVATE_KEY = nil
|
1021
|
+
PUBLIC_KEY = nil
|
1022
|
+
PUBLIC_CERT = nil
|
1023
|
+
end
|
1024
|
+
|
935
1025
|
end
|