rubygems-update 1.3.5 → 1.3.6
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.
- data.tar.gz.sig +0 -0
- data/.autotest +8 -1
- data/ChangeLog +164 -0
- data/History.txt +52 -1
- data/Manifest.txt +8 -8
- data/README +3 -2
- data/Rakefile +49 -5
- data/bin/gem +2 -2
- data/bin/update_rubygems +9 -11
- data/cruise_config.rb +4 -3
- data/hide_lib_for_update/note.txt +5 -0
- data/lib/rbconfig/datadir.rb +10 -14
- data/lib/rubygems.rb +117 -140
- data/lib/rubygems/builder.rb +4 -2
- data/lib/rubygems/command.rb +51 -48
- data/lib/rubygems/command_manager.rb +2 -0
- data/lib/rubygems/commands/dependency_command.rb +10 -5
- data/lib/rubygems/commands/environment_command.rb +1 -1
- data/lib/rubygems/commands/fetch_command.rb +6 -5
- data/lib/rubygems/commands/install_command.rb +1 -0
- data/lib/rubygems/commands/mirror_command.rb +8 -8
- data/lib/rubygems/commands/owner_command.rb +75 -0
- data/lib/rubygems/commands/pristine_command.rb +1 -1
- data/lib/rubygems/commands/push_command.rb +45 -0
- data/lib/rubygems/commands/query_command.rb +4 -1
- data/lib/rubygems/commands/rdoc_command.rb +24 -9
- data/lib/rubygems/commands/server_command.rb +6 -0
- data/lib/rubygems/commands/setup_command.rb +14 -4
- data/lib/rubygems/commands/unpack_command.rb +2 -2
- data/lib/rubygems/commands/update_command.rb +2 -2
- data/lib/rubygems/commands/which_command.rb +7 -9
- data/lib/rubygems/config_file.rb +100 -26
- data/lib/rubygems/defaults.rb +1 -1
- data/lib/rubygems/dependency.rb +133 -75
- data/lib/rubygems/dependency_installer.rb +28 -10
- data/lib/rubygems/dependency_list.rb +41 -12
- data/lib/rubygems/doc_manager.rb +7 -0
- data/lib/rubygems/format.rb +16 -20
- data/lib/rubygems/gem_openssl.rb +1 -1
- data/lib/rubygems/gem_path_searcher.rb +10 -12
- data/lib/rubygems/gemcutter_utilities.rb +49 -0
- data/lib/rubygems/indexer.rb +2 -2
- data/lib/rubygems/install_update_options.rb +1 -9
- data/lib/rubygems/installer.rb +35 -76
- data/lib/rubygems/local_remote_options.rb +1 -2
- data/lib/rubygems/package.rb +0 -1
- data/lib/rubygems/package/tar_input.rb +3 -1
- data/lib/rubygems/package_task.rb +16 -11
- data/lib/rubygems/remote_fetcher.rb +22 -8
- data/lib/rubygems/requirement.rb +78 -100
- data/lib/rubygems/server.rb +41 -10
- data/lib/rubygems/source_index.rb +5 -5
- data/lib/rubygems/spec_fetcher.rb +2 -2
- data/lib/rubygems/specification.rb +66 -16
- data/lib/rubygems/test_utilities.rb +33 -4
- data/lib/rubygems/uninstaller.rb +3 -3
- data/lib/rubygems/user_interaction.rb +45 -0
- data/lib/rubygems/validator.rb +6 -7
- data/lib/rubygems/version.rb +206 -149
- data/lib/rubygems/version_option.rb +16 -0
- data/test/fake_certlib/openssl.rb +1 -1
- data/test/functional.rb +0 -7
- data/test/gem_installer_test_case.rb +4 -4
- data/test/gem_package_tar_test_case.rb +1 -1
- data/test/gemutilities.rb +35 -31
- data/test/insure_session.rb +0 -8
- data/test/mockgemui.rb +0 -8
- data/test/simple_gem.rb +2 -8
- data/test/test_config.rb +3 -10
- data/test/test_gem.rb +9 -14
- data/test/test_gem_builder.rb +1 -7
- data/test/test_gem_command.rb +1 -8
- data/test/test_gem_command_manager.rb +1 -7
- data/test/test_gem_commands_build_command.rb +4 -4
- data/test/test_gem_commands_cert_command.rb +1 -2
- data/test/test_gem_commands_check_command.rb +1 -7
- data/test/test_gem_commands_contents_command.rb +1 -1
- data/test/test_gem_commands_dependency_command.rb +17 -31
- data/test/test_gem_commands_environment_command.rb +1 -1
- data/test/test_gem_commands_fetch_command.rb +14 -12
- data/test/test_gem_commands_generate_index_command.rb +1 -1
- data/test/test_gem_commands_install_command.rb +22 -20
- data/test/test_gem_commands_list_command.rb +1 -1
- data/test/test_gem_commands_lock_command.rb +1 -1
- data/test/test_gem_commands_mirror_command.rb +5 -5
- data/test/test_gem_commands_outdated_command.rb +3 -5
- data/test/test_gem_commands_owner_command.rb +105 -0
- data/test/test_gem_commands_pristine_command.rb +2 -2
- data/test/test_gem_commands_push_command.rb +61 -0
- data/test/test_gem_commands_query_command.rb +23 -56
- data/test/test_gem_commands_server_command.rb +1 -1
- data/test/test_gem_commands_sources_command.rb +1 -70
- data/test/test_gem_commands_specification_command.rb +3 -4
- data/test/test_gem_commands_stale_command.rb +1 -1
- data/test/test_gem_commands_uninstall_command.rb +3 -4
- data/test/test_gem_commands_unpack_command.rb +1 -1
- data/test/test_gem_commands_update_command.rb +13 -13
- data/test/test_gem_commands_which_command.rb +66 -0
- data/test/test_gem_config_file.rb +13 -7
- data/test/test_gem_dependency.rb +82 -134
- data/test/test_gem_dependency_installer.rb +55 -30
- data/test/test_gem_dependency_list.rb +28 -7
- data/test/test_gem_doc_manager.rb +1 -7
- data/test/test_gem_ext_configure_builder.rb +2 -2
- data/test/test_gem_ext_ext_conf_builder.rb +1 -1
- data/test/test_gem_ext_rake_builder.rb +1 -1
- data/test/test_gem_format.rb +14 -11
- data/test/test_gem_gem_path_searcher.rb +12 -1
- data/test/test_gem_gem_runner.rb +1 -1
- data/test/test_gem_gemcutter_utilities.rb +103 -0
- data/test/test_gem_indexer.rb +44 -51
- data/test/test_gem_install_update_options.rb +1 -7
- data/test/test_gem_installer.rb +22 -82
- data/test/test_gem_local_remote_options.rb +1 -1
- data/test/test_gem_package_tar_header.rb +1 -8
- data/test/test_gem_package_tar_input.rb +1 -8
- data/test/test_gem_package_tar_output.rb +1 -8
- data/test/test_gem_package_tar_reader.rb +1 -8
- data/test/test_gem_package_tar_reader_entry.rb +1 -8
- data/test/test_gem_package_tar_writer.rb +1 -8
- data/test/test_gem_package_task.rb +1 -25
- data/test/test_gem_platform.rb +4 -4
- data/test/test_gem_remote_fetcher.rb +31 -21
- data/test/test_gem_requirement.rb +210 -140
- data/test/test_gem_server.rb +36 -1
- data/test/test_gem_source_index.rb +7 -13
- data/test/test_gem_spec_fetcher.rb +17 -47
- data/test/test_gem_specification.rb +7 -20
- data/test/test_gem_stream_ui.rb +21 -1
- data/test/test_gem_uninstaller.rb +1 -2
- data/test/test_gem_validator.rb +2 -8
- data/test/test_gem_version.rb +110 -254
- data/test/test_gem_version_option.rb +1 -1
- data/test/test_kernel.rb +1 -7
- data/util/CL2notes +1 -1
- data/util/gem_prelude.rb.template +64 -41
- metadata +33 -71
- metadata.gz.sig +0 -0
- data/lib/rubygems/digest/digest_adapter.rb +0 -49
- data/lib/rubygems/digest/md5.rb +0 -23
- data/lib/rubygems/digest/sha1.rb +0 -22
- data/lib/rubygems/digest/sha2.rb +0 -22
- data/lib/rubygems/timer.rb +0 -28
- data/test/test_gem_digest.rb +0 -46
- data/test/test_gem_source_info_cache.rb +0 -447
- data/test/test_gem_source_info_cache_entry.rb +0 -78
metadata.gz.sig
CHANGED
Binary file
|
@@ -1,49 +0,0 @@
|
|
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
|
-
# There is an incompatibility between the way Ruby 1.8.5 and 1.8.6 handles
|
11
|
-
# digests. This DigestAdapter will take a pre-1.8.6 digest and adapt it to
|
12
|
-
# the 1.8.6 API.
|
13
|
-
#
|
14
|
-
# Note that only the digest and hexdigest methods are adapted, since these
|
15
|
-
# are the only functions used by RubyGems.
|
16
|
-
|
17
|
-
class Gem::DigestAdapter
|
18
|
-
|
19
|
-
##
|
20
|
-
# Initialize a digest adapter.
|
21
|
-
|
22
|
-
def initialize(digest_class)
|
23
|
-
@digest_class = digest_class
|
24
|
-
end
|
25
|
-
|
26
|
-
##
|
27
|
-
# Return a new digester. Since we are only implementing the stateless
|
28
|
-
# methods, we will return ourself as the instance.
|
29
|
-
|
30
|
-
def new
|
31
|
-
self
|
32
|
-
end
|
33
|
-
|
34
|
-
##
|
35
|
-
# Return the digest of +string+ as a hex string.
|
36
|
-
|
37
|
-
def hexdigest(string)
|
38
|
-
@digest_class.new(string).hexdigest
|
39
|
-
end
|
40
|
-
|
41
|
-
##
|
42
|
-
# Return the digest of +string+ as a binary string.
|
43
|
-
|
44
|
-
def digest(string)
|
45
|
-
@digest_class.new(string).digest
|
46
|
-
end
|
47
|
-
|
48
|
-
end
|
49
|
-
|
data/lib/rubygems/digest/md5.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
#--
|
3
|
-
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
|
4
|
-
# All rights reserved.
|
5
|
-
# See LICENSE.txt for permissions.
|
6
|
-
#++
|
7
|
-
|
8
|
-
require 'digest/md5'
|
9
|
-
|
10
|
-
# :stopdoc:
|
11
|
-
module Gem
|
12
|
-
if RUBY_VERSION >= '1.8.6'
|
13
|
-
MD5 = Digest::MD5
|
14
|
-
else
|
15
|
-
require 'rubygems/digest/digest_adapter'
|
16
|
-
MD5 = DigestAdapter.new(Digest::MD5)
|
17
|
-
def MD5.md5(string)
|
18
|
-
self.hexdigest(string)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
# :startdoc:
|
23
|
-
|
data/lib/rubygems/digest/sha1.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
#--
|
3
|
-
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
|
4
|
-
# All rights reserved.
|
5
|
-
# See LICENSE.txt for permissions.
|
6
|
-
#++
|
7
|
-
|
8
|
-
require 'digest/sha1'
|
9
|
-
|
10
|
-
# :stopdoc:
|
11
|
-
module Gem
|
12
|
-
|
13
|
-
if RUBY_VERSION >= '1.8.6'
|
14
|
-
SHA1 = Digest::SHA1
|
15
|
-
else
|
16
|
-
require 'rubygems/digest/digest_adapter'
|
17
|
-
SHA1 = DigestAdapter.new(Digest::SHA1)
|
18
|
-
end
|
19
|
-
|
20
|
-
end
|
21
|
-
# :startdoc:
|
22
|
-
|
data/lib/rubygems/digest/sha2.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
#--
|
3
|
-
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
|
4
|
-
# All rights reserved.
|
5
|
-
# See LICENSE.txt for permissions.
|
6
|
-
#++
|
7
|
-
|
8
|
-
require 'digest/sha2'
|
9
|
-
|
10
|
-
# :stopdoc:
|
11
|
-
module Gem
|
12
|
-
|
13
|
-
if RUBY_VERSION >= '1.8.6'
|
14
|
-
SHA256 = Digest::SHA256
|
15
|
-
else
|
16
|
-
require 'rubygems/digest/digest_adapter'
|
17
|
-
SHA256 = DigestAdapter.new(Digest::SHA256)
|
18
|
-
end
|
19
|
-
|
20
|
-
end
|
21
|
-
# :startdoc:
|
22
|
-
|
data/lib/rubygems/timer.rb
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# This file defines a $log variable for logging, and a time() method for
|
3
|
-
# recording timing information.
|
4
|
-
#
|
5
|
-
#--
|
6
|
-
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
|
7
|
-
# All rights reserved.
|
8
|
-
# See LICENSE.txt for permissions.
|
9
|
-
#++
|
10
|
-
|
11
|
-
require 'rubygems'
|
12
|
-
|
13
|
-
file, lineno = Gem.location_of_caller
|
14
|
-
|
15
|
-
warn "#{file}:#{lineno}:Warning: RubyGems' lib/rubygems/timer.rb deprecated and will be removed on or after June 2009."
|
16
|
-
|
17
|
-
$log = Object.new
|
18
|
-
|
19
|
-
# :stopdoc:
|
20
|
-
def $log.debug(message)
|
21
|
-
Gem.debug message
|
22
|
-
end
|
23
|
-
|
24
|
-
def time(msg, width=25, &block)
|
25
|
-
Gem.time(msg, width, &block)
|
26
|
-
end
|
27
|
-
# :startdoc:
|
28
|
-
|
data/test/test_gem_digest.rb
DELETED
@@ -1,46 +0,0 @@
|
|
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 File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities')
|
8
|
-
require "rubygems/digest/md5"
|
9
|
-
require "rubygems/digest/sha1"
|
10
|
-
require "rubygems/digest/sha2"
|
11
|
-
|
12
|
-
class TestRubygemsGemDigest < RubyGemTestCase
|
13
|
-
|
14
|
-
def test_sha256_hex_digest_works
|
15
|
-
digester = Gem::SHA256.new
|
16
|
-
assert_equal "b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78", digester.hexdigest("ABC")
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_sha256_digest_works
|
20
|
-
digester = Gem::SHA256.new
|
21
|
-
assert_equal "\265\324\004\\?Fo\251\037\342\314j\276y#*\032W\315\361\004\367\242nqn\n\036'\211\337x",
|
22
|
-
digester.digest("ABC")
|
23
|
-
end
|
24
|
-
|
25
|
-
def test_sha1_hex_digest_works
|
26
|
-
digester = Gem::SHA1.new
|
27
|
-
assert_equal "3c01bdbb26f358bab27f267924aa2c9a03fcfdb8", digester.hexdigest("ABC")
|
28
|
-
end
|
29
|
-
|
30
|
-
def test_sha1_digest_works
|
31
|
-
digester = Gem::SHA1.new
|
32
|
-
assert_equal "<\001\275\273&\363X\272\262\177&y$\252,\232\003\374\375\270", digester.digest("ABC")
|
33
|
-
end
|
34
|
-
|
35
|
-
def test_md5_hex_digest_works
|
36
|
-
digester = Gem::MD5.new
|
37
|
-
assert_equal "902fbdd2b1df0c4f70b4a5d23525e932", digester.hexdigest("ABC")
|
38
|
-
end
|
39
|
-
|
40
|
-
def test_md5_digest_works
|
41
|
-
digester = Gem::MD5.new
|
42
|
-
assert_equal "\220/\275\322\261\337\fOp\264\245\3225%\3512", digester.digest("ABC")
|
43
|
-
end
|
44
|
-
|
45
|
-
end
|
46
|
-
|
@@ -1,447 +0,0 @@
|
|
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 File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities')
|
8
|
-
require 'rubygems/source_info_cache'
|
9
|
-
|
10
|
-
class Gem::SourceIndex
|
11
|
-
public :gems
|
12
|
-
end
|
13
|
-
|
14
|
-
class TestGemSourceInfoCache < RubyGemTestCase
|
15
|
-
|
16
|
-
def setup
|
17
|
-
@original_sources = Gem.sources
|
18
|
-
|
19
|
-
super
|
20
|
-
|
21
|
-
util_setup_fake_fetcher
|
22
|
-
|
23
|
-
@sic = Gem::SourceInfoCache.new
|
24
|
-
@sic.instance_variable_set :@fetcher, @fetcher
|
25
|
-
|
26
|
-
@si_new = Gem::SourceIndex.new
|
27
|
-
@sice_new = Gem::SourceInfoCacheEntry.new @si_new, 0
|
28
|
-
|
29
|
-
prep_cache_files @sic
|
30
|
-
|
31
|
-
@sic.reset_cache_data
|
32
|
-
end
|
33
|
-
|
34
|
-
def teardown
|
35
|
-
super
|
36
|
-
Gem.sources.replace @original_sources
|
37
|
-
Gem::SourceInfoCache.instance_variable_set :@cache, nil
|
38
|
-
end
|
39
|
-
|
40
|
-
def test_self_cache_refreshes
|
41
|
-
Gem.configuration.update_sources = true #true by default
|
42
|
-
si = Gem::SourceIndex.new
|
43
|
-
si.add_spec @a1
|
44
|
-
|
45
|
-
@fetcher.data["#{@gem_repo}Marshal.#{@marshal_version}"] = si.dump
|
46
|
-
|
47
|
-
Gem.sources.replace %W[#{@gem_repo}]
|
48
|
-
|
49
|
-
use_ui @ui do
|
50
|
-
refute_nil Gem::SourceInfoCache.cache
|
51
|
-
assert_kind_of Gem::SourceInfoCache, Gem::SourceInfoCache.cache
|
52
|
-
assert_equal Gem::SourceInfoCache.cache.object_id,
|
53
|
-
Gem::SourceInfoCache.cache.object_id
|
54
|
-
end
|
55
|
-
|
56
|
-
assert_match %r|Bulk updating|, @ui.output
|
57
|
-
end
|
58
|
-
|
59
|
-
def test_self_cache_skips_refresh_based_on_configuration
|
60
|
-
Gem.configuration.update_sources = false
|
61
|
-
si = Gem::SourceIndex.new
|
62
|
-
si.add_spec @a1
|
63
|
-
|
64
|
-
@fetcher.data["#{@gem_repo}Marshal.#{@marshal_version}"] = si.dump
|
65
|
-
|
66
|
-
Gem.sources.replace %w[#{@gem_repo}]
|
67
|
-
|
68
|
-
use_ui @ui do
|
69
|
-
refute_nil Gem::SourceInfoCache.cache
|
70
|
-
assert_kind_of Gem::SourceInfoCache, Gem::SourceInfoCache.cache
|
71
|
-
assert_equal Gem::SourceInfoCache.cache.object_id,
|
72
|
-
Gem::SourceInfoCache.cache.object_id
|
73
|
-
refute_match %r|Bulk updating|, @ui.output
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
def test_self_cache_data
|
78
|
-
si = Gem::SourceIndex.new
|
79
|
-
si.add_spec @a1
|
80
|
-
|
81
|
-
@fetcher.data["#{@gem_repo}Marshal.#{@marshal_version}"] = si.dump
|
82
|
-
|
83
|
-
Gem::SourceInfoCache.instance_variable_set :@cache, nil
|
84
|
-
sice = Gem::SourceInfoCacheEntry.new si, 0
|
85
|
-
|
86
|
-
use_ui @ui do
|
87
|
-
gems = Gem::SourceInfoCache.cache_data[@gem_repo].source_index.gems
|
88
|
-
gem_names = gems.map { |_, spec| spec.full_name }
|
89
|
-
|
90
|
-
assert_equal si.gems.map { |_,spec| spec.full_name }, gem_names
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
def test_cache_data
|
95
|
-
assert_equal [[@gem_repo, @usr_sice]], @sic.cache_data.to_a.sort
|
96
|
-
end
|
97
|
-
|
98
|
-
def test_cache_data_dirty
|
99
|
-
def @sic.dirty() @dirty; end
|
100
|
-
assert_equal false, @sic.dirty, 'clean on init'
|
101
|
-
@sic.cache_data
|
102
|
-
assert_equal false, @sic.dirty, 'clean on fetch'
|
103
|
-
@sic.update
|
104
|
-
@sic.cache_data
|
105
|
-
assert_equal true, @sic.dirty, 'still dirty'
|
106
|
-
end
|
107
|
-
|
108
|
-
def test_cache_data_irreparable
|
109
|
-
@fetcher.data["#{@gem_repo}Marshal.#{@marshal_version}"] = @source_index.dump
|
110
|
-
|
111
|
-
data = { @gem_repo => { 'totally' => 'borked' } }
|
112
|
-
|
113
|
-
cache_files = [
|
114
|
-
@sic.system_cache_file,
|
115
|
-
@sic.latest_system_cache_file,
|
116
|
-
@sic.user_cache_file,
|
117
|
-
@sic.latest_user_cache_file
|
118
|
-
]
|
119
|
-
|
120
|
-
cache_files.each do |fn|
|
121
|
-
FileUtils.mkdir_p File.dirname(fn)
|
122
|
-
open(fn, "wb") { |f| f.write Marshal.dump(data) }
|
123
|
-
end
|
124
|
-
|
125
|
-
@sic.instance_eval { @cache_data = nil }
|
126
|
-
|
127
|
-
fetched = use_ui @ui do @sic.cache_data end
|
128
|
-
|
129
|
-
fetched_si = fetched["#{@gem_repo}"].source_index
|
130
|
-
|
131
|
-
assert_equal @source_index.index_signature, fetched_si.index_signature
|
132
|
-
end
|
133
|
-
|
134
|
-
def test_cache_data_none_readable
|
135
|
-
FileUtils.chmod 0222, @sic.system_cache_file
|
136
|
-
FileUtils.chmod 0222, @sic.latest_system_cache_file
|
137
|
-
FileUtils.chmod 0222, @sic.user_cache_file
|
138
|
-
FileUtils.chmod 0222, @sic.latest_user_cache_file
|
139
|
-
return if (File.stat(@sic.system_cache_file).mode & 0222) != 0222
|
140
|
-
return if (File.stat(@sic.user_cache_file).mode & 0222) != 0222
|
141
|
-
# HACK for systems that don't support chmod
|
142
|
-
assert_equal({}, @sic.cache_data)
|
143
|
-
end
|
144
|
-
|
145
|
-
def test_cache_data_none_writable
|
146
|
-
FileUtils.chmod 0444, @sic.system_cache_file
|
147
|
-
FileUtils.chmod 0444, @sic.user_cache_file
|
148
|
-
e = assert_raises RuntimeError do
|
149
|
-
@sic.cache_data
|
150
|
-
end
|
151
|
-
assert_equal 'unable to locate a writable cache file', e.message
|
152
|
-
end
|
153
|
-
|
154
|
-
def test_cache_data_nonexistent
|
155
|
-
FileUtils.rm @sic.system_cache_file
|
156
|
-
FileUtils.rm @sic.latest_system_cache_file
|
157
|
-
FileUtils.rm @sic.user_cache_file
|
158
|
-
FileUtils.rm @sic.latest_user_cache_file
|
159
|
-
|
160
|
-
# TODO test verbose output
|
161
|
-
assert_equal [], @sic.cache_data.to_a.sort
|
162
|
-
end
|
163
|
-
|
164
|
-
def test_cache_data_repair
|
165
|
-
data = {
|
166
|
-
@gem_repo => {
|
167
|
-
'cache' => Gem::SourceIndex.new,
|
168
|
-
'size' => 0,
|
169
|
-
}
|
170
|
-
}
|
171
|
-
[@sic.system_cache_file, @sic.user_cache_file].each do |fn|
|
172
|
-
FileUtils.mkdir_p File.dirname(fn)
|
173
|
-
open(fn, "wb") { |f| f.write Marshal.dump(data) }
|
174
|
-
end
|
175
|
-
|
176
|
-
@sic.instance_eval { @cache_data = nil }
|
177
|
-
|
178
|
-
expected = {
|
179
|
-
@gem_repo =>
|
180
|
-
Gem::SourceInfoCacheEntry.new(Gem::SourceIndex.new, 0)
|
181
|
-
}
|
182
|
-
assert_equal expected, @sic.cache_data
|
183
|
-
end
|
184
|
-
|
185
|
-
def test_cache_data_user_fallback
|
186
|
-
FileUtils.chmod 0444, @sic.system_cache_file
|
187
|
-
|
188
|
-
assert_equal [[@gem_repo, @usr_sice]], @sic.cache_data.to_a.sort
|
189
|
-
end
|
190
|
-
|
191
|
-
def test_cache_file
|
192
|
-
assert_equal @gemcache, @sic.cache_file
|
193
|
-
end
|
194
|
-
|
195
|
-
def test_cache_file_user_fallback
|
196
|
-
FileUtils.chmod 0444, @sic.system_cache_file
|
197
|
-
assert_equal @usrcache, @sic.cache_file
|
198
|
-
end
|
199
|
-
|
200
|
-
def test_cache_file_none_writable
|
201
|
-
FileUtils.chmod 0444, @sic.system_cache_file
|
202
|
-
FileUtils.chmod 0444, @sic.user_cache_file
|
203
|
-
e = assert_raises RuntimeError do
|
204
|
-
@sic.cache_file
|
205
|
-
end
|
206
|
-
assert_equal 'unable to locate a writable cache file', e.message
|
207
|
-
end
|
208
|
-
|
209
|
-
def test_flush
|
210
|
-
@sic.cache_data[@gem_repo] = @sice_new
|
211
|
-
@sic.update
|
212
|
-
@sic.flush
|
213
|
-
|
214
|
-
assert_equal [[@gem_repo, @sice_new]],
|
215
|
-
read_cache(@sic.system_cache_file).to_a.sort
|
216
|
-
end
|
217
|
-
|
218
|
-
def test_latest_cache_data
|
219
|
-
util_make_gems
|
220
|
-
|
221
|
-
sice = Gem::SourceInfoCacheEntry.new @source_index, 0
|
222
|
-
|
223
|
-
@sic.set_cache_data @gem_repo => sice
|
224
|
-
latest = @sic.latest_cache_data
|
225
|
-
beginning_with_a = Gem::Dependency.new(/^a/, Gem::Requirement.default)
|
226
|
-
gems = latest[@gem_repo].source_index.search(beginning_with_a).map { |s| s.full_name }
|
227
|
-
|
228
|
-
assert_equal %w[a-2 a_evil-9], gems
|
229
|
-
end
|
230
|
-
|
231
|
-
def test_latest_cache_file
|
232
|
-
latest_cache_file = File.join File.dirname(@gemcache),
|
233
|
-
"latest_#{File.basename @gemcache}"
|
234
|
-
assert_equal latest_cache_file, @sic.latest_cache_file
|
235
|
-
end
|
236
|
-
|
237
|
-
def test_latest_system_cache_file
|
238
|
-
assert_equal File.join(Gem.dir, "latest_source_cache"),
|
239
|
-
@sic.latest_system_cache_file
|
240
|
-
end
|
241
|
-
|
242
|
-
def test_latest_user_cache_file
|
243
|
-
assert_equal @latest_usrcache, @sic.latest_user_cache_file
|
244
|
-
end
|
245
|
-
|
246
|
-
def test_read_system_cache
|
247
|
-
assert_equal [[@gem_repo, @sys_sice]], @sic.cache_data.to_a.sort
|
248
|
-
end
|
249
|
-
|
250
|
-
def test_read_user_cache
|
251
|
-
FileUtils.chmod 0444, @sic.user_cache_file
|
252
|
-
FileUtils.chmod 0444, @sic.latest_user_cache_file
|
253
|
-
|
254
|
-
@si = Gem::SourceIndex.new
|
255
|
-
@si.add_specs @a1, @a2
|
256
|
-
|
257
|
-
@sice = Gem::SourceInfoCacheEntry.new @si, 0
|
258
|
-
|
259
|
-
@sic.set_cache_data({ @gem_repo => @sice })
|
260
|
-
@sic.update
|
261
|
-
@sic.write_cache
|
262
|
-
@sic.reset_cache_data
|
263
|
-
|
264
|
-
user_cache_data = @sic.cache_data.to_a.sort
|
265
|
-
|
266
|
-
assert_equal 1, user_cache_data.length
|
267
|
-
user_cache_data = user_cache_data.first
|
268
|
-
|
269
|
-
assert_equal @gem_repo, user_cache_data.first
|
270
|
-
|
271
|
-
gems = user_cache_data.last.source_index.map { |_,spec| spec.full_name }
|
272
|
-
assert_equal [@a2.full_name], gems
|
273
|
-
end
|
274
|
-
|
275
|
-
def test_search
|
276
|
-
si = Gem::SourceIndex.new
|
277
|
-
si.add_spec @a1
|
278
|
-
cache_data = { @gem_repo => Gem::SourceInfoCacheEntry.new(si, nil) }
|
279
|
-
@sic.instance_variable_set :@cache_data, cache_data
|
280
|
-
|
281
|
-
assert_equal [@a1], @sic.search(//)
|
282
|
-
end
|
283
|
-
|
284
|
-
def test_search_all
|
285
|
-
util_make_gems
|
286
|
-
|
287
|
-
sice = Gem::SourceInfoCacheEntry.new @source_index, 0
|
288
|
-
|
289
|
-
@sic.set_cache_data @gem_repo => sice
|
290
|
-
@sic.update
|
291
|
-
@sic.instance_variable_set :@only_latest, false
|
292
|
-
@sic.write_cache
|
293
|
-
@sic.reset_cache_data
|
294
|
-
|
295
|
-
gem_names = @sic.search(//, false, true).map { |spec| spec.full_name }
|
296
|
-
|
297
|
-
assert_equal %w[a-1 a-2 a-3.a a_evil-9 c-1.2], gem_names
|
298
|
-
end
|
299
|
-
|
300
|
-
def test_search_dependency
|
301
|
-
si = Gem::SourceIndex.new
|
302
|
-
si.add_spec @a1
|
303
|
-
cache_data = { @gem_repo => Gem::SourceInfoCacheEntry.new(si, nil) }
|
304
|
-
@sic.instance_variable_set :@cache_data, cache_data
|
305
|
-
|
306
|
-
dep = Gem::Dependency.new @a1.name, @a1.version
|
307
|
-
|
308
|
-
assert_equal [@a1], @sic.search(dep)
|
309
|
-
end
|
310
|
-
|
311
|
-
def test_search_no_matches
|
312
|
-
si = Gem::SourceIndex.new
|
313
|
-
si.add_spec @a1
|
314
|
-
cache_data = { @gem_repo => Gem::SourceInfoCacheEntry.new(si, nil) }
|
315
|
-
@sic.instance_variable_set :@cache_data, cache_data
|
316
|
-
|
317
|
-
assert_equal [], @sic.search(/nonexistent/)
|
318
|
-
end
|
319
|
-
|
320
|
-
def test_search_no_matches_in_source
|
321
|
-
si = Gem::SourceIndex.new
|
322
|
-
si.add_spec @a1
|
323
|
-
cache_data = { @gem_repo => Gem::SourceInfoCacheEntry.new(si, nil) }
|
324
|
-
@sic.instance_variable_set :@cache_data, cache_data
|
325
|
-
Gem.sources.replace %w[more-gems.example.com]
|
326
|
-
|
327
|
-
assert_equal [], @sic.search(/nonexistent/)
|
328
|
-
end
|
329
|
-
|
330
|
-
def test_search_with_source
|
331
|
-
si = Gem::SourceIndex.new
|
332
|
-
si.add_spec @a1
|
333
|
-
cache_data = { @gem_repo => Gem::SourceInfoCacheEntry.new(si, nil) }
|
334
|
-
@sic.instance_variable_set :@cache_data, cache_data
|
335
|
-
|
336
|
-
assert_equal [[@a1, @gem_repo]],
|
337
|
-
@sic.search_with_source(//)
|
338
|
-
end
|
339
|
-
|
340
|
-
def test_system_cache_file
|
341
|
-
assert_equal File.join(Gem.dir, "source_cache"), @sic.system_cache_file
|
342
|
-
end
|
343
|
-
|
344
|
-
def test_user_cache_file
|
345
|
-
assert_equal @usrcache, @sic.user_cache_file
|
346
|
-
end
|
347
|
-
|
348
|
-
def test_write_cache
|
349
|
-
@sic.cache_data[@gem_repo] = @sice_new
|
350
|
-
@sic.write_cache
|
351
|
-
|
352
|
-
assert_equal [[@gem_repo, @sice_new]],
|
353
|
-
read_cache(@sic.system_cache_file).to_a.sort
|
354
|
-
assert_equal [[@gem_repo, @usr_sice]],
|
355
|
-
read_cache(@sic.user_cache_file).to_a.sort
|
356
|
-
end
|
357
|
-
|
358
|
-
def test_write_cache_user
|
359
|
-
FileUtils.chmod 0444, @sic.system_cache_file
|
360
|
-
@sic.set_cache_data({@gem_repo => @sice_new})
|
361
|
-
@sic.update
|
362
|
-
@sic.write_cache
|
363
|
-
@sic.instance_variable_set :@only_latest, false
|
364
|
-
|
365
|
-
assert File.exist?(@sic.user_cache_file), 'user_cache_file'
|
366
|
-
assert File.exist?(@sic.latest_user_cache_file),
|
367
|
-
'latest_user_cache_file exists'
|
368
|
-
|
369
|
-
assert_equal [[@gem_repo, @sys_sice]],
|
370
|
-
read_cache(@sic.system_cache_file).to_a.sort
|
371
|
-
assert_equal [[@gem_repo, @sice_new]],
|
372
|
-
read_cache(@sic.user_cache_file).to_a.sort
|
373
|
-
end
|
374
|
-
|
375
|
-
def test_write_cache_user_from_scratch
|
376
|
-
FileUtils.rm_rf @sic.user_cache_file
|
377
|
-
FileUtils.rm_rf @sic.latest_user_cache_file
|
378
|
-
|
379
|
-
FileUtils.chmod 0444, @sic.system_cache_file
|
380
|
-
FileUtils.chmod 0444, @sic.latest_system_cache_file
|
381
|
-
|
382
|
-
@si = Gem::SourceIndex.new
|
383
|
-
@si.add_specs @a1, @a2
|
384
|
-
|
385
|
-
@sice = Gem::SourceInfoCacheEntry.new @si, 0
|
386
|
-
|
387
|
-
@sic.set_cache_data({ @gem_repo => @sice })
|
388
|
-
@sic.update
|
389
|
-
|
390
|
-
@sic.write_cache
|
391
|
-
|
392
|
-
assert File.exist?(@sic.user_cache_file), 'system_cache_file'
|
393
|
-
assert File.exist?(@sic.latest_user_cache_file),
|
394
|
-
'latest_system_cache_file'
|
395
|
-
|
396
|
-
user_cache_data = read_cache(@sic.user_cache_file).to_a.sort
|
397
|
-
assert_equal 1, user_cache_data.length, 'user_cache_data length'
|
398
|
-
user_cache_data = user_cache_data.first
|
399
|
-
|
400
|
-
assert_equal @gem_repo, user_cache_data.first
|
401
|
-
|
402
|
-
gems = user_cache_data.last.source_index.map { |_,spec| spec.full_name }
|
403
|
-
assert_equal [@a1.full_name, @a2.full_name], gems.sort
|
404
|
-
|
405
|
-
user_cache_data = read_cache(@sic.latest_user_cache_file).to_a.sort
|
406
|
-
assert_equal 1, user_cache_data.length
|
407
|
-
user_cache_data = user_cache_data.first
|
408
|
-
|
409
|
-
assert_equal @gem_repo, user_cache_data.first
|
410
|
-
|
411
|
-
gems = user_cache_data.last.source_index.map { |_,spec| spec.full_name }
|
412
|
-
assert_equal [@a2.full_name], gems
|
413
|
-
end
|
414
|
-
|
415
|
-
def test_write_cache_user_no_directory
|
416
|
-
FileUtils.rm_rf File.dirname(@sic.user_cache_file)
|
417
|
-
FileUtils.chmod 0444, @sic.system_cache_file
|
418
|
-
@sic.set_cache_data({ @gem_repo => @sice_new })
|
419
|
-
@sic.update
|
420
|
-
@sic.write_cache
|
421
|
-
|
422
|
-
assert_equal [[@gem_repo, @sys_sice]],
|
423
|
-
read_cache(@sic.system_cache_file).to_a.sort
|
424
|
-
assert_equal [[@gem_repo, @sys_sice]],
|
425
|
-
read_cache(@sic.user_cache_file).to_a.sort
|
426
|
-
assert_equal [[@gem_repo, @sice_new]],
|
427
|
-
read_cache(@sic.latest_user_cache_file).to_a.sort
|
428
|
-
end
|
429
|
-
|
430
|
-
def test_write_cache_user_only_latest
|
431
|
-
FileUtils.chmod 0444, @sic.system_cache_file
|
432
|
-
@sic.set_cache_data({@gem_repo => @sice_new})
|
433
|
-
@sic.update
|
434
|
-
@sic.write_cache
|
435
|
-
|
436
|
-
assert File.exist?(@sic.user_cache_file), 'user_cache_file'
|
437
|
-
assert File.exist?(@sic.latest_user_cache_file),
|
438
|
-
'latest_user_cache_file exists'
|
439
|
-
|
440
|
-
assert_equal [[@gem_repo, @sys_sice]],
|
441
|
-
read_cache(@sic.system_cache_file).to_a.sort
|
442
|
-
assert_equal [[@gem_repo, @sice_new]],
|
443
|
-
read_cache(@sic.user_cache_file).to_a.sort
|
444
|
-
end
|
445
|
-
|
446
|
-
end
|
447
|
-
|