rubygems-update 1.8.30 → 2.0.0.preview2
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.
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,24 +1,104 @@
|
|
1
1
|
require 'rubygems/installer_test_case'
|
2
2
|
require 'rubygems/install_update_options'
|
3
3
|
require 'rubygems/command'
|
4
|
+
require 'rubygems/dependency_installer'
|
4
5
|
|
5
6
|
class TestGemInstallUpdateOptions < Gem::InstallerTestCase
|
6
7
|
|
7
8
|
def setup
|
8
9
|
super
|
9
10
|
|
10
|
-
@cmd = Gem::Command.new 'dummy', 'dummy'
|
11
|
+
@cmd = Gem::Command.new 'dummy', 'dummy',
|
12
|
+
Gem::DependencyInstaller::DEFAULT_OPTIONS
|
11
13
|
@cmd.extend Gem::InstallUpdateOptions
|
12
14
|
@cmd.add_install_update_options
|
13
15
|
end
|
14
16
|
|
15
17
|
def test_add_install_update_options
|
16
|
-
args = %w[
|
17
|
-
|
18
|
+
args = %w[
|
19
|
+
--document
|
20
|
+
--format-exec
|
21
|
+
--ignore-dependencies
|
22
|
+
--rdoc
|
23
|
+
--ri
|
24
|
+
-E
|
25
|
+
-P HighSecurity
|
26
|
+
-f
|
27
|
+
-i /install_to
|
28
|
+
-w
|
29
|
+
]
|
18
30
|
|
19
31
|
assert @cmd.handles?(args)
|
20
32
|
end
|
21
33
|
|
34
|
+
def test_doc
|
35
|
+
@cmd.handle_options %w[--doc]
|
36
|
+
|
37
|
+
assert_equal %w[ri], @cmd.options[:document].sort
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_doc_rdoc
|
41
|
+
@cmd.handle_options %w[--doc=rdoc]
|
42
|
+
|
43
|
+
assert_equal %w[rdoc], @cmd.options[:document]
|
44
|
+
|
45
|
+
@cmd.handle_options %w[--doc ri]
|
46
|
+
|
47
|
+
assert_equal %w[ri], @cmd.options[:document]
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_doc_rdoc_ri
|
51
|
+
@cmd.handle_options %w[--doc=rdoc,ri]
|
52
|
+
|
53
|
+
assert_equal %w[rdoc ri], @cmd.options[:document]
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_doc_no
|
57
|
+
@cmd.handle_options %w[--no-doc]
|
58
|
+
|
59
|
+
assert_equal [], @cmd.options[:document]
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_document
|
63
|
+
@cmd.handle_options %w[--document]
|
64
|
+
|
65
|
+
assert_equal %w[ri], @cmd.options[:document].sort
|
66
|
+
end
|
67
|
+
|
68
|
+
def test_document_no
|
69
|
+
@cmd.handle_options %w[--no-document]
|
70
|
+
|
71
|
+
assert_equal %w[], @cmd.options[:document]
|
72
|
+
end
|
73
|
+
|
74
|
+
def test_document_rdoc
|
75
|
+
@cmd.handle_options %w[--document=rdoc]
|
76
|
+
|
77
|
+
assert_equal %w[rdoc], @cmd.options[:document]
|
78
|
+
|
79
|
+
@cmd.handle_options %w[--document ri]
|
80
|
+
|
81
|
+
assert_equal %w[ri], @cmd.options[:document]
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_rdoc
|
85
|
+
@cmd.handle_options %w[--rdoc]
|
86
|
+
|
87
|
+
assert_equal %w[rdoc ri], @cmd.options[:document].sort
|
88
|
+
end
|
89
|
+
|
90
|
+
def test_rdoc_no
|
91
|
+
@cmd.handle_options %w[--no-rdoc]
|
92
|
+
|
93
|
+
assert_equal %w[ri], @cmd.options[:document]
|
94
|
+
end
|
95
|
+
|
96
|
+
def test_ri
|
97
|
+
@cmd.handle_options %w[--no-ri]
|
98
|
+
|
99
|
+
assert_equal %w[], @cmd.options[:document]
|
100
|
+
end
|
101
|
+
|
22
102
|
def test_security_policy
|
23
103
|
@cmd.handle_options %w[-P HighSecurity]
|
24
104
|
|
@@ -2,24 +2,24 @@ require 'rubygems/installer_test_case'
|
|
2
2
|
|
3
3
|
class TestGemInstaller < Gem::InstallerTestCase
|
4
4
|
|
5
|
-
def
|
6
|
-
|
7
|
-
Gem.use_paths @installer_tmp
|
5
|
+
def setup
|
6
|
+
super
|
8
7
|
|
9
|
-
|
10
|
-
|
8
|
+
if __name__ =~ /^test_install(_|$)/ then
|
9
|
+
FileUtils.rm_r @spec.gem_dir
|
10
|
+
FileUtils.rm_r @user_spec.gem_dir
|
11
|
+
end
|
11
12
|
|
12
|
-
@
|
13
|
-
@installer.gem_home = @installer_tmp
|
14
|
-
@installer.gem_dir = @spec.gem_dir
|
15
|
-
@user_installer.spec = @user_spec
|
16
|
-
@user_installer.gem_home = @installer_tmp
|
13
|
+
@config = Gem.configuration
|
17
14
|
end
|
18
15
|
|
19
|
-
def
|
20
|
-
|
16
|
+
def teardown
|
17
|
+
super
|
21
18
|
|
22
|
-
|
19
|
+
Gem.configuration = @config
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_app_script_text
|
23
23
|
util_make_exec @spec, ''
|
24
24
|
|
25
25
|
expected = <<-EOF
|
@@ -53,8 +53,6 @@ load Gem.bin_path('a', 'executable', version)
|
|
53
53
|
end
|
54
54
|
|
55
55
|
def test_build_extensions_none
|
56
|
-
util_setup_install
|
57
|
-
|
58
56
|
use_ui @ui do
|
59
57
|
@installer.build_extensions
|
60
58
|
end
|
@@ -66,8 +64,7 @@ load Gem.bin_path('a', 'executable', version)
|
|
66
64
|
end
|
67
65
|
|
68
66
|
def test_build_extensions_extconf_bad
|
69
|
-
|
70
|
-
|
67
|
+
@installer.spec = @spec
|
71
68
|
@spec.extensions << 'extconf.rb'
|
72
69
|
|
73
70
|
e = assert_raises Gem::Installer::ExtensionBuildError do
|
@@ -91,9 +88,9 @@ load Gem.bin_path('a', 'executable', version)
|
|
91
88
|
end
|
92
89
|
|
93
90
|
def test_build_extensions_unsupported
|
94
|
-
|
95
|
-
|
96
|
-
gem_make_out = File.join @
|
91
|
+
@installer.spec = @spec
|
92
|
+
FileUtils.mkdir_p @spec.gem_dir
|
93
|
+
gem_make_out = File.join @spec.gem_dir, 'gem_make.out'
|
97
94
|
@spec.extensions << nil
|
98
95
|
|
99
96
|
e = assert_raises Gem::Installer::ExtensionBuildError do
|
@@ -113,95 +110,148 @@ load Gem.bin_path('a', 'executable', version)
|
|
113
110
|
FileUtils.rm_f gem_make_out
|
114
111
|
end
|
115
112
|
|
116
|
-
def
|
117
|
-
|
113
|
+
def test_build_extensions_with_build_args
|
114
|
+
args = ["--aa", "--bb"]
|
115
|
+
@installer.build_args = args
|
116
|
+
@installer.spec = @spec
|
117
|
+
@spec.extensions << 'extconf.rb'
|
118
118
|
|
119
|
-
|
120
|
-
|
119
|
+
File.open File.join(@spec.gem_dir, "extconf.rb"), "w" do |f|
|
120
|
+
f.write <<-'RUBY'
|
121
|
+
puts "IN EXTCONF"
|
122
|
+
File.open 'extconf_args', 'w' do |f|
|
123
|
+
f.puts ARGV.inspect
|
124
|
+
end
|
125
|
+
|
126
|
+
File.open 'Makefile', 'w' do |f|
|
127
|
+
f.puts "default:\n\techo built"
|
128
|
+
f.puts "install:\n\techo installed"
|
129
|
+
end
|
130
|
+
RUBY
|
131
|
+
end
|
121
132
|
|
122
|
-
|
123
|
-
|
124
|
-
@installer.ensure_dependency @spec, dep
|
133
|
+
use_ui @ui do
|
134
|
+
@installer.build_extensions
|
125
135
|
end
|
126
136
|
|
127
|
-
|
137
|
+
path = File.join @spec.gem_dir, "extconf_args"
|
138
|
+
|
139
|
+
assert_equal args.inspect, File.read(path).strip
|
128
140
|
end
|
129
141
|
|
130
|
-
def
|
131
|
-
|
142
|
+
def test_check_executable_overwrite
|
143
|
+
@installer.generate_bin
|
132
144
|
|
133
|
-
|
134
|
-
|
135
|
-
|
145
|
+
@spec = Gem::Specification.new do |s|
|
146
|
+
s.files = ['lib/code.rb']
|
147
|
+
s.name = "a"
|
148
|
+
s.version = "3"
|
149
|
+
s.summary = "summary"
|
150
|
+
s.description = "desc"
|
151
|
+
s.require_path = 'lib'
|
136
152
|
end
|
137
153
|
|
138
|
-
|
154
|
+
util_make_exec
|
155
|
+
@installer.gem_dir = util_gem_dir @spec
|
156
|
+
@installer.wrappers = true
|
157
|
+
@installer.generate_bin
|
139
158
|
|
140
|
-
|
159
|
+
installed_exec = File.join util_inst_bindir, 'executable'
|
160
|
+
assert File.exist? installed_exec
|
141
161
|
|
142
|
-
|
143
|
-
|
162
|
+
wrapper = File.read installed_exec
|
163
|
+
assert_match %r|generated by RubyGems|, wrapper
|
164
|
+
end
|
144
165
|
|
145
|
-
|
146
|
-
|
166
|
+
def test_check_executable_overwrite_default_bin_dir
|
167
|
+
if defined?(RUBY_FRAMEWORK_VERSION)
|
168
|
+
orig_RUBY_FRAMEWORK_VERSION = RUBY_FRAMEWORK_VERSION
|
169
|
+
Object.send :remove_const, :RUBY_FRAMEWORK_VERSION
|
147
170
|
end
|
148
|
-
|
171
|
+
orig_bindir = Gem::ConfigMap[:bindir]
|
172
|
+
Gem::ConfigMap[:bindir] = Gem.bindir
|
149
173
|
|
150
|
-
|
151
|
-
util_setup_install
|
174
|
+
util_conflict_executable false
|
152
175
|
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
176
|
+
ui = Gem::MockGemUi.new "n\n"
|
177
|
+
use_ui ui do
|
178
|
+
e = assert_raises Gem::InstallError do
|
179
|
+
@installer.generate_bin
|
180
|
+
end
|
158
181
|
|
159
|
-
|
182
|
+
conflicted = File.join @gemhome, 'bin', 'executable'
|
183
|
+
assert_match /\A"executable" from a conflicts with (?:#{Regexp.quote(conflicted)}|installed executable from conflict)\z/,
|
184
|
+
e.message
|
185
|
+
end
|
186
|
+
ensure
|
187
|
+
Object.const_set :RUBY_FRAMEWORK_VERSION, orig_RUBY_FRAMEWORK_VERSION if
|
188
|
+
orig_RUBY_FRAMEWORK_VERSION
|
189
|
+
Gem::ConfigMap[:bindir] = orig_bindir
|
160
190
|
end
|
161
191
|
|
162
|
-
def
|
163
|
-
|
192
|
+
def test_check_executable_overwrite_other_gem
|
193
|
+
util_conflict_executable true
|
164
194
|
|
165
|
-
|
166
|
-
def format.file_entries
|
167
|
-
[[{'size' => 10, 'mode' => 0644, 'path' => '../thefile'}, '../thefile']]
|
168
|
-
end
|
195
|
+
ui = Gem::MockGemUi.new "n\n"
|
169
196
|
|
170
|
-
|
197
|
+
use_ui ui do
|
198
|
+
e = assert_raises Gem::InstallError do
|
199
|
+
@installer.generate_bin
|
200
|
+
end
|
171
201
|
|
172
|
-
|
173
|
-
|
202
|
+
assert_equal '"executable" from a conflicts with installed executable from conflict',
|
203
|
+
e.message
|
174
204
|
end
|
205
|
+
end
|
175
206
|
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
207
|
+
def test_check_executable_overwrite_other_gem_force
|
208
|
+
util_conflict_executable true
|
209
|
+
@installer.wrappers = true
|
210
|
+
@installer.force = true
|
211
|
+
|
212
|
+
@installer.generate_bin
|
213
|
+
|
214
|
+
installed_exec = File.join util_inst_bindir, 'executable'
|
215
|
+
assert File.exist? installed_exec
|
216
|
+
|
217
|
+
wrapper = File.read installed_exec
|
218
|
+
assert_match %r|generated by RubyGems|, wrapper
|
181
219
|
end
|
182
220
|
|
183
|
-
def
|
184
|
-
|
221
|
+
def test_check_executable_overwrite_other_non_gem
|
222
|
+
util_conflict_executable false
|
223
|
+
@installer.wrappers = true
|
224
|
+
|
225
|
+
@installer.generate_bin
|
185
226
|
|
186
|
-
|
187
|
-
|
188
|
-
[[{'size' => 8, 'mode' => 0644, 'path' => '/thefile'}, '/thefile']]
|
189
|
-
end
|
227
|
+
installed_exec = File.join util_inst_bindir, 'executable'
|
228
|
+
assert File.exist? installed_exec
|
190
229
|
|
191
|
-
|
230
|
+
wrapper = File.read installed_exec
|
231
|
+
assert_match %r|generated by RubyGems|, wrapper
|
232
|
+
end unless Gem.win_platform?
|
192
233
|
|
234
|
+
def test_ensure_dependency
|
235
|
+
quick_spec 'a'
|
236
|
+
|
237
|
+
dep = Gem::Dependency.new 'a', '>= 2'
|
238
|
+
assert @installer.ensure_dependency(@spec, dep)
|
239
|
+
|
240
|
+
dep = Gem::Dependency.new 'b', '> 2'
|
193
241
|
e = assert_raises Gem::InstallError do
|
194
|
-
@installer.
|
242
|
+
@installer.ensure_dependency @spec, dep
|
195
243
|
end
|
196
244
|
|
197
|
-
assert_equal '
|
198
|
-
assert_equal false, File.file?(File.join('/thefile')),
|
199
|
-
"You may need to remove this file if you broke the test once"
|
245
|
+
assert_equal 'a requires b (> 2)', e.message
|
200
246
|
end
|
201
247
|
|
202
|
-
def
|
203
|
-
|
248
|
+
def test_extract_files
|
249
|
+
@installer.extract_files
|
250
|
+
|
251
|
+
assert_path_exists File.join util_gem_dir, 'bin/executable'
|
252
|
+
end
|
204
253
|
|
254
|
+
def test_generate_bin_bindir
|
205
255
|
@installer.wrappers = true
|
206
256
|
|
207
257
|
@spec.executables = %w[executable]
|
@@ -227,8 +277,6 @@ load Gem.bin_path('a', 'executable', version)
|
|
227
277
|
end
|
228
278
|
|
229
279
|
def test_generate_bin_bindir_with_user_install_warning
|
230
|
-
util_setup_install
|
231
|
-
|
232
280
|
bin_dir = Gem.win_platform? ? File.expand_path(ENV["WINDIR"]).upcase :
|
233
281
|
"/usr/bin"
|
234
282
|
|
@@ -237,7 +285,7 @@ load Gem.bin_path('a', 'executable', version)
|
|
237
285
|
:install_dir => "/non/existant"
|
238
286
|
}
|
239
287
|
|
240
|
-
inst = Gem::Installer.new
|
288
|
+
inst = Gem::Installer.new '', options
|
241
289
|
|
242
290
|
Gem::Installer.path_warning = false
|
243
291
|
|
@@ -249,16 +297,14 @@ load Gem.bin_path('a', 'executable', version)
|
|
249
297
|
end
|
250
298
|
|
251
299
|
def test_generate_bin_script
|
252
|
-
util_setup_install
|
253
|
-
|
254
300
|
@installer.wrappers = true
|
255
301
|
util_make_exec
|
256
302
|
@installer.gem_dir = util_gem_dir
|
257
303
|
|
258
304
|
@installer.generate_bin
|
259
|
-
|
260
|
-
installed_exec = File.join
|
261
|
-
|
305
|
+
assert File.directory? util_inst_bindir
|
306
|
+
installed_exec = File.join util_inst_bindir, 'executable'
|
307
|
+
assert File.exist? installed_exec
|
262
308
|
assert_equal mask, File.stat(installed_exec).mode unless win_platform?
|
263
309
|
|
264
310
|
wrapper = File.read installed_exec
|
@@ -266,8 +312,6 @@ load Gem.bin_path('a', 'executable', version)
|
|
266
312
|
end
|
267
313
|
|
268
314
|
def test_generate_bin_script_format
|
269
|
-
util_setup_install
|
270
|
-
|
271
315
|
@installer.format_executable = true
|
272
316
|
@installer.wrappers = true
|
273
317
|
util_make_exec
|
@@ -283,8 +327,6 @@ load Gem.bin_path('a', 'executable', version)
|
|
283
327
|
end
|
284
328
|
|
285
329
|
def test_generate_bin_script_format_disabled
|
286
|
-
util_setup_install
|
287
|
-
|
288
330
|
@installer.wrappers = true
|
289
331
|
util_make_exec
|
290
332
|
@installer.gem_dir = util_gem_dir
|
@@ -299,10 +341,7 @@ load Gem.bin_path('a', 'executable', version)
|
|
299
341
|
end
|
300
342
|
|
301
343
|
def test_generate_bin_script_install_dir
|
302
|
-
util_setup_install
|
303
|
-
|
304
344
|
@installer.wrappers = true
|
305
|
-
@spec.executables = %w[executable]
|
306
345
|
|
307
346
|
gem_dir = File.join("#{@gemhome}2", "gems", @spec.full_name)
|
308
347
|
gem_bindir = File.join gem_dir, 'bin'
|
@@ -313,11 +352,12 @@ load Gem.bin_path('a', 'executable', version)
|
|
313
352
|
|
314
353
|
@installer.gem_home = "#{@gemhome}2"
|
315
354
|
@installer.gem_dir = gem_dir
|
355
|
+
@installer.bin_dir = File.join "#{@gemhome}2", 'bin'
|
316
356
|
|
317
357
|
@installer.generate_bin
|
318
358
|
|
319
359
|
installed_exec = File.join("#{@gemhome}2", "bin", 'executable')
|
320
|
-
|
360
|
+
assert File.exist? installed_exec
|
321
361
|
assert_equal mask, File.stat(installed_exec).mode unless win_platform?
|
322
362
|
|
323
363
|
wrapper = File.read installed_exec
|
@@ -325,8 +365,6 @@ load Gem.bin_path('a', 'executable', version)
|
|
325
365
|
end
|
326
366
|
|
327
367
|
def test_generate_bin_script_no_execs
|
328
|
-
util_setup_install
|
329
|
-
|
330
368
|
util_execless
|
331
369
|
|
332
370
|
@installer.wrappers = true
|
@@ -336,8 +374,6 @@ load Gem.bin_path('a', 'executable', version)
|
|
336
374
|
end
|
337
375
|
|
338
376
|
def test_generate_bin_script_no_perms
|
339
|
-
util_setup_install
|
340
|
-
|
341
377
|
@installer.wrappers = true
|
342
378
|
util_make_exec
|
343
379
|
|
@@ -357,8 +393,6 @@ load Gem.bin_path('a', 'executable', version)
|
|
357
393
|
end
|
358
394
|
|
359
395
|
def test_generate_bin_script_no_shebang
|
360
|
-
util_setup_install
|
361
|
-
|
362
396
|
@installer.wrappers = true
|
363
397
|
@spec.executables = %w[executable]
|
364
398
|
|
@@ -382,8 +416,6 @@ load Gem.bin_path('a', 'executable', version)
|
|
382
416
|
end
|
383
417
|
|
384
418
|
def test_generate_bin_script_wrappers
|
385
|
-
util_setup_install
|
386
|
-
|
387
419
|
@installer.wrappers = true
|
388
420
|
util_make_exec
|
389
421
|
@installer.gem_dir = util_gem_dir
|
@@ -409,8 +441,6 @@ load Gem.bin_path('a', 'executable', version)
|
|
409
441
|
end
|
410
442
|
|
411
443
|
def test_generate_bin_symlink
|
412
|
-
util_setup_install
|
413
|
-
|
414
444
|
return if win_platform? #Windows FS do not support symlinks
|
415
445
|
|
416
446
|
@installer.wrappers = false
|
@@ -426,8 +456,6 @@ load Gem.bin_path('a', 'executable', version)
|
|
426
456
|
end
|
427
457
|
|
428
458
|
def test_generate_bin_symlink_no_execs
|
429
|
-
util_setup_install
|
430
|
-
|
431
459
|
util_execless
|
432
460
|
|
433
461
|
@installer.wrappers = false
|
@@ -437,8 +465,6 @@ load Gem.bin_path('a', 'executable', version)
|
|
437
465
|
end
|
438
466
|
|
439
467
|
def test_generate_bin_symlink_no_perms
|
440
|
-
util_setup_install
|
441
|
-
|
442
468
|
@installer.wrappers = false
|
443
469
|
util_make_exec
|
444
470
|
@installer.gem_dir = util_gem_dir
|
@@ -459,8 +485,6 @@ load Gem.bin_path('a', 'executable', version)
|
|
459
485
|
end
|
460
486
|
|
461
487
|
def test_generate_bin_symlink_update_newer
|
462
|
-
util_setup_install
|
463
|
-
|
464
488
|
return if win_platform? #Windows FS do not support symlinks
|
465
489
|
|
466
490
|
@installer.wrappers = false
|
@@ -481,7 +505,6 @@ load Gem.bin_path('a', 'executable', version)
|
|
481
505
|
s.require_path = 'lib'
|
482
506
|
end
|
483
507
|
|
484
|
-
@spec.version = 3
|
485
508
|
util_make_exec
|
486
509
|
@installer.gem_dir = util_gem_dir @spec
|
487
510
|
@installer.generate_bin
|
@@ -492,8 +515,6 @@ load Gem.bin_path('a', 'executable', version)
|
|
492
515
|
end
|
493
516
|
|
494
517
|
def test_generate_bin_symlink_update_older
|
495
|
-
util_setup_install
|
496
|
-
|
497
518
|
return if win_platform? #Windows FS do not support symlinks
|
498
519
|
|
499
520
|
@installer.wrappers = false
|
@@ -530,8 +551,6 @@ load Gem.bin_path('a', 'executable', version)
|
|
530
551
|
end
|
531
552
|
|
532
553
|
def test_generate_bin_symlink_update_remove_wrapper
|
533
|
-
util_setup_install
|
534
|
-
|
535
554
|
return if win_platform? #Windows FS do not support symlinks
|
536
555
|
|
537
556
|
@installer.wrappers = true
|
@@ -539,8 +558,9 @@ load Gem.bin_path('a', 'executable', version)
|
|
539
558
|
@installer.gem_dir = util_gem_dir
|
540
559
|
|
541
560
|
@installer.generate_bin
|
561
|
+
|
542
562
|
installed_exec = File.join util_inst_bindir, 'executable'
|
543
|
-
|
563
|
+
assert File.exist? installed_exec
|
544
564
|
|
545
565
|
@spec = Gem::Specification.new do |s|
|
546
566
|
s.files = ['lib/code.rb']
|
@@ -550,21 +570,21 @@ load Gem.bin_path('a', 'executable', version)
|
|
550
570
|
s.description = "desc"
|
551
571
|
s.require_path = 'lib'
|
552
572
|
end
|
573
|
+
util_make_exec
|
553
574
|
|
575
|
+
util_installer @spec, @gemhome
|
554
576
|
@installer.wrappers = false
|
555
|
-
@spec.version = 3
|
556
|
-
util_make_exec
|
557
577
|
@installer.gem_dir = util_gem_dir
|
578
|
+
|
558
579
|
@installer.generate_bin
|
559
|
-
|
560
|
-
|
580
|
+
|
581
|
+
installed_exec = File.join util_inst_bindir, 'executable'
|
582
|
+
assert_equal(@spec.bin_file('executable'),
|
561
583
|
File.readlink(installed_exec),
|
562
584
|
"Ensure symlink moved to latest version")
|
563
585
|
end
|
564
586
|
|
565
587
|
def test_generate_bin_symlink_win32
|
566
|
-
util_setup_install
|
567
|
-
|
568
588
|
old_win_platform = Gem.win_platform?
|
569
589
|
Gem.win_platform = true
|
570
590
|
@installer.wrappers = false
|
@@ -589,8 +609,6 @@ load Gem.bin_path('a', 'executable', version)
|
|
589
609
|
end
|
590
610
|
|
591
611
|
def test_generate_bin_uses_default_shebang
|
592
|
-
util_setup_install
|
593
|
-
|
594
612
|
return if win_platform? #Windows FS do not support symlinks
|
595
613
|
|
596
614
|
@installer.wrappers = true
|
@@ -748,7 +766,8 @@ load Gem.bin_path('a', 'executable', version)
|
|
748
766
|
|
749
767
|
exe = File.join @gemhome, 'bin', 'executable'
|
750
768
|
|
751
|
-
|
769
|
+
extra_arg = "\xE4pfel".force_encoding("UTF-8")
|
770
|
+
ARGV.unshift extra_arg
|
752
771
|
|
753
772
|
begin
|
754
773
|
Gem::Specification.reset
|
@@ -757,7 +776,7 @@ load Gem.bin_path('a', 'executable', version)
|
|
757
776
|
instance_eval File.read(exe)
|
758
777
|
end
|
759
778
|
ensure
|
760
|
-
ARGV.shift if ARGV.first ==
|
779
|
+
ARGV.shift if ARGV.first == extra_arg
|
761
780
|
end
|
762
781
|
|
763
782
|
assert_match(/ran executable/, e.message)
|
@@ -784,7 +803,7 @@ load Gem.bin_path('a', 'executable', version)
|
|
784
803
|
File.open File.join('lib', 'other.rb'), 'w' do |f| f.puts '1' end
|
785
804
|
use_ui ui do
|
786
805
|
FileUtils.rm @gem
|
787
|
-
Gem::
|
806
|
+
Gem::Package.build @spec
|
788
807
|
end
|
789
808
|
end
|
790
809
|
@installer = Gem::Installer.new @gem
|
@@ -799,27 +818,6 @@ load Gem.bin_path('a', 'executable', version)
|
|
799
818
|
"code.rb from prior install of same gem shouldn't remain here")
|
800
819
|
end
|
801
820
|
|
802
|
-
def test_install_bad_gem
|
803
|
-
gem = nil
|
804
|
-
|
805
|
-
use_ui @ui do
|
806
|
-
Dir.chdir @tempdir do Gem::Builder.new(@spec).build end
|
807
|
-
gem = File.join @tempdir, @spec.file_name
|
808
|
-
end
|
809
|
-
|
810
|
-
gem_data = File.open gem, 'rb' do |fp| fp.read 1024 end
|
811
|
-
File.open gem, 'wb' do |fp| fp.write gem_data end
|
812
|
-
|
813
|
-
e = assert_raises Gem::InstallError do
|
814
|
-
use_ui @ui do
|
815
|
-
@installer = Gem::Installer.new gem
|
816
|
-
@installer.install
|
817
|
-
end
|
818
|
-
end
|
819
|
-
|
820
|
-
assert_equal "invalid gem format for #{gem}", e.message
|
821
|
-
end
|
822
|
-
|
823
821
|
def test_install_check_dependencies
|
824
822
|
@spec.add_dependency 'b', '> 5'
|
825
823
|
util_setup_gem
|
@@ -833,13 +831,15 @@ load Gem.bin_path('a', 'executable', version)
|
|
833
831
|
|
834
832
|
def test_install_check_dependencies_install_dir
|
835
833
|
gemhome2 = "#{@gemhome}2"
|
836
|
-
@spec.add_dependency '
|
834
|
+
@spec.add_dependency 'd'
|
837
835
|
|
838
|
-
quick_gem '
|
836
|
+
quick_gem 'd', 2
|
839
837
|
|
840
838
|
FileUtils.mv @gemhome, gemhome2
|
841
839
|
|
842
|
-
|
840
|
+
# Don't leak any already activated gems into the installer, require
|
841
|
+
# that it work everything out on it's own.
|
842
|
+
Gem::Specification.reset
|
843
843
|
|
844
844
|
util_setup_gem
|
845
845
|
|
@@ -897,8 +897,6 @@ load Gem.bin_path('a', 'executable', version)
|
|
897
897
|
FileUtils.rm_f File.join(Gem.dir, 'specifications')
|
898
898
|
|
899
899
|
use_ui @ui do
|
900
|
-
Dir.chdir @tempdir do Gem::Builder.new(@spec).build end
|
901
|
-
|
902
900
|
@installer.install
|
903
901
|
end
|
904
902
|
|
@@ -992,7 +990,7 @@ load Gem.bin_path('a', 'executable', version)
|
|
992
990
|
@spec.post_install_message = 'I am a shiny gem!'
|
993
991
|
|
994
992
|
use_ui @ui do
|
995
|
-
path = Gem::
|
993
|
+
path = Gem::Package.build @spec
|
996
994
|
|
997
995
|
@installer = Gem::Installer.new path
|
998
996
|
@installer.install
|
@@ -1031,48 +1029,8 @@ load Gem.bin_path('a', 'executable', version)
|
|
1031
1029
|
end
|
1032
1030
|
end
|
1033
1031
|
|
1034
|
-
def test_install_extension_flat
|
1035
|
-
skip '1.8 mkmf.rb does not create TOUCH' if RUBY_VERSION < '1.9'
|
1036
|
-
@spec.require_paths = ["."]
|
1037
|
-
|
1038
|
-
@spec.extensions << "extconf.rb"
|
1039
|
-
|
1040
|
-
write_file File.join(@tempdir, "extconf.rb") do |io|
|
1041
|
-
io.write <<-RUBY
|
1042
|
-
require "mkmf"
|
1043
|
-
|
1044
|
-
CONFIG['CC'] = '$(TOUCH) $@ ||'
|
1045
|
-
CONFIG['LDSHARED'] = '$(TOUCH) $@ ||'
|
1046
|
-
|
1047
|
-
create_makefile("#{@spec.name}")
|
1048
|
-
RUBY
|
1049
|
-
end
|
1050
|
-
|
1051
|
-
# empty depend file for no auto dependencies
|
1052
|
-
@spec.files += %W"depend #{@spec.name}.c".each {|file|
|
1053
|
-
write_file File.join(@tempdir, file)
|
1054
|
-
}
|
1055
|
-
|
1056
|
-
so = File.join(@gemhome, 'gems', @spec.full_name, "#{@spec.name}.#{RbConfig::CONFIG["DLEXT"]}")
|
1057
|
-
assert !File.exist?(so)
|
1058
|
-
use_ui @ui do
|
1059
|
-
path = Gem::Builder.new(@spec).build
|
1060
|
-
|
1061
|
-
@installer = Gem::Installer.new path
|
1062
|
-
@installer.install
|
1063
|
-
end
|
1064
|
-
assert File.exist?(so), so
|
1065
|
-
rescue
|
1066
|
-
puts '-' * 78
|
1067
|
-
puts File.read File.join(@gemhome, 'gems', 'a-2', 'Makefile')
|
1068
|
-
puts '-' * 78
|
1069
|
-
puts File.read File.join(@gemhome, 'gems', 'a-2', 'gem_make.out')
|
1070
|
-
puts '-' * 78
|
1071
|
-
raise
|
1072
|
-
end
|
1073
|
-
|
1074
1032
|
def test_installation_satisfies_dependency_eh
|
1075
|
-
|
1033
|
+
quick_spec 'a'
|
1076
1034
|
|
1077
1035
|
dep = Gem::Dependency.new 'a', '>= 2'
|
1078
1036
|
assert @installer.installation_satisfies_dependency?(dep)
|
@@ -1082,8 +1040,6 @@ load Gem.bin_path('a', 'executable', version)
|
|
1082
1040
|
end
|
1083
1041
|
|
1084
1042
|
def test_shebang
|
1085
|
-
util_setup_install
|
1086
|
-
|
1087
1043
|
util_make_exec @spec, "#!/usr/bin/ruby"
|
1088
1044
|
|
1089
1045
|
shebang = @installer.shebang 'executable'
|
@@ -1092,8 +1048,6 @@ load Gem.bin_path('a', 'executable', version)
|
|
1092
1048
|
end
|
1093
1049
|
|
1094
1050
|
def test_shebang_arguments
|
1095
|
-
util_setup_install
|
1096
|
-
|
1097
1051
|
util_make_exec @spec, "#!/usr/bin/ruby -ws"
|
1098
1052
|
|
1099
1053
|
shebang = @installer.shebang 'executable'
|
@@ -1102,8 +1056,6 @@ load Gem.bin_path('a', 'executable', version)
|
|
1102
1056
|
end
|
1103
1057
|
|
1104
1058
|
def test_shebang_empty
|
1105
|
-
util_setup_install
|
1106
|
-
|
1107
1059
|
util_make_exec @spec, ''
|
1108
1060
|
|
1109
1061
|
shebang = @installer.shebang 'executable'
|
@@ -1111,8 +1063,6 @@ load Gem.bin_path('a', 'executable', version)
|
|
1111
1063
|
end
|
1112
1064
|
|
1113
1065
|
def test_shebang_env
|
1114
|
-
util_setup_install
|
1115
|
-
|
1116
1066
|
util_make_exec @spec, "#!/usr/bin/env ruby"
|
1117
1067
|
|
1118
1068
|
shebang = @installer.shebang 'executable'
|
@@ -1121,8 +1071,6 @@ load Gem.bin_path('a', 'executable', version)
|
|
1121
1071
|
end
|
1122
1072
|
|
1123
1073
|
def test_shebang_env_arguments
|
1124
|
-
util_setup_install
|
1125
|
-
|
1126
1074
|
util_make_exec @spec, "#!/usr/bin/env ruby -ws"
|
1127
1075
|
|
1128
1076
|
shebang = @installer.shebang 'executable'
|
@@ -1131,8 +1079,6 @@ load Gem.bin_path('a', 'executable', version)
|
|
1131
1079
|
end
|
1132
1080
|
|
1133
1081
|
def test_shebang_env_shebang
|
1134
|
-
util_setup_install
|
1135
|
-
|
1136
1082
|
util_make_exec @spec, ''
|
1137
1083
|
@installer.env_shebang = true
|
1138
1084
|
|
@@ -1145,8 +1091,6 @@ load Gem.bin_path('a', 'executable', version)
|
|
1145
1091
|
end
|
1146
1092
|
|
1147
1093
|
def test_shebang_nested
|
1148
|
-
util_setup_install
|
1149
|
-
|
1150
1094
|
util_make_exec @spec, "#!/opt/local/ruby/bin/ruby"
|
1151
1095
|
|
1152
1096
|
shebang = @installer.shebang 'executable'
|
@@ -1155,8 +1099,6 @@ load Gem.bin_path('a', 'executable', version)
|
|
1155
1099
|
end
|
1156
1100
|
|
1157
1101
|
def test_shebang_nested_arguments
|
1158
|
-
util_setup_install
|
1159
|
-
|
1160
1102
|
util_make_exec @spec, "#!/opt/local/ruby/bin/ruby -ws"
|
1161
1103
|
|
1162
1104
|
shebang = @installer.shebang 'executable'
|
@@ -1165,8 +1107,6 @@ load Gem.bin_path('a', 'executable', version)
|
|
1165
1107
|
end
|
1166
1108
|
|
1167
1109
|
def test_shebang_version
|
1168
|
-
util_setup_install
|
1169
|
-
|
1170
1110
|
util_make_exec @spec, "#!/usr/bin/ruby18"
|
1171
1111
|
|
1172
1112
|
shebang = @installer.shebang 'executable'
|
@@ -1175,8 +1115,6 @@ load Gem.bin_path('a', 'executable', version)
|
|
1175
1115
|
end
|
1176
1116
|
|
1177
1117
|
def test_shebang_version_arguments
|
1178
|
-
util_setup_install
|
1179
|
-
|
1180
1118
|
util_make_exec @spec, "#!/usr/bin/ruby18 -ws"
|
1181
1119
|
|
1182
1120
|
shebang = @installer.shebang 'executable'
|
@@ -1185,8 +1123,6 @@ load Gem.bin_path('a', 'executable', version)
|
|
1185
1123
|
end
|
1186
1124
|
|
1187
1125
|
def test_shebang_version_env
|
1188
|
-
util_setup_install
|
1189
|
-
|
1190
1126
|
util_make_exec @spec, "#!/usr/bin/env ruby18"
|
1191
1127
|
|
1192
1128
|
shebang = @installer.shebang 'executable'
|
@@ -1195,8 +1131,6 @@ load Gem.bin_path('a', 'executable', version)
|
|
1195
1131
|
end
|
1196
1132
|
|
1197
1133
|
def test_shebang_version_env_arguments
|
1198
|
-
util_setup_install
|
1199
|
-
|
1200
1134
|
util_make_exec @spec, "#!/usr/bin/env ruby18 -ws"
|
1201
1135
|
|
1202
1136
|
shebang = @installer.shebang 'executable'
|
@@ -1204,9 +1138,48 @@ load Gem.bin_path('a', 'executable', version)
|
|
1204
1138
|
assert_equal "#!#{Gem.ruby} -ws", shebang
|
1205
1139
|
end
|
1206
1140
|
|
1207
|
-
def
|
1208
|
-
|
1141
|
+
def test_shebang_custom
|
1142
|
+
conf = Gem::ConfigFile.new []
|
1143
|
+
conf[:custom_shebang] = 'test'
|
1144
|
+
|
1145
|
+
Gem.configuration = conf
|
1146
|
+
|
1147
|
+
util_make_exec @spec, "#!/usr/bin/ruby"
|
1148
|
+
|
1149
|
+
shebang = @installer.shebang 'executable'
|
1150
|
+
|
1151
|
+
assert_equal "#!test", shebang
|
1152
|
+
end
|
1153
|
+
|
1154
|
+
def test_shebang_custom_with_expands
|
1155
|
+
bin_env = win_platform? ? '' : '/usr/bin/env'
|
1156
|
+
conf = Gem::ConfigFile.new []
|
1157
|
+
conf[:custom_shebang] = '1 $env 2 $ruby 3 $exec 4 $name'
|
1158
|
+
|
1159
|
+
Gem.configuration = conf
|
1209
1160
|
|
1161
|
+
util_make_exec @spec, "#!/usr/bin/ruby"
|
1162
|
+
|
1163
|
+
shebang = @installer.shebang 'executable'
|
1164
|
+
|
1165
|
+
assert_equal "#!1 #{bin_env} 2 #{Gem.ruby} 3 executable 4 a", shebang
|
1166
|
+
end
|
1167
|
+
|
1168
|
+
def test_shebang_custom_with_expands_and_arguments
|
1169
|
+
bin_env = win_platform? ? '' : '/usr/bin/env'
|
1170
|
+
conf = Gem::ConfigFile.new []
|
1171
|
+
conf[:custom_shebang] = '1 $env 2 $ruby 3 $exec'
|
1172
|
+
|
1173
|
+
Gem.configuration = conf
|
1174
|
+
|
1175
|
+
util_make_exec @spec, "#!/usr/bin/ruby -ws"
|
1176
|
+
|
1177
|
+
shebang = @installer.shebang 'executable'
|
1178
|
+
|
1179
|
+
assert_equal "#!1 #{bin_env} 2 #{Gem.ruby} -ws 3 executable", shebang
|
1180
|
+
end
|
1181
|
+
|
1182
|
+
def test_unpack
|
1210
1183
|
util_setup_gem
|
1211
1184
|
|
1212
1185
|
dest = File.join @gemhome, 'gems', @spec.full_name
|
@@ -1218,29 +1191,21 @@ load Gem.bin_path('a', 'executable', version)
|
|
1218
1191
|
end
|
1219
1192
|
|
1220
1193
|
def test_write_spec
|
1221
|
-
|
1222
|
-
|
1223
|
-
spec_dir = File.join @gemhome, 'specifications'
|
1224
|
-
spec_file = File.join spec_dir, @spec.spec_name
|
1225
|
-
FileUtils.rm spec_file
|
1226
|
-
refute File.exist?(spec_file)
|
1194
|
+
FileUtils.rm @spec.spec_file
|
1195
|
+
refute File.exist?(@spec.spec_file)
|
1227
1196
|
|
1228
1197
|
@installer.spec = @spec
|
1229
1198
|
@installer.gem_home = @gemhome
|
1230
1199
|
|
1231
1200
|
@installer.write_spec
|
1232
1201
|
|
1233
|
-
assert File.exist?(spec_file)
|
1234
|
-
assert_equal @spec, eval(File.read(spec_file))
|
1202
|
+
assert File.exist?(@spec.spec_file)
|
1203
|
+
assert_equal @spec, eval(File.read(@spec.spec_file))
|
1235
1204
|
end
|
1236
1205
|
|
1237
1206
|
def test_write_spec_writes_cached_spec
|
1238
|
-
|
1239
|
-
|
1240
|
-
spec_dir = File.join @gemhome, 'specifications'
|
1241
|
-
spec_file = File.join spec_dir, @spec.spec_name
|
1242
|
-
FileUtils.rm spec_file
|
1243
|
-
refute File.exist?(spec_file)
|
1207
|
+
FileUtils.rm @spec.spec_file
|
1208
|
+
refute File.exist?(@spec.spec_file)
|
1244
1209
|
|
1245
1210
|
@spec.files = %w[a.rb b.rb c.rb]
|
1246
1211
|
|
@@ -1252,13 +1217,11 @@ load Gem.bin_path('a', 'executable', version)
|
|
1252
1217
|
# cached specs have no file manifest:
|
1253
1218
|
@spec.files = []
|
1254
1219
|
|
1255
|
-
assert_equal @spec, eval(File.read(spec_file))
|
1220
|
+
assert_equal @spec, eval(File.read(@spec.spec_file))
|
1256
1221
|
end
|
1257
1222
|
|
1258
1223
|
def test_dir
|
1259
|
-
|
1260
|
-
|
1261
|
-
assert_match %r!/installer/gems/a-2$!, @installer.dir
|
1224
|
+
assert_match %r!/gemhome/gems/a-2$!, @installer.dir
|
1262
1225
|
end
|
1263
1226
|
|
1264
1227
|
def old_ruby_required
|
@@ -1278,6 +1241,18 @@ load Gem.bin_path('a', 'executable', version)
|
|
1278
1241
|
@installer = util_installer @spec, @gemhome
|
1279
1242
|
end
|
1280
1243
|
|
1244
|
+
def util_conflict_executable wrappers
|
1245
|
+
conflict = quick_gem 'conflict' do |spec|
|
1246
|
+
util_make_exec spec
|
1247
|
+
end
|
1248
|
+
|
1249
|
+
util_build_gem conflict
|
1250
|
+
|
1251
|
+
installer = util_installer conflict, @gemhome
|
1252
|
+
installer.wrappers = wrappers
|
1253
|
+
installer.generate_bin
|
1254
|
+
end
|
1255
|
+
|
1281
1256
|
def mask
|
1282
1257
|
0100755 & (~File.umask)
|
1283
1258
|
end
|