rubygems-update 0.8.8 → 0.8.10

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rubygems-update might be problematic. Click here for more details.

data/ChangeLog CHANGED
@@ -1,8 +1,63 @@
1
- 2005-03-13 Gavin Sinclair <gsinclair@soyabean.com.au>
1
+ 2005-03-25 Jim Weirich <jim@weirichhouse.org>
2
+
3
+ * lib/rubygems/gem_commands.rb
4
+ (Gem::UpdateCommand::do_rubygems_update): Update --system now runs
5
+ the ruby command directly rather than trying to load teh
6
+ update-rubygems command. There were too many things to go wrong
7
+ with the old way.
8
+
9
+ 2005-03-24 Jim Weirich <jim@weirichhouse.org>
10
+
11
+ * lib/rubygems/remote_installer.rb
12
+ (Gem::RemoteInstaller::find_dependencies_not_installed): Fixed to
13
+ reload source index before attempting to detect dependencies.
14
+
15
+ 2005-03-23 Jim Weirich <jim@weirichhouse.org>
16
+
17
+ * lib/rubygems/remote_installer.rb
18
+ (Gem::RemoteInstaller::find_dependencies_not_installed): Switched
19
+ to using SourceIndex#find_name to detect missing dependencies,
20
+ avoiding a gem activation during an install.
21
+
22
+ * lib/rubygems/installer.rb (Gem::Installer::install): Removed
23
+ activate call from install step. If we need to do something about
24
+ dependencies at this time, then we need a better way to do them.
25
+
26
+ * lib/rubygems.rb: Removed the require for rubygems/timer.
2
27
 
3
- * lib/rubygems/installer.rb: Removed all code relating to library
4
- stubs as we haven't generated them for ages.
28
+ 2005-03-16 Jim Weirich <jim@weirichhouse.org>
5
29
 
30
+ * test/gemenvironment.rb (TestEnvironment::create): Added require
31
+ on gem/builder.
32
+
33
+ * lib/rubygems/source_index.rb (Gem::SourceIndex::initialize):
34
+ Allowing default argument to new to be an empty hash.
35
+ (Gem::SourceIndex::from_installed_gems): Refactored into a class
36
+ method that invokes a instance method.
37
+ (Gem::SourceIndex::refresh): Refresh now does a complete reload
38
+ from disk. This should be more accurate that the earlier version.
39
+
40
+ * lib/rubygems/installer.rb (Gem::Uninstaller::uninstall): removed
41
+ unneeded refresh!.
42
+
43
+ * lib/rubygems.rb (Gem::Exception::source_index): Removed
44
+ automatic refresh from Gem.source_index ... it wasn't reliable
45
+ when removing installed gems.
46
+ (Gem::Exception::activate): Added detection of previously loaded
47
+ gems.
48
+
49
+ 2005-03-15 Chad Fowler <chad@chadfowler.com>
50
+
51
+ * bin/gem_server: (htonl) rdoc opens in existing browser window.
52
+
53
+ 2005-03-14 Jim Weirich <jim@weirichhouse.org>
54
+
55
+ * Released 0.8.8
56
+
57
+ 2005-03-14 Jim Weirich <jim@weirichhouse.org>
58
+
59
+ * Released 0.8.7
60
+
6
61
  2005-03-13 Gavin Sinclair <gsinclair@soyabean.com.au>
7
62
 
8
63
  * lib/rubygems/installer.rb (Gem::Installer#shebang): Refactored and
data/Rakefile CHANGED
@@ -174,7 +174,7 @@ rd = Rake::RDocTask.new("rdoc") { |rdoc|
174
174
  rdoc.options << '--line-numbers' << '--inline-source' << '--main' << 'README'
175
175
  rdoc.rdoc_files.include('README', 'TODO', 'Releases')
176
176
  rdoc.rdoc_files.include('lib/**/*.rb')
177
- rdoc.rdoc_files.include('test/**/*.rb')
177
+ # rdoc.rdoc_files.include('test/**/*.rb')
178
178
  }
179
179
 
180
180
  file "html/index.html" => [:rdoc]
@@ -42,7 +42,7 @@ IF:first_name_entry
42
42
  ENDIF:first_name_entry
43
43
  <b>%name% %version%</b>
44
44
  IF:rdoc_installed
45
- <a href="%doc_path%" target="_blank">[rdoc]</a>
45
+ <a href="%doc_path%">[rdoc]</a>
46
46
  ENDIF:rdoc_installed
47
47
  IFNOT:rdoc_installed
48
48
  <span title="rdoc not installed">[rdoc]</span>
@@ -1,5 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
- $:.unshift '~/rubygems'
2
+
3
+ # Generate the yaml/yaml.Z index files for a gem server directory.
4
+ #
5
+ # Usage: generate_yaml_index.rb --dir DIR [--verbose]
6
+
7
+ $:.unshift '~/rubygems' if File.exist? "~/rubygems"
3
8
 
4
9
  require 'optparse'
5
10
  require 'rubygems'
@@ -7,28 +12,11 @@ require 'zlib'
7
12
 
8
13
  Gem.manage_gems
9
14
 
10
- options = {}
11
- ARGV.options do |opts|
12
- opts.on_tail("--help", "show this message") {puts opts; exit}
13
- opts.on('-d', '--dir=DIRNAME', "base directory with dir/gems", String) {|options[:directory]|}
14
- opts.parse!
15
- end
16
-
17
- directory = options[:directory]
18
- unless directory
19
- puts "Error, must specify directory name. Use --help"
20
- exit
21
- else
22
- unless File.exist?(directory) && File.directory?(directory)
23
- puts "Error, unknown directory name #{directory}."
24
- exit
25
- end
26
- end
27
-
28
15
  class Indexer
29
16
 
30
- def initialize(directory)
31
- @directory = directory
17
+ def initialize(options)
18
+ @options = options
19
+ @directory = options[:directory]
32
20
  end
33
21
 
34
22
  def gem_file_list
@@ -36,18 +24,25 @@ class Indexer
36
24
  end
37
25
 
38
26
  def build_index
27
+ build_uncompressed_index
28
+ build_compressed_index
29
+ end
30
+
31
+ def build_uncompressed_index
32
+ puts "Building yaml file" if @options[:verbose]
39
33
  File.open(File.join(@directory, "yaml"), "w") do |file|
40
34
  file.puts "--- !ruby/object:Gem::Cache"
41
35
  file.puts "gems:"
42
36
  gem_file_list.each do |gemfile|
43
37
  spec = Gem::Format.from_file_by_path(gemfile).spec
38
+ puts " ... adding #{spec.full_name}" if @options[:verbose]
44
39
  file.puts " #{spec.full_name}: #{spec.to_yaml.gsub(/\n/, "\n ")[4..-1]}"
45
40
  end
46
41
  end
47
- build_compressed_index
48
42
  end
49
-
43
+
50
44
  def build_compressed_index
45
+ puts "Building yaml.Z file" if @options[:verbose]
51
46
  File.open(File.join(@directory, "yaml.Z"), "w") do |file|
52
47
  file.write(Zlib::Deflate.deflate(File.read(File.join(@directory, "yaml"))))
53
48
  end
@@ -55,4 +50,29 @@ class Indexer
55
50
  end
56
51
 
57
52
 
58
- Indexer.new(directory).build_index
53
+ options = {
54
+ :directory => '.',
55
+ :verbose => false,
56
+ }
57
+
58
+ ARGV.options do |opts|
59
+ opts.on_tail("--help", "show this message") {puts opts; exit}
60
+ opts.on('-d', '--dir=DIRNAME', "base directory containing gems subdirectory", String) do |value|
61
+ options[:directory] = value
62
+ end
63
+ opts.on('-v', '--verbose', "show verbose output") do |value|
64
+ options[:verbose] = value
65
+ end
66
+ opts.parse!
67
+ end
68
+
69
+ if options[:directory].nil?
70
+ puts "Error, must specify directory name. Use --help"
71
+ exit
72
+ elsif ! File.exist?(options[:directory]) ||
73
+ ! File.directory?(options[:directory])
74
+ puts "Error, unknown directory name #{directory}."
75
+ exit
76
+ end
77
+
78
+ Indexer.new(options).build_index
@@ -1,4 +1,3 @@
1
- require 'rubygems/timer'
2
1
  require 'rbconfig'
3
2
 
4
3
  module Gem
@@ -78,7 +77,6 @@ module Gem
78
77
  #
79
78
  def source_index
80
79
  @@source_index ||= SourceIndex.from_installed_gems
81
- @@source_index.refresh!
82
80
  end
83
81
 
84
82
  # Provide an alias for the old name.
@@ -126,25 +124,38 @@ module Gem
126
124
  # already loaded, or an exception otherwise.
127
125
  #
128
126
  def activate(gem, autorequire, *version_requirements)
127
+ @loaded_specs ||= Hash.new
129
128
  unless version_requirements.size > 0
130
129
  version_requirements = ["> 0.0.0"]
131
130
  end
132
131
  unless gem.respond_to?(:name) && gem.respond_to?(:version_requirements)
133
132
  gem = Gem::Dependency.new(gem, version_requirements)
134
133
  end
135
-
134
+
136
135
  matches = Gem.source_index.find_name(gem.name, gem.version_requirements)
137
136
  report_activate_error(gem) if matches.empty?
138
137
 
139
- # Get highest matching version
138
+ if @loaded_specs[gem.name]
139
+ # This gem is already loaded. If the currently loaded gem is
140
+ # not in the list of candidate gems, then we have a version
141
+ # conflict.
142
+ existing_spec = @loaded_specs[gem.name]
143
+ if ! matches.any? { |spec| spec.version == existing_spec.version }
144
+ fail Gem::Exception, "can't activate #{gem}, already activated #{existing_spec.full_name}]"
145
+ end
146
+ return false
147
+ end
148
+
149
+ # new load
140
150
  spec = matches.last
141
151
  if spec.loaded?
142
152
  return false unless autorequire
143
153
  result = spec.autorequire ? require(spec.autorequire) : false
144
154
  return result || false
145
155
  end
146
-
156
+
147
157
  spec.loaded = true
158
+ @loaded_specs[spec.name] = spec
148
159
 
149
160
  # Load dependent gems first
150
161
  spec.dependencies.each do |dep_gem|
@@ -1,5 +1,7 @@
1
1
  # The following is borrowed from setup.rb
2
2
 
3
+ class File; end
4
+
3
5
  def File.binread(fname)
4
6
  open(fname, 'rb') {|f|
5
7
  return f.read
@@ -262,4 +264,4 @@ module Gem
262
264
  end
263
265
 
264
266
  end
265
- end
267
+ end
@@ -694,8 +694,9 @@ module Gem
694
694
  install_command.execute
695
695
  end
696
696
  if gems_to_update.include?("rubygems-update")
697
- say "Updating version of RubyGems"
698
- do_rubygems_update
697
+ latest_ruby_gem = remote_gemspecs.select { |s| s.name == 'rubygems-update' }.sort_by { |s| s.version }.last
698
+ say "Updating version of RubyGems to #{latest_ruby_gem.version}"
699
+ do_rubygems_update(latest_ruby_gem.version.to_s)
699
700
  end
700
701
  if(options[:system]) then
701
702
  say "RubyGems system software updated"
@@ -704,13 +705,12 @@ module Gem
704
705
  end
705
706
  end
706
707
 
707
- def do_rubygems_update
708
- # Need to clear out the argument list because the
709
- # update_rubygems script expects to handle command line
710
- # argument.
711
- ARGV.clear
712
- require_gem 'rubygems-update'
713
- load 'update_rubygems'
708
+ def do_rubygems_update(version_string)
709
+ update_dir = File.join(Gem.dir, "gems", "rubygems-update-#{version_string}")
710
+ Dir.chdir(update_dir) do
711
+ puts "Installing RubyGems #{version_string}"
712
+ system "ruby setup.rb"
713
+ end
714
714
  end
715
715
 
716
716
  def which_to_update(highest_installed_gems, remote_gemspecs)
@@ -54,12 +54,15 @@ module Gem
54
54
  end
55
55
  end
56
56
  # Check the dependent gems.
57
- unless @options[:ignore_dependencies]
58
- spec.dependencies.each do |dep_gem|
59
- # TODO: Does this take account of *versions*?
60
- require_gem_with_options(dep_gem, [], :auto_require=>false)
61
- end
62
- end
57
+ # NOTE: THe dependent gem check is disabled. WE SHOULD NOT
58
+ # REQUIRE GEMS DURING INSTALLTION. If we need to check
59
+ # dependencies, we need a different way.
60
+ # unless @options[:ignore_dependencies]
61
+ # spec.dependencies.each do |dep_gem|
62
+ # # TODO: Does this take account of *versions*?
63
+ # require_gem_with_options(dep_gem, [], :auto_require=>false)
64
+ # end
65
+ # end
63
66
  end
64
67
 
65
68
  raise Gem::FilePermissionError.new(install_dir) unless File.writable?(install_dir)
@@ -286,9 +289,8 @@ TEXT
286
289
  #
287
290
  def uninstall
288
291
  require 'fileutils'
289
- Gem.source_index.refresh!
290
292
  list = Gem.source_index.search(@gem, @version)
291
- if list.size == 0
293
+ if list.empty?
292
294
  raise "Unknown RubyGem: #{@gem} (#{@version})"
293
295
  elsif list.size > 1 && @force_all
294
296
  remove_all(list.dup)
@@ -461,14 +461,9 @@ module Gem
461
461
  def find_dependencies_not_installed(dependencies)
462
462
  to_install = []
463
463
  dependencies.each do |dependency|
464
- begin
465
- require_gem_with_options(
466
- dependency.name,
467
- dependency.requirement_list,
468
- :auto_require=>false)
469
- rescue LoadError => e
470
- to_install.push dependency
471
- end
464
+ srcindex = Gem::SourceIndex.from_installed_gems
465
+ matches = srcindex.find_name(dependency.name, dependency.requirement_list)
466
+ to_install.push dependency if matches.empty?
472
467
  end
473
468
  to_install
474
469
  end
@@ -2,5 +2,5 @@
2
2
  # This file is auto-generated by build scripts.
3
3
  # See: rake update_version
4
4
  module Gem
5
- RubyGemsVersion = '0.8.8'
5
+ RubyGemsVersion = '0.8.10'
6
6
  end
@@ -28,10 +28,26 @@ module Gem
28
28
  # specifications::
29
29
  # [Hash] hash of [Gem name, Gem::Specification] pairs
30
30
  #
31
- def initialize(specifications)
31
+ def initialize(specifications={})
32
32
  @gems = specifications
33
33
  end
34
34
 
35
+ # Reconstruct this source index from the list of source
36
+ # directories. If the list is empty, then use the directories in
37
+ # Gem.path.
38
+ #
39
+ def from_installed_gems(*spec_dirs)
40
+ @gems.clear
41
+ if spec_dirs.empty?
42
+ spec_dirs = Gem.path.collect { |dir| File.join(dir, "specifications") }
43
+ end
44
+ Dir.glob("{#{spec_dirs.join(',')}}/*.gemspec").each do |file_name|
45
+ gemspec = self.class.load_specification(file_name)
46
+ @gems[gemspec.full_name] = gemspec if gemspec
47
+ end
48
+ self
49
+ end
50
+
35
51
  # Factory method to construct a source index instance for a given
36
52
  # path.
37
53
  #
@@ -44,15 +60,7 @@ module Gem
44
60
  # SourceIndex instance
45
61
  #
46
62
  def self.from_installed_gems(*spec_dirs)
47
- gems = {}
48
- if spec_dirs.empty?
49
- spec_dirs = Gem.path.collect { |dir| File.join(dir, "specifications") }
50
- end
51
- Dir.glob("{#{spec_dirs.join(',')}}/*.gemspec").each do |file_name|
52
- gemspec = load_specification(file_name)
53
- gems[gemspec.full_name] = gemspec if gemspec
54
- end
55
- self.new(gems)
63
+ self.new.from_installed_gems(*spec_dirs)
56
64
  end
57
65
 
58
66
  # Load a specification from a file (eval'd Ruby code)
@@ -124,15 +132,7 @@ module Gem
124
132
  # return:: Returns a pointer to itself.
125
133
  #
126
134
  def refresh!
127
- spec_dirs = Gem.path.collect {|dir| File.join(dir, "specifications")}
128
- files = Dir.glob("{#{spec_dirs.join(',')}}/*.gemspec")
129
- current_loaded_files = @gems.values.collect {|spec| spec.loaded_from}
130
- (files - current_loaded_files).each do |spec_file|
131
- gemspec = Gem::SourceIndex.load_specification(spec_file)
132
-
133
- @gems[gemspec.full_name] = gemspec if gemspec
134
- end
135
- self
135
+ from_installed_gems
136
136
  end
137
137
 
138
138
  end
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1 @@
1
+ CODE = 1
@@ -0,0 +1,8 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = %q{a}
3
+ s.version = "0.0.1"
4
+ s.date = %q{2005-03-25}
5
+ s.summary = %q{summary}
6
+ s.description = %q{desc}
7
+ s.files = ["lib/code.rb"]
8
+ end
@@ -0,0 +1,8 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = %q{a}
3
+ s.version = "0.0.2"
4
+ s.date = %q{2005-03-25}
5
+ s.summary = %q{summary}
6
+ s.description = %q{desc}
7
+ s.files = ["lib/code.rb"]
8
+ end
@@ -0,0 +1,8 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = %q{b}
3
+ s.version = "0.0.2"
4
+ s.date = %q{2005-03-25}
5
+ s.summary = %q{summary}
6
+ s.description = %q{desc}
7
+ s.files = ["lib/code.rb"]
8
+ end
@@ -0,0 +1,8 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = %q{c}
3
+ s.version = "1.2"
4
+ s.date = %q{2005-03-25}
5
+ s.summary = %q{summary}
6
+ s.description = %q{desc}
7
+ s.files = ["lib/code.rb"]
8
+ end
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'rubygems'
4
4
  require 'rubygems/installer'
5
+ require 'rubygems/builder'
5
6
  require 'test/mockgemui'
6
7
  require 'rake'
7
8
 
@@ -10,7 +11,7 @@ module TestEnvironment
10
11
 
11
12
  # Create a testing environment for gems.
12
13
  def create
13
- return if File.exist? "test/data/gemhome/gems/a-0.0.1"
14
+ # return if File.exist? "test/data/gemhome/gems/a-0.0.1"
14
15
  Dir.chdir("test/data") do
15
16
  mkdir "lib" unless File.exists? "lib"
16
17
  open("lib/code.rb", "w") do |f| f.puts "CODE = 1" end unless
@@ -0,0 +1,51 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'test/unit'
4
+ require 'test/gemenvironment'
5
+
6
+ class TestRequireGem < Test::Unit::TestCase
7
+ def setup
8
+ TestEnvironment.create
9
+ Gem.use_paths("test/data/gemhome")
10
+ Gem.source_index.refresh!
11
+ @old_path = $:.dup
12
+ Gem.instance_eval { @loaded_specs.clear if @loaded_specs }
13
+ end
14
+
15
+ def teardown
16
+ $:.replace(@old_path)
17
+ end
18
+
19
+ def test_require
20
+ assert require_gem('a', '= 0.0.1'), "Should load"
21
+ assert $:.any? { |p| %r{a-0.0.1/lib} =~ p }
22
+ assert $:.any? { |p| %r{a-0.0.1/bin} =~ p }
23
+ end
24
+
25
+ def test_redundent_requires
26
+ assert require_gem('a', '= 0.0.1'), "Should load"
27
+ assert ! require_gem('a', '= 0.0.1'), "Should not load"
28
+ assert_equal 1, $:.select { |p| %r{a-0.0.1/lib} =~ p }.size
29
+ assert_equal 1, $:.select { |p| %r{a-0.0.1/bin} =~ p }.size
30
+ end
31
+
32
+ def test_overlapping_requires
33
+ assert require_gem('a', '= 0.0.1'), "Should load"
34
+ assert ! require_gem('a', '>= 0.0.1'), "Should not load"
35
+ assert_equal 1, $:.select { |p| %r{a-0.0.1/lib} =~ p }.size
36
+ assert_equal 1, $:.select { |p| %r{a-0.0.1/bin} =~ p }.size
37
+ end
38
+
39
+ def test_conflicting_requires
40
+ assert require_gem('a', '= 0.0.1'), "Should load"
41
+ ex = assert_raises(Gem::Exception) {
42
+ require_gem 'a', '= 0.0.2'
43
+ }
44
+ assert_match /activate a \(= 0\.0\.2\)/, ex.message
45
+ assert_match /activated a-0\.0\.1/, ex.message
46
+ assert $:.any? { |p| %r{a-0.0.1/lib} =~ p }
47
+ assert $:.any? { |p| %r{a-0.0.1/bin} =~ p }
48
+ assert ! $:.any? { |p| %r{a-0.0.2/lib} =~ p }
49
+ assert ! $:.any? { |p| %r{a-0.0.2/bin} =~ p }
50
+ end
51
+ end
metadata CHANGED
@@ -1,10 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.8.7.1
2
+ rubygems_version: 0.8.9.2
3
3
  specification_version: 1
4
4
  name: rubygems-update
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.8.8
7
- date: 2005-03-14
6
+ version: 0.8.10
7
+ date: 2005-03-25
8
8
  summary: RubyGems Update GEM
9
9
  require_paths:
10
10
  - lib
@@ -83,8 +83,8 @@ files:
83
83
  - lib/rubygems/user_interaction.rb
84
84
  - lib/rubygems/validator.rb
85
85
  - lib/rubygems/version.rb
86
- - lib/rubygems/dependency_list.rb
87
86
  - lib/rubygems/gem_commands.rb
87
+ - lib/rubygems/dependency_list.rb
88
88
  - pkgs/sources
89
89
  - pkgs/sources/lib
90
90
  - pkgs/sources/sources.gemspec
@@ -128,18 +128,49 @@ files:
128
128
  - test/yaml_data.rb
129
129
  - test/test_dependency_list.rb
130
130
  - test/test_deployment.rb
131
+ - test/test_require_gem.rb
131
132
  - test/data/gems
132
133
  - test/data/one
133
134
  - test/data/legacy
134
135
  - test/data/lib
136
+ - test/data/gemhome
137
+ - test/data/a-0.0.1.gem
138
+ - test/data/a-0.0.2.gem
139
+ - test/data/b-0.0.2.gem
140
+ - test/data/c-1.2.gem
135
141
  - test/data/one/lib
136
142
  - test/data/one/README.one
137
143
  - test/data/one/one.gemspec
138
144
  - test/data/one/one.yaml
145
+ - test/data/one/one-0.0.1.gem
139
146
  - test/data/one/lib/one.rb
140
147
  - test/data/legacy/keyedlist-0.4.0.ruby
141
148
  - test/data/legacy/keyedlist-0.4.0.yaml
142
149
  - test/data/lib/code.rb
150
+ - test/data/gemhome/cache
151
+ - test/data/gemhome/doc
152
+ - test/data/gemhome/gems
153
+ - test/data/gemhome/specifications
154
+ - test/data/gemhome/cache/a-0.0.1.gem
155
+ - test/data/gemhome/cache/a-0.0.2.gem
156
+ - test/data/gemhome/cache/b-0.0.2.gem
157
+ - test/data/gemhome/cache/c-1.2.gem
158
+ - test/data/gemhome/gems/a-0.0.1
159
+ - test/data/gemhome/gems/a-0.0.2
160
+ - test/data/gemhome/gems/b-0.0.2
161
+ - test/data/gemhome/gems/c-1.2
162
+ - test/data/gemhome/gems/a-0.0.1/lib
163
+ - test/data/gemhome/gems/a-0.0.1/lib/code.rb
164
+ - test/data/gemhome/gems/a-0.0.2/lib
165
+ - test/data/gemhome/gems/a-0.0.2/lib/code.rb
166
+ - test/data/gemhome/gems/b-0.0.2/lib
167
+ - test/data/gemhome/gems/b-0.0.2/lib/code.rb
168
+ - test/data/gemhome/gems/c-1.2/lib
169
+ - test/data/gemhome/gems/c-1.2/lib/code.rb
170
+ - test/data/gemhome/specifications/a-0.0.1.gemspec
171
+ - test/data/gemhome/specifications/a-0.0.2.gemspec
172
+ - test/data/gemhome/specifications/b-0.0.2.gemspec
173
+ - test/data/gemhome/specifications/c-1.2.gemspec
143
174
  - test/mock/gems
144
175
  - test/mock/gems/cache
145
176
  - test/mock/gems/doc