slimgems 1.3.8
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.
- data/ChangeLog +5811 -0
- data/History.txt +887 -0
- data/LICENSE.txt +51 -0
- data/README.md +87 -0
- data/Rakefile +120 -0
- data/bin/gem +25 -0
- data/bin/update_slimgems +35 -0
- data/bootstrap/Rakefile +4 -0
- data/hide_lib_for_update/note.txt +5 -0
- data/lib/gauntlet_rubygems.rb +50 -0
- data/lib/rbconfig/datadir.rb +20 -0
- data/lib/rubygems.rb +1220 -0
- data/lib/rubygems/builder.rb +102 -0
- data/lib/rubygems/command.rb +534 -0
- data/lib/rubygems/command_manager.rb +182 -0
- data/lib/rubygems/commands/build_command.rb +53 -0
- data/lib/rubygems/commands/cert_command.rb +86 -0
- data/lib/rubygems/commands/check_command.rb +80 -0
- data/lib/rubygems/commands/cleanup_command.rb +106 -0
- data/lib/rubygems/commands/contents_command.rb +98 -0
- data/lib/rubygems/commands/dependency_command.rb +195 -0
- data/lib/rubygems/commands/environment_command.rb +132 -0
- data/lib/rubygems/commands/fetch_command.rb +67 -0
- data/lib/rubygems/commands/generate_index_command.rb +133 -0
- data/lib/rubygems/commands/help_command.rb +172 -0
- data/lib/rubygems/commands/install_command.rb +178 -0
- data/lib/rubygems/commands/list_command.rb +35 -0
- data/lib/rubygems/commands/lock_command.rb +110 -0
- data/lib/rubygems/commands/mirror_command.rb +111 -0
- data/lib/rubygems/commands/outdated_command.rb +33 -0
- data/lib/rubygems/commands/owner_command.rb +75 -0
- data/lib/rubygems/commands/pristine_command.rb +93 -0
- data/lib/rubygems/commands/push_command.rb +56 -0
- data/lib/rubygems/commands/query_command.rb +280 -0
- data/lib/rubygems/commands/rdoc_command.rb +91 -0
- data/lib/rubygems/commands/search_command.rb +31 -0
- data/lib/rubygems/commands/server_command.rb +86 -0
- data/lib/rubygems/commands/setup_command.rb +387 -0
- data/lib/rubygems/commands/sources_command.rb +157 -0
- data/lib/rubygems/commands/specification_command.rb +125 -0
- data/lib/rubygems/commands/stale_command.rb +27 -0
- data/lib/rubygems/commands/uninstall_command.rb +83 -0
- data/lib/rubygems/commands/unpack_command.rb +121 -0
- data/lib/rubygems/commands/update_command.rb +212 -0
- data/lib/rubygems/commands/which_command.rb +86 -0
- data/lib/rubygems/config_file.rb +345 -0
- data/lib/rubygems/custom_require.rb +44 -0
- data/lib/rubygems/defaults.rb +101 -0
- data/lib/rubygems/dependency.rb +227 -0
- data/lib/rubygems/dependency_installer.rb +286 -0
- data/lib/rubygems/dependency_list.rb +208 -0
- data/lib/rubygems/doc_manager.rb +242 -0
- data/lib/rubygems/errors.rb +35 -0
- data/lib/rubygems/exceptions.rb +91 -0
- data/lib/rubygems/ext.rb +18 -0
- data/lib/rubygems/ext/builder.rb +56 -0
- data/lib/rubygems/ext/configure_builder.rb +25 -0
- data/lib/rubygems/ext/ext_conf_builder.rb +24 -0
- data/lib/rubygems/ext/rake_builder.rb +39 -0
- data/lib/rubygems/format.rb +81 -0
- data/lib/rubygems/gem_openssl.rb +92 -0
- data/lib/rubygems/gem_path_searcher.rb +100 -0
- data/lib/rubygems/gem_runner.rb +79 -0
- data/lib/rubygems/gemcutter_utilities.rb +49 -0
- data/lib/rubygems/indexer.rb +720 -0
- data/lib/rubygems/install_update_options.rb +125 -0
- data/lib/rubygems/installer.rb +604 -0
- data/lib/rubygems/local_remote_options.rb +135 -0
- data/lib/rubygems/old_format.rb +153 -0
- data/lib/rubygems/package.rb +97 -0
- data/lib/rubygems/package/f_sync_dir.rb +23 -0
- data/lib/rubygems/package/tar_header.rb +266 -0
- data/lib/rubygems/package/tar_input.rb +222 -0
- data/lib/rubygems/package/tar_output.rb +144 -0
- data/lib/rubygems/package/tar_reader.rb +106 -0
- data/lib/rubygems/package/tar_reader/entry.rb +141 -0
- data/lib/rubygems/package/tar_writer.rb +241 -0
- data/lib/rubygems/package_task.rb +126 -0
- data/lib/rubygems/platform.rb +183 -0
- data/lib/rubygems/remote_fetcher.rb +414 -0
- data/lib/rubygems/require_paths_builder.rb +18 -0
- data/lib/rubygems/requirement.rb +153 -0
- data/lib/rubygems/security.rb +814 -0
- data/lib/rubygems/server.rb +872 -0
- data/lib/rubygems/source_index.rb +597 -0
- data/lib/rubygems/source_info_cache.rb +395 -0
- data/lib/rubygems/source_info_cache_entry.rb +56 -0
- data/lib/rubygems/spec_fetcher.rb +337 -0
- data/lib/rubygems/specification.rb +1486 -0
- data/lib/rubygems/test_utilities.rb +147 -0
- data/lib/rubygems/text.rb +65 -0
- data/lib/rubygems/uninstaller.rb +278 -0
- data/lib/rubygems/user_interaction.rb +527 -0
- data/lib/rubygems/validator.rb +240 -0
- data/lib/rubygems/version.rb +316 -0
- data/lib/rubygems/version_option.rb +65 -0
- data/lib/ubygems.rb +10 -0
- data/setup.rb +42 -0
- data/test/bogussources.rb +8 -0
- data/test/data/gem-private_key.pem +27 -0
- data/test/data/gem-public_cert.pem +20 -0
- data/test/fake_certlib/openssl.rb +7 -0
- data/test/foo/discover.rb +0 -0
- data/test/functional.rb +92 -0
- data/test/gem_installer_test_case.rb +97 -0
- data/test/gem_package_tar_test_case.rb +132 -0
- data/test/gemutilities.rb +605 -0
- data/test/insure_session.rb +43 -0
- data/test/mockgemui.rb +56 -0
- data/test/plugin/exception/rubygems_plugin.rb +2 -0
- data/test/plugin/load/rubygems_plugin.rb +1 -0
- data/test/plugin/standarderror/rubygems_plugin.rb +2 -0
- data/test/private_key.pem +27 -0
- data/test/public_cert.pem +20 -0
- data/test/rubygems_plugin.rb +21 -0
- data/test/simple_gem.rb +66 -0
- data/test/test_config.rb +12 -0
- data/test/test_gem.rb +766 -0
- data/test/test_gem_builder.rb +27 -0
- data/test/test_gem_command.rb +178 -0
- data/test/test_gem_command_manager.rb +207 -0
- data/test/test_gem_commands_build_command.rb +74 -0
- data/test/test_gem_commands_cert_command.rb +124 -0
- data/test/test_gem_commands_check_command.rb +18 -0
- data/test/test_gem_commands_contents_command.rb +156 -0
- data/test/test_gem_commands_dependency_command.rb +216 -0
- data/test/test_gem_commands_environment_command.rb +144 -0
- data/test/test_gem_commands_fetch_command.rb +76 -0
- data/test/test_gem_commands_generate_index_command.rb +135 -0
- data/test/test_gem_commands_install_command.rb +315 -0
- data/test/test_gem_commands_list_command.rb +36 -0
- data/test/test_gem_commands_lock_command.rb +68 -0
- data/test/test_gem_commands_mirror_command.rb +60 -0
- data/test/test_gem_commands_outdated_command.rb +40 -0
- data/test/test_gem_commands_owner_command.rb +105 -0
- data/test/test_gem_commands_pristine_command.rb +108 -0
- data/test/test_gem_commands_push_command.rb +81 -0
- data/test/test_gem_commands_query_command.rb +426 -0
- data/test/test_gem_commands_server_command.rb +59 -0
- data/test/test_gem_commands_sources_command.rb +209 -0
- data/test/test_gem_commands_specification_command.rb +139 -0
- data/test/test_gem_commands_stale_command.rb +38 -0
- data/test/test_gem_commands_uninstall_command.rb +83 -0
- data/test/test_gem_commands_unpack_command.rb +199 -0
- data/test/test_gem_commands_update_command.rb +353 -0
- data/test/test_gem_commands_which_command.rb +66 -0
- data/test/test_gem_config_file.rb +287 -0
- data/test/test_gem_dependency.rb +149 -0
- data/test/test_gem_dependency_installer.rb +661 -0
- data/test/test_gem_dependency_list.rb +230 -0
- data/test/test_gem_doc_manager.rb +31 -0
- data/test/test_gem_ext_configure_builder.rb +84 -0
- data/test/test_gem_ext_ext_conf_builder.rb +173 -0
- data/test/test_gem_ext_rake_builder.rb +81 -0
- data/test/test_gem_format.rb +70 -0
- data/test/test_gem_gem_path_searcher.rb +78 -0
- data/test/test_gem_gem_runner.rb +45 -0
- data/test/test_gem_gemcutter_utilities.rb +103 -0
- data/test/test_gem_indexer.rb +673 -0
- data/test/test_gem_install_update_options.rb +68 -0
- data/test/test_gem_installer.rb +857 -0
- data/test/test_gem_local_remote_options.rb +97 -0
- data/test/test_gem_package_tar_header.rb +130 -0
- data/test/test_gem_package_tar_input.rb +112 -0
- data/test/test_gem_package_tar_output.rb +97 -0
- data/test/test_gem_package_tar_reader.rb +46 -0
- data/test/test_gem_package_tar_reader_entry.rb +109 -0
- data/test/test_gem_package_tar_writer.rb +144 -0
- data/test/test_gem_package_task.rb +59 -0
- data/test/test_gem_platform.rb +264 -0
- data/test/test_gem_remote_fetcher.rb +740 -0
- data/test/test_gem_requirement.rb +292 -0
- data/test/test_gem_server.rb +356 -0
- data/test/test_gem_silent_ui.rb +113 -0
- data/test/test_gem_source_index.rb +461 -0
- data/test/test_gem_spec_fetcher.rb +410 -0
- data/test/test_gem_specification.rb +1291 -0
- data/test/test_gem_stream_ui.rb +218 -0
- data/test/test_gem_text.rb +43 -0
- data/test/test_gem_uninstaller.rb +146 -0
- data/test/test_gem_validator.rb +63 -0
- data/test/test_gem_version.rb +181 -0
- data/test/test_gem_version_option.rb +89 -0
- data/test/test_kernel.rb +59 -0
- metadata +413 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
|
|
3
|
+
# All rights reserved.
|
|
4
|
+
# See LICENSE.txt for permissions.
|
|
5
|
+
#++
|
|
6
|
+
|
|
7
|
+
require 'rubygems'
|
|
8
|
+
|
|
9
|
+
##
|
|
10
|
+
# Mixin methods for --version and --platform Gem::Command options.
|
|
11
|
+
|
|
12
|
+
module Gem::VersionOption
|
|
13
|
+
|
|
14
|
+
##
|
|
15
|
+
# Add the --platform option to the option parser.
|
|
16
|
+
|
|
17
|
+
def add_platform_option(task = command, *wrap)
|
|
18
|
+
OptionParser.accept Gem::Platform do |value|
|
|
19
|
+
if value == Gem::Platform::RUBY then
|
|
20
|
+
value
|
|
21
|
+
else
|
|
22
|
+
Gem::Platform.new value
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
add_option('--platform PLATFORM', Gem::Platform,
|
|
27
|
+
"Specify the platform of gem to #{task}", *wrap) do
|
|
28
|
+
|value, options|
|
|
29
|
+
unless options[:added_platform] then
|
|
30
|
+
Gem.platforms = [Gem::Platform::RUBY]
|
|
31
|
+
options[:added_platform] = true
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
Gem.platforms << value unless Gem.platforms.include? value
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
##
|
|
39
|
+
# Add the --prerelease option to the option parser.
|
|
40
|
+
|
|
41
|
+
def add_prerelease_option(*wrap)
|
|
42
|
+
add_option("--[no-]prerelease",
|
|
43
|
+
"Allow prerelease versions of a gem", *wrap) do |value, options|
|
|
44
|
+
options[:prerelease] = value
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
##
|
|
49
|
+
# Add the --version option to the option parser.
|
|
50
|
+
|
|
51
|
+
def add_version_option(task = command, *wrap)
|
|
52
|
+
OptionParser.accept Gem::Requirement do |value|
|
|
53
|
+
Gem::Requirement.new value
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
add_option('-v', '--version VERSION', Gem::Requirement,
|
|
57
|
+
"Specify version of gem to #{task}", *wrap) do
|
|
58
|
+
|value, options|
|
|
59
|
+
options[:version] = value
|
|
60
|
+
options[:prerelease] = true if value.prerelease?
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
end
|
|
65
|
+
|
data/lib/ubygems.rb
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# This file allows for the running of rubygems with a nice
|
|
2
|
+
# command line look-and-feel: ruby -rubygems foo.rb
|
|
3
|
+
#--
|
|
4
|
+
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
|
|
5
|
+
# All rights reserved.
|
|
6
|
+
# See LICENSE.txt for permissions.
|
|
7
|
+
#++
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
require 'rubygems'
|
data/setup.rb
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Copyright 2006, 2007 by Chad Fowler, Rich Kilmer, Jim Weirich, Eric Hodel
|
|
3
|
+
# and others.
|
|
4
|
+
# All rights reserved.
|
|
5
|
+
# See LICENSE.txt for permissions.
|
|
6
|
+
#++
|
|
7
|
+
|
|
8
|
+
Dir.chdir File.dirname(__FILE__)
|
|
9
|
+
|
|
10
|
+
# Make sure rubygems isn't already loaded.
|
|
11
|
+
if defined?(Gem)
|
|
12
|
+
ENV.delete 'RUBYOPT'
|
|
13
|
+
|
|
14
|
+
ENV['RUBYOPT'] = '--disable-gems' if RUBY_VERSION >= '1.9'
|
|
15
|
+
ENV['GEM_BOOTSTRAP'] = 'true' unless defined?(Gem::NAME)
|
|
16
|
+
|
|
17
|
+
require 'rbconfig'
|
|
18
|
+
config = defined?(RbConfig) ? RbConfig : Config
|
|
19
|
+
|
|
20
|
+
ruby = File.join config::CONFIG['bindir'], config::CONFIG['ruby_install_name']
|
|
21
|
+
ruby << config::CONFIG['EXEEXT']
|
|
22
|
+
|
|
23
|
+
exec(ruby, 'setup.rb', *ARGV)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
$:.unshift 'lib'
|
|
27
|
+
require 'rubygems'
|
|
28
|
+
require 'rubygems/gem_runner'
|
|
29
|
+
require 'rubygems/exceptions'
|
|
30
|
+
|
|
31
|
+
Gem::CommandManager.instance.register_command :setup
|
|
32
|
+
|
|
33
|
+
args = ARGV.clone
|
|
34
|
+
|
|
35
|
+
args.unshift 'setup'
|
|
36
|
+
|
|
37
|
+
begin
|
|
38
|
+
Gem::GemRunner.new.run args
|
|
39
|
+
rescue Gem::SystemExitException => e
|
|
40
|
+
exit e.exit_code
|
|
41
|
+
end
|
|
42
|
+
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
|
2
|
+
MIIEpQIBAAKCAQEAz0tTOtsJuHDKAEXrQx0f6DUEzBEUTSLR1fk0iEHsY9rDCQxm
|
|
3
|
+
sw5Bf2UnVhdD03B4/XzIK+pat2CMQc37/vLIBuVgS7g/fzatGiM0m5rAHtycr0XU
|
|
4
|
+
8Ek6zjx4iSv70OLjybY+/utHCEc838awGDMCFR21jYxgATPVwqAIyasvwbKh/Vhw
|
|
5
|
+
uErFPqT9G8BKTHsaX+H+ADIRH001OmWkjB6EyjF05114kNMa0+2C7daV9hoBL3md
|
|
6
|
+
hCt6zOGcapl/9LkGxhcNEUB/So16V1ZQldg9macGyWktyNTSfctlF+f8okAmicG3
|
|
7
|
+
XIwaW8UTmjFCmvDs/h1R/uKpe2IOHz87n29d2QIDAQABAoIBAQCR6n/nyg+JmTtX
|
|
8
|
+
/d+hGns/RTLfQpZ7xarXZ9gmoeD4WSE42VXhbIOGXXnXDAFecKl6Jb/xycGZm4if
|
|
9
|
+
OZPM3rEWyZeDNWrc7WvkHiwF7GSYVMqmRg2iJqoSSla+mAtl+pBFiNfHMW6K0Tp0
|
|
10
|
+
erOyFRW+L2+A9/MMZaRun6AP9URkn0jz2kwmMFf+6szmzVn6fPFzZDRI+hEeaDmi
|
|
11
|
+
LBzSrfrddrIBX+xGEoBj6RmfnKBCSUVSSxOauYjd4mVjVYxvMH4SV1hXDUS5GPl5
|
|
12
|
+
MbCiBb7bpNIg/8ljMoRrQiqk0XwwS7MaCqPtMhUtpSmC/zSjAfmoN7AOc/Xh69cQ
|
|
13
|
+
OCMNZH9BAoGBAPBlsuuU6fg0gVTKDdR12jHx03uRRt8/nPxHnpJkZCIh9XKh1LtY
|
|
14
|
+
bkumi9HZpp3mzDiaGg/rwfCwNckKx8NLhICLgkric6ClrKftxTu6C8tBAb5YDi6u
|
|
15
|
+
74KYnV8lMY/unzBtIloPgM3uluS292POmrWZpKwhvHLD71MewzMor5HFAoGBANy/
|
|
16
|
+
mwsBs8i3Gzk8Twjq8effhPpE7kpxhC7bhwmjX3q41EjQWDT8M6xb1P9dRSsCIebi
|
|
17
|
+
kqP1yhl27dJpA8r5WqE/z89xhBvObAGRv41eXxOI0LaH2k5lJQrUeSC+51dy+BEB
|
|
18
|
+
T3GXD4C5ezZHQ8Wz/oL73uikrfhD+AqOZT2YbMEFAoGBAJvWEWpOGm3f+4bvhI+Z
|
|
19
|
+
5lxCG4oa3wqRvj58XvsfQRovUWGCLtlTtgwsZq8enLf3iaOXohV4Czzvva4Z4u1i
|
|
20
|
+
4v5BcbEBo1scixRBOn5BWKvl9C9j/a2dkX3jWQD4p2xaj69gz8f6DNFyPTb+tNhq
|
|
21
|
+
cjgO5YUASZ1MDrSfWIKteULRAoGAZkZv8x2KyofrmQ0UITGZerDYz4t4TA1kDMGx
|
|
22
|
+
QwnqhtVzpXjCJWpkFotFmDsCfPaz9mErR8PtKvcrIL1/AF+fWe5Sve3+I1P0PpXk
|
|
23
|
+
hf8fVdGhwbAXuRKrouTmagGI9b9Sp65PvHUcvasyJufFwqeuV8mScX87CzeSiHGI
|
|
24
|
+
/ozMdnECgYEAq4+losrhe0DEmiC9zVPvwRXjbSixDsSJxHfOcqIsZqhUgBiZ4TJD
|
|
25
|
+
SrkuukrMZib6BAD+PtCJS1TBbJyyvL3QecizhHSIh3ZnT0HnaRPatLEYmU65+3kE
|
|
26
|
+
kTqL4ik92bJnnWowy677sydl1lzBJDVa9ZlTs7BFSd8y/0DZaUxGg2I=
|
|
27
|
+
-----END RSA PRIVATE KEY-----
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIDNjCCAh6gAwIBAgIBADANBgkqhkiG9w0BAQUFADBBMREwDwYDVQQDDAhydWJ5
|
|
3
|
+
Z2VtczEXMBUGCgmSJomT8ixkARkWB2V4YW1wbGUxEzARBgoJkiaJk/IsZAEZFgNj
|
|
4
|
+
b20wHhcNMDcwODAyMDMyNTQyWhcNMDgwODAxMDMyNTQyWjBBMREwDwYDVQQDDAhy
|
|
5
|
+
dWJ5Z2VtczEXMBUGCgmSJomT8ixkARkWB2V4YW1wbGUxEzARBgoJkiaJk/IsZAEZ
|
|
6
|
+
FgNjb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDPS1M62wm4cMoA
|
|
7
|
+
RetDHR/oNQTMERRNItHV+TSIQexj2sMJDGazDkF/ZSdWF0PTcHj9fMgr6lq3YIxB
|
|
8
|
+
zfv+8sgG5WBLuD9/Nq0aIzSbmsAe3JyvRdTwSTrOPHiJK/vQ4uPJtj7+60cIRzzf
|
|
9
|
+
xrAYMwIVHbWNjGABM9XCoAjJqy/BsqH9WHC4SsU+pP0bwEpMexpf4f4AMhEfTTU6
|
|
10
|
+
ZaSMHoTKMXTnXXiQ0xrT7YLt1pX2GgEveZ2EK3rM4ZxqmX/0uQbGFw0RQH9KjXpX
|
|
11
|
+
VlCV2D2ZpwbJaS3I1NJ9y2UX5/yiQCaJwbdcjBpbxROaMUKa8Oz+HVH+4ql7Yg4f
|
|
12
|
+
Pzufb13ZAgMBAAGjOTA3MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW
|
|
13
|
+
BBRYTAoj4cn8CWZMHFnHGQgoO5jyFTANBgkqhkiG9w0BAQUFAAOCAQEATRrJC05l
|
|
14
|
+
dOmx67Sy3bU+AVXkOr7B9nn2Myqo9uSIAncPoElN6aHr/Q8wOOjtok4r0JcHPe1e
|
|
15
|
+
eotDCZUE1Jkl13Tpv26rOfOOUHtGlyAIAtpsUGOraaJkSut4WKLr1/KckyAAEtgP
|
|
16
|
+
c13A0s0mEiWFRuYxIdEi54561pTT2qQBE/DUPGoYD5rUg9XYAlSovMMwG99Oca7L
|
|
17
|
+
cI6vCymr1bzzddExoywBNOy0fbBT62I3ICBGbH5yOVVKVmlxeo2Zp10FCj0kDrnq
|
|
18
|
+
OuMJSDr5I2XPYqoC+W4YSbwn55o2jGIUX1lOq2Hvj4tFgSxlnJZn0tUhBfR3gSOn
|
|
19
|
+
IFnrqu8PlZsLFw==
|
|
20
|
+
-----END CERTIFICATE-----
|
|
File without changes
|
data/test/functional.rb
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require 'minitest/unit'
|
|
3
|
+
require 'test/insure_session'
|
|
4
|
+
require 'rubygems/format'
|
|
5
|
+
require 'rubygems/command_manager'
|
|
6
|
+
|
|
7
|
+
class FunctionalTest < MiniTest::Unit::TestCase
|
|
8
|
+
|
|
9
|
+
def setup
|
|
10
|
+
@gem_path = File.expand_path("bin/gem")
|
|
11
|
+
lib_path = File.expand_path("lib")
|
|
12
|
+
@ruby_options = "-I#{lib_path} -I."
|
|
13
|
+
@verbose = false
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_gem_help_options
|
|
17
|
+
gem_nossl 'help options'
|
|
18
|
+
assert_match(/Usage:/, @out, @err)
|
|
19
|
+
assert_status
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def test_gem_help_commands
|
|
23
|
+
gem_nossl 'help commands'
|
|
24
|
+
assert_match(/gem install/, @out)
|
|
25
|
+
assert_status
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def test_gem_no_args_shows_help
|
|
29
|
+
gem_nossl
|
|
30
|
+
assert_match(/Usage:/, @out)
|
|
31
|
+
assert_status 1
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# This test is disabled because of the insanely long time it takes
|
|
35
|
+
# to time out.
|
|
36
|
+
def xtest_bogus_source_hoses_up_remote_install_but_gem_command_gives_decent_error_message
|
|
37
|
+
@ruby_options << " -rtest/bogussources"
|
|
38
|
+
gem_nossl "install asdf --remote"
|
|
39
|
+
assert_match(/error/im, @err)
|
|
40
|
+
assert_status 1
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def test_all_command_helps
|
|
44
|
+
mgr = Gem::CommandManager.new
|
|
45
|
+
mgr.command_names.each do |cmdname|
|
|
46
|
+
gem_nossl "help #{cmdname}"
|
|
47
|
+
assert_match(/Usage: gem #{cmdname}/, @out,
|
|
48
|
+
"should see help for #{cmdname}")
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# :section: Help Methods
|
|
53
|
+
|
|
54
|
+
# Run a gem command without the SSL library.
|
|
55
|
+
def gem_nossl(options="")
|
|
56
|
+
old_options = @ruby_options.dup
|
|
57
|
+
@ruby_options << " -Itest/fake_certlib"
|
|
58
|
+
gem(options)
|
|
59
|
+
ensure
|
|
60
|
+
@ruby_options = old_options
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# Run a gem command with the SSL library.
|
|
64
|
+
def gem_withssl(options="")
|
|
65
|
+
gem(options)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# Run a gem command for the functional test.
|
|
69
|
+
def gem(options="")
|
|
70
|
+
shell = Session::Shell.new
|
|
71
|
+
options = options + " --config-file missing_file" if options !~ /--config-file/
|
|
72
|
+
command = "#{Gem.ruby} #{@ruby_options} #{@gem_path} #{options}"
|
|
73
|
+
puts "\n\nCOMMAND: [#{command}]" if @verbose
|
|
74
|
+
@out, @err = shell.execute command
|
|
75
|
+
@status = shell.exit_status
|
|
76
|
+
puts "STATUS: [#{@status}]" if @verbose
|
|
77
|
+
puts "OUTPUT: [#{@out}]" if @verbose
|
|
78
|
+
puts "ERROR: [#{@err}]" if @verbose
|
|
79
|
+
puts "PWD: [#{Dir.pwd}]" if @verbose
|
|
80
|
+
shell.close
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
private
|
|
84
|
+
|
|
85
|
+
def assert_status(expected_status=0)
|
|
86
|
+
assert_equal expected_status, @status
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
MiniTest::Unit.autorun
|
|
92
|
+
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
require File.expand_path('../gemutilities', __FILE__)
|
|
2
|
+
require 'rubygems/installer'
|
|
3
|
+
|
|
4
|
+
class Gem::Installer
|
|
5
|
+
attr_accessor :gem_dir
|
|
6
|
+
|
|
7
|
+
attr_writer :format
|
|
8
|
+
attr_writer :gem_home
|
|
9
|
+
attr_writer :env_shebang
|
|
10
|
+
attr_writer :ignore_dependencies
|
|
11
|
+
attr_writer :format_executable
|
|
12
|
+
attr_writer :security_policy
|
|
13
|
+
attr_writer :spec
|
|
14
|
+
attr_writer :wrappers
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
class GemInstallerTestCase < RubyGemTestCase
|
|
18
|
+
|
|
19
|
+
def setup
|
|
20
|
+
super
|
|
21
|
+
|
|
22
|
+
@spec = quick_gem 'a'
|
|
23
|
+
@gem = File.join @tempdir, @spec.file_name
|
|
24
|
+
|
|
25
|
+
@installer = util_installer @spec, @gem, @gemhome
|
|
26
|
+
|
|
27
|
+
@user_spec = quick_gem 'b'
|
|
28
|
+
@user_gem = File.join @tempdir, @user_spec.file_name
|
|
29
|
+
|
|
30
|
+
@user_installer = util_installer @user_spec, @user_gem, Gem.user_dir
|
|
31
|
+
@user_installer.gem_dir = File.join(Gem.user_dir, 'gems',
|
|
32
|
+
@user_spec.full_name)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def util_gem_bindir(version = '2')
|
|
36
|
+
File.join util_gem_dir(version), "bin"
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def util_gem_dir(version = '2')
|
|
40
|
+
File.join @gemhome, "gems", "a-#{version}" # HACK
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def util_inst_bindir
|
|
44
|
+
File.join @gemhome, "bin"
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def util_make_exec(version = '2', shebang = "#!/usr/bin/ruby")
|
|
48
|
+
@spec.executables = ["my_exec"]
|
|
49
|
+
|
|
50
|
+
FileUtils.mkdir_p util_gem_bindir(version)
|
|
51
|
+
exec_path = File.join util_gem_bindir(version), "my_exec"
|
|
52
|
+
File.open exec_path, 'w' do |f|
|
|
53
|
+
f.puts shebang
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def util_setup_gem(ui = @ui) # HACK fix use_ui to make this automatic
|
|
58
|
+
@spec.files = File.join('lib', 'code.rb')
|
|
59
|
+
@spec.executables << 'executable'
|
|
60
|
+
@spec.extensions << File.join('ext', 'a', 'mkrf_conf.rb')
|
|
61
|
+
|
|
62
|
+
Dir.chdir @tempdir do
|
|
63
|
+
FileUtils.mkdir_p 'bin'
|
|
64
|
+
FileUtils.mkdir_p 'lib'
|
|
65
|
+
FileUtils.mkdir_p File.join('ext', 'a')
|
|
66
|
+
File.open File.join('bin', 'executable'), 'w' do |f| f.puts '1' end
|
|
67
|
+
File.open File.join('lib', 'code.rb'), 'w' do |f| f.puts '1' end
|
|
68
|
+
File.open File.join('ext', 'a', 'mkrf_conf.rb'), 'w' do |f|
|
|
69
|
+
f << <<-EOF
|
|
70
|
+
File.open 'Rakefile', 'w' do |rf| rf.puts "task :default" end
|
|
71
|
+
EOF
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
use_ui ui do
|
|
75
|
+
FileUtils.rm @gem
|
|
76
|
+
Gem::Builder.new(@spec).build
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
@installer = Gem::Installer.new @gem
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def util_installer(spec, gem_path, gem_home)
|
|
84
|
+
util_build_gem spec
|
|
85
|
+
FileUtils.mv File.join(@gemhome, 'cache', spec.file_name),
|
|
86
|
+
@tempdir
|
|
87
|
+
|
|
88
|
+
installer = Gem::Installer.new gem_path
|
|
89
|
+
installer.gem_dir = util_gem_dir
|
|
90
|
+
installer.gem_home = gem_home
|
|
91
|
+
installer.spec = spec
|
|
92
|
+
|
|
93
|
+
installer
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
end
|
|
97
|
+
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
require File.expand_path('../gemutilities', __FILE__)
|
|
2
|
+
require 'rubygems/package'
|
|
3
|
+
|
|
4
|
+
class TarTestCase < RubyGemTestCase
|
|
5
|
+
|
|
6
|
+
def ASCIIZ(str, length)
|
|
7
|
+
str + "\0" * (length - str.length)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def SP(s)
|
|
11
|
+
s + " "
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def SP_Z(s)
|
|
15
|
+
s + " \0"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def Z(s)
|
|
19
|
+
s + "\0"
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def assert_headers_equal(expected, actual)
|
|
23
|
+
expected = expected.to_s unless String === expected
|
|
24
|
+
actual = actual.to_s unless String === actual
|
|
25
|
+
|
|
26
|
+
fields = %w[
|
|
27
|
+
name 100
|
|
28
|
+
mode 8
|
|
29
|
+
uid 8
|
|
30
|
+
gid 8
|
|
31
|
+
size 12
|
|
32
|
+
mtime 12
|
|
33
|
+
checksum 8
|
|
34
|
+
typeflag 1
|
|
35
|
+
linkname 100
|
|
36
|
+
magic 6
|
|
37
|
+
version 2
|
|
38
|
+
uname 32
|
|
39
|
+
gname 32
|
|
40
|
+
devmajor 8
|
|
41
|
+
devminor 8
|
|
42
|
+
prefix 155
|
|
43
|
+
]
|
|
44
|
+
|
|
45
|
+
offset = 0
|
|
46
|
+
|
|
47
|
+
until fields.empty? do
|
|
48
|
+
name = fields.shift
|
|
49
|
+
length = fields.shift.to_i
|
|
50
|
+
|
|
51
|
+
if name == "checksum" then
|
|
52
|
+
chksum_off = offset
|
|
53
|
+
offset += length
|
|
54
|
+
next
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
assert_equal expected[offset, length], actual[offset, length],
|
|
58
|
+
"Field #{name} of the tar header differs."
|
|
59
|
+
|
|
60
|
+
offset += length
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
assert_equal expected[chksum_off, 8], actual[chksum_off, 8]
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def calc_checksum(header)
|
|
67
|
+
sum = header.unpack("C*").inject{|s,a| s + a}
|
|
68
|
+
SP(Z(to_oct(sum, 6)))
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def header(type, fname, dname, length, mode, checksum = nil)
|
|
72
|
+
checksum ||= " " * 8
|
|
73
|
+
|
|
74
|
+
arr = [ # struct tarfile_entry_posix
|
|
75
|
+
ASCIIZ(fname, 100), # char name[100]; ASCII + (Z unless filled)
|
|
76
|
+
Z(to_oct(mode, 7)), # char mode[8]; 0 padded, octal null
|
|
77
|
+
Z(to_oct(0, 7)), # char uid[8]; ditto
|
|
78
|
+
Z(to_oct(0, 7)), # char gid[8]; ditto
|
|
79
|
+
Z(to_oct(length, 11)), # char size[12]; 0 padded, octal, null
|
|
80
|
+
Z(to_oct(0, 11)), # char mtime[12]; 0 padded, octal, null
|
|
81
|
+
checksum, # char checksum[8]; 0 padded, octal, null, space
|
|
82
|
+
type, # char typeflag[1]; file: "0" dir: "5"
|
|
83
|
+
"\0" * 100, # char linkname[100]; ASCII + (Z unless filled)
|
|
84
|
+
"ustar\0", # char magic[6]; "ustar\0"
|
|
85
|
+
"00", # char version[2]; "00"
|
|
86
|
+
ASCIIZ("wheel", 32), # char uname[32]; ASCIIZ
|
|
87
|
+
ASCIIZ("wheel", 32), # char gname[32]; ASCIIZ
|
|
88
|
+
Z(to_oct(0, 7)), # char devmajor[8]; 0 padded, octal, null
|
|
89
|
+
Z(to_oct(0, 7)), # char devminor[8]; 0 padded, octal, null
|
|
90
|
+
ASCIIZ(dname, 155) # char prefix[155]; ASCII + (Z unless filled)
|
|
91
|
+
]
|
|
92
|
+
|
|
93
|
+
format = "C100C8C8C8C12C12C8CC100C6C2C32C32C8C8C155"
|
|
94
|
+
h = if RUBY_VERSION >= "1.9" then
|
|
95
|
+
arr.join
|
|
96
|
+
else
|
|
97
|
+
arr = arr.join("").split(//).map{|x| x[0]}
|
|
98
|
+
arr.pack format
|
|
99
|
+
end
|
|
100
|
+
ret = h + "\0" * (512 - h.size)
|
|
101
|
+
assert_equal(512, ret.size)
|
|
102
|
+
ret
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def tar_dir_header(name, prefix, mode)
|
|
106
|
+
h = header("5", name, prefix, 0, mode)
|
|
107
|
+
checksum = calc_checksum(h)
|
|
108
|
+
header("5", name, prefix, 0, mode, checksum)
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
def tar_file_header(fname, dname, mode, length)
|
|
112
|
+
h = header("0", fname, dname, length, mode)
|
|
113
|
+
checksum = calc_checksum(h)
|
|
114
|
+
header("0", fname, dname, length, mode, checksum)
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def to_oct(n, pad_size)
|
|
118
|
+
"%0#{pad_size}o" % n
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def util_entry(tar)
|
|
122
|
+
io = TempIO.new tar
|
|
123
|
+
header = Gem::Package::TarHeader.from io
|
|
124
|
+
entry = Gem::Package::TarReader::Entry.new header, io
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def util_dir_entry
|
|
128
|
+
util_entry tar_dir_header("foo", "bar", 0)
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
end
|
|
132
|
+
|