rubygems-update 0.8.3 → 0.8.4
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 +73 -1
- data/Rakefile +7 -16
- data/Releases +29 -0
- data/lib/rubygems.rb +61 -57
- data/lib/rubygems/custom_require.rb +109 -0
- data/lib/rubygems/gem_commands.rb +3 -3
- data/lib/rubygems/remote_installer.rb +16 -15
- data/lib/rubygems/rubygems_version.rb +1 -1
- data/lib/rubygems/source_index.rb +10 -2
- data/lib/rubygems/specification.rb +26 -20
- data/lib/rubygems/timer.rb +19 -0
- data/lib/rubygems/version.rb +4 -0
- data/scripts/runtest.rb +17 -0
- data/test/data/a-0.0.1.gem +0 -0
- data/test/data/a-0.0.2.gem +0 -0
- data/test/data/b-0.0.2.gem +0 -0
- data/test/data/c-1.2.gem +0 -0
- data/test/data/gemhome/cache/a-0.0.1.gem +0 -0
- data/test/data/gemhome/cache/a-0.0.2.gem +0 -0
- data/test/data/gemhome/cache/b-0.0.2.gem +0 -0
- data/test/data/gemhome/cache/c-1.2.gem +0 -0
- data/test/data/gemhome/gems/a-0.0.1/lib/code.rb +1 -0
- data/test/data/gemhome/gems/a-0.0.2/lib/code.rb +1 -0
- data/test/data/gemhome/gems/b-0.0.2/lib/code.rb +1 -0
- data/test/data/gemhome/gems/c-1.2/lib/code.rb +1 -0
- data/test/data/gemhome/specifications/a-0.0.1.gemspec +8 -0
- data/test/data/gemhome/specifications/a-0.0.2.gemspec +8 -0
- data/test/data/gemhome/specifications/b-0.0.2.gemspec +8 -0
- data/test/data/gemhome/specifications/c-1.2.gemspec +8 -0
- data/test/data/one/one-0.0.1.gem +0 -0
- data/test/test_gempaths.rb +43 -0
- data/test/test_loadmanager.rb +4 -2
- data/test/test_remote_installer.rb +1 -1
- data/test/test_specification.rb +5 -0
- metadata +54 -22
data/ChangeLog
CHANGED
@@ -1,3 +1,73 @@
|
|
1
|
+
2005-01-01 Chad Fowler <chad@chadfowler.com>
|
2
|
+
* Released 0.8.4
|
3
|
+
|
4
|
+
2004-12-31 Jim Weirich <jim@weirichhouse.org>
|
5
|
+
|
6
|
+
* Rakefile: Switch to standard Rake test tasks.
|
7
|
+
|
8
|
+
* lib/rubygems/remote_installer.rb
|
9
|
+
(Gem::RemoteSourceFetcher::read_data): Added a retry to try a
|
10
|
+
lower case gem name if the open failed. This fixes a problem
|
11
|
+
where case differences are preventing some gems from installing.
|
12
|
+
|
13
|
+
2004-12-29 Jim Weirich <jim@weirichhouse.org>
|
14
|
+
|
15
|
+
* lib/rubygems/gem_commands.rb (Gem::InstallCommand::execute):
|
16
|
+
Changed the RemoteInstaller to take an options hash rather than
|
17
|
+
individual options. This will leave the interface more resilient
|
18
|
+
to changes as more options are added
|
19
|
+
(e.g. --install_dependencies).
|
20
|
+
|
21
|
+
* lib/rubygems/specification.rb (Gem::Specification): Marked array
|
22
|
+
attributes explicitly. This allows for explicit conversion to
|
23
|
+
arrays when assigned.
|
24
|
+
|
25
|
+
* test/test_specification.rb
|
26
|
+
(TestSimpleSpecification::test_array_attributes): Added test for
|
27
|
+
array_attributes forcing values to arrays.
|
28
|
+
|
29
|
+
2004-12-28 Jim Weirich <jim@tardis>
|
30
|
+
|
31
|
+
* lib/rubygems.rb (Gem::Exception::ensure_gem_subdirectories):
|
32
|
+
Fixed the Ryan Davis patch to work correctly when directories are
|
33
|
+
not writable.
|
34
|
+
|
35
|
+
2004-12-18 Chad Fowler <chad@chadfowler.com>
|
36
|
+
* lib/rubygems/version.rb: Erik Veenstra's sort patch.
|
37
|
+
* lib/rubygems.rb: Ryan Davis's installation bug fix.
|
38
|
+
|
39
|
+
2004-12-14 Gavin Sinclair <gsinclair@soyabean.com.au>
|
40
|
+
|
41
|
+
* test/test_loadmanager.rb: invalidated it as a unit test; it's
|
42
|
+
incompatible with custom_require.rb.
|
43
|
+
|
44
|
+
2004-12-12 Gavin Sinclair <gsinclair@soyabean.com.au>
|
45
|
+
|
46
|
+
* lib/rubygems/custom_require.rb: simple bug fix.
|
47
|
+
|
48
|
+
2004-12-12 Gavin Sinclair <gsinclair@soyabean.com.au>
|
49
|
+
|
50
|
+
* lib/rubygems/custom_require.rb: new file to replace
|
51
|
+
loadpath_manager.rb and speed up the custom require functionality.
|
52
|
+
|
53
|
+
* lib/rubygems/timer.rb: new file; simple benchmarking tool that's
|
54
|
+
useful at the moment but needn't stay in RubyGems permanently.
|
55
|
+
|
56
|
+
* lib/rubygems/source_index.rb: include Enumerable and implement #size
|
57
|
+
and #length.
|
58
|
+
|
59
|
+
* lib/rubygems/specification.rb: removed lazy initialisation of
|
60
|
+
attributes to reduce #copy_of invocations; folded
|
61
|
+
Specification.copy_of into Specification#copy_of.
|
62
|
+
|
63
|
+
* lib/rubygems.rb: require 'rubygems/custom_require' instead of
|
64
|
+
'rubygems/loadpath_manager'; removed out of date documentation; added
|
65
|
+
"require 'rubygems/timer'" to temporarily assist with benchmarks.
|
66
|
+
|
67
|
+
2004-12-07 Jim Weirich <jim@weirichhouse.org>
|
68
|
+
|
69
|
+
* Released 0.8.3
|
70
|
+
|
1
71
|
2004-12-06 Jim Weirich <jim@weirichhouse.org>
|
2
72
|
|
3
73
|
* test/test_specification.rb
|
@@ -26,7 +96,7 @@
|
|
26
96
|
(Gem::LocalSourceInfoCache::read_cache): Fixed initialization of
|
27
97
|
cache.
|
28
98
|
|
29
|
-
* lib/rubygems.rb: Updated version to
|
99
|
+
* lib/rubygems.rb: Updated version to 0.8.2.
|
30
100
|
|
31
101
|
2004-12-04 Jim Weirich <jim@weirichhouse.org>
|
32
102
|
|
@@ -256,6 +326,8 @@
|
|
256
326
|
by Rich).
|
257
327
|
* lib/rubygems.rb: Fixed small bug in #latest_load_paths
|
258
328
|
|
329
|
+
(NOTE: It looks like 0.8.0/0.8.1 was released in this timeframe)
|
330
|
+
|
259
331
|
2004-09-14 Chad Fowler <chad@chadfowler.com>
|
260
332
|
* lib/rubygems.rb: Fixed bug in require_gem (thanks Jamis Buck!)
|
261
333
|
that would require a gem based on an inexact search of its name
|
data/Rakefile
CHANGED
@@ -26,22 +26,16 @@ CLOBBER.include(
|
|
26
26
|
|
27
27
|
task :default => [:test]
|
28
28
|
|
29
|
-
|
30
|
-
|
31
|
-
test_name = ENV['TEST'] || 'test/test*.rb'
|
32
|
-
ruby %{-Ilib -rscripts/runtest -e 'run_tests("#{test_name}", true)'}
|
29
|
+
Rake::TestTask.new(:test) do |t|
|
30
|
+
t.test_files = FileList['test/test*.rb']
|
33
31
|
end
|
34
32
|
|
35
|
-
|
36
|
-
|
37
|
-
test_name = ENV['TEST'] || 'test/functional.rb'
|
38
|
-
ruby %{-Ilib -rscripts/runtest -e 'run_tests("#{test_name}", true)'}
|
33
|
+
Rake::TestTask.new(:functional) do |t|
|
34
|
+
t.test_files = FileList['test/functional*.rb']
|
39
35
|
end
|
40
36
|
|
41
|
-
|
42
|
-
|
43
|
-
test_name = ENV['TEST'] || 'test/{test,functional}*.rb'
|
44
|
-
ruby %{-Ilib -rscripts/runtest -e 'run_tests("#{test_name}", true)'}
|
37
|
+
Rake::TestTask.new(:alltests) do |t|
|
38
|
+
t.test_files = FileList['test/{test,functional}*.rb']
|
45
39
|
end
|
46
40
|
|
47
41
|
desc "Run the tests for a build"
|
@@ -147,7 +141,7 @@ end
|
|
147
141
|
|
148
142
|
task :tag => [:prerelease] do
|
149
143
|
reltag = "REL_#{ENV['REL'].gsub(/\./, '_')}"
|
150
|
-
reltag << ENV['REUSE'] if ENV['REUSE']
|
144
|
+
reltag << ENV['REUSE'].gsub(/\./, '_') if ENV['REUSE']
|
151
145
|
announce "Tagging CVS with [#{reltag}]"
|
152
146
|
sh %{cvs tag #{reltag}}
|
153
147
|
end
|
@@ -158,9 +152,6 @@ end
|
|
158
152
|
desc "Create the RDOC html files"
|
159
153
|
rd = Rake::RDocTask.new("rdoc") { |rdoc|
|
160
154
|
rdoc.rdoc_dir = 'html'
|
161
|
-
# rdoc.template = 'kilmer'
|
162
|
-
# rdoc.template = 'css2'
|
163
|
-
rdoc.template = 'jamis'
|
164
155
|
rdoc.title = "RubyGems"
|
165
156
|
rdoc.options << '--line-numbers' << '--inline-source' << '--main' << 'README'
|
166
157
|
rdoc.rdoc_files.include('README', 'TODO', 'Releases')
|
data/Releases
CHANGED
@@ -1,5 +1,34 @@
|
|
1
1
|
= RubyGems Release History
|
2
2
|
|
3
|
+
== Release 0.8.3: Dec 7, 2004
|
4
|
+
|
5
|
+
* Added workaround for the null byte in Dir string issue. (see
|
6
|
+
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/121702).
|
7
|
+
(Thanks to Mauricio Fern�ndez for the quick response on this one).
|
8
|
+
|
9
|
+
* Added workaround for old version of Zlib on windows that caused
|
10
|
+
Ruwiki to fail to install. (see
|
11
|
+
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/121770)
|
12
|
+
|
13
|
+
* Added workaround for large YAML file issues. (We dynamically cut
|
14
|
+
down the size of the source index YAML file and seem to have worked
|
15
|
+
around immediate issues.
|
16
|
+
|
17
|
+
* A user specific source index cache can be used when the site-wide
|
18
|
+
cache is unwritable (i.e. because you are running as a non-admin).
|
19
|
+
This *greatly* speeds up gem commands run in non-admin mode when the
|
20
|
+
site-wide cache is out of date.
|
21
|
+
|
22
|
+
* The gem command now used an HTTP HEAD command to detect if the
|
23
|
+
server's source index needs to be downloaed.
|
24
|
+
|
25
|
+
* gem check gemname --test will run unit tests on installed gems that
|
26
|
+
have unit tests.
|
27
|
+
|
28
|
+
== Release 0.8.1: Sep 14, 2004
|
29
|
+
|
30
|
+
* Quick release to capture some bug fixes.
|
31
|
+
|
3
32
|
== Release 0.8.0: Sep 12, 2004
|
4
33
|
|
5
34
|
* Remove need for library stubs. Set the RUBYOPT environment variable
|
data/lib/rubygems.rb
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
require 'rubygems/timer'
|
2
|
+
require 'rbconfig'
|
3
|
+
|
1
4
|
module Gem
|
2
5
|
class LoadError < ::LoadError
|
3
6
|
attr_accessor :name, :version_requirement
|
@@ -14,22 +17,11 @@ module Kernel
|
|
14
17
|
# a required Gem is not found, a Gem::LoadError is raised. More information on
|
15
18
|
# version requirements can be found in the Gem::Version documentation.
|
16
19
|
#
|
17
|
-
#
|
18
|
-
#
|
19
|
-
#
|
20
|
-
#
|
21
|
-
# This is strictly short for
|
22
|
-
#
|
23
|
-
# require_gem 'rake'
|
24
|
-
# require 'rake/packagetask'
|
20
|
+
# You can define the environment variable GEM_SKIP as a way to not
|
21
|
+
# load specified gems. you might do this to test out changes that haven't
|
22
|
+
# been intsalled yet. Example:
|
25
23
|
#
|
26
|
-
#
|
27
|
-
# load specified gems. you might do this to test out changes that haven't
|
28
|
-
# been intsalled yet. Example:
|
29
|
-
#
|
30
|
-
# GEM_SKIP=libA:libB ruby-I../libA -I../libB ./mycode.rb
|
31
|
-
#
|
32
|
-
# <i>This is an experimental feature added after versoin 0.7, on 2004-07-13. </i>
|
24
|
+
# GEM_SKIP=libA:libB ruby-I../libA -I../libB ./mycode.rb
|
33
25
|
#
|
34
26
|
# gem:: [String or Gem::Dependency] The gem name or dependency instance.
|
35
27
|
# version_requirement:: [default="> 0.0.0"] The version requirement.
|
@@ -200,9 +192,9 @@ module Gem
|
|
200
192
|
def all_load_paths
|
201
193
|
result = []
|
202
194
|
Gem.path.each do |gemdir|
|
203
|
-
|
204
|
-
|
205
|
-
|
195
|
+
each_load_path(all_partials(gemdir)) do |load_path|
|
196
|
+
result << load_path
|
197
|
+
end
|
206
198
|
end
|
207
199
|
result
|
208
200
|
end
|
@@ -212,9 +204,9 @@ module Gem
|
|
212
204
|
def latest_load_paths
|
213
205
|
result = []
|
214
206
|
Gem.path.each do |gemdir|
|
215
|
-
|
216
|
-
|
217
|
-
|
207
|
+
each_load_path(latest_partials(gemdir)) do |load_path|
|
208
|
+
result << load_path
|
209
|
+
end
|
218
210
|
end
|
219
211
|
result
|
220
212
|
end
|
@@ -225,8 +217,8 @@ module Gem
|
|
225
217
|
return nil if matches.empty?
|
226
218
|
spec = matches.last
|
227
219
|
spec.require_paths.each do |path|
|
228
|
-
|
229
|
-
|
220
|
+
result = File.join(spec.full_gem_path, path, libfile)
|
221
|
+
return result if File.exists?(result)
|
230
222
|
end
|
231
223
|
end
|
232
224
|
|
@@ -242,13 +234,13 @@ module Gem
|
|
242
234
|
def latest_partials(gemdir)
|
243
235
|
latest = {}
|
244
236
|
all_partials(gemdir).each do |gp|
|
245
|
-
|
237
|
+
base = File.basename(gp)
|
246
238
|
matches = /(.*)-((\d+\.)*\d+)/.match(base)
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
239
|
+
name, version = [matches[1], matches[2]]
|
240
|
+
ver = Gem::Version.new(version)
|
241
|
+
if latest[name].nil? || ver > latest[name][0]
|
242
|
+
latest[name] = [ver, gp]
|
243
|
+
end
|
252
244
|
end
|
253
245
|
latest.collect { |k,v| v[1] }
|
254
246
|
end
|
@@ -257,17 +249,17 @@ module Gem
|
|
257
249
|
# specified in the Gem spec. Each expanded path is yielded.
|
258
250
|
def each_load_path(partials)
|
259
251
|
partials.each do |gp|
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
252
|
+
base = File.basename(gp)
|
253
|
+
specfn = File.join(dir, "specifications", base + ".gemspec")
|
254
|
+
if File.exist?(specfn)
|
255
|
+
spec = eval(File.read(specfn))
|
256
|
+
spec.require_paths.each do |rp|
|
257
|
+
yield(File.join(gp, rp))
|
258
|
+
end
|
259
|
+
else
|
260
|
+
filename = File.join(gp, 'lib')
|
261
|
+
yield(filename) if File.exist?(filename)
|
262
|
+
end
|
271
263
|
end
|
272
264
|
end
|
273
265
|
|
@@ -299,19 +291,19 @@ module Gem
|
|
299
291
|
#
|
300
292
|
def find_home
|
301
293
|
['HOME', 'USERPROFILE'].each do |homekey|
|
302
|
-
|
294
|
+
return ENV[homekey] if ENV[homekey]
|
303
295
|
end
|
304
296
|
if ENV['HOMEDRIVE'] && ENV['HOMEPATH']
|
305
|
-
|
297
|
+
return "#{ENV['HOMEDRIVE']}:#{ENV['HOMEPATH']}"
|
306
298
|
end
|
307
299
|
begin
|
308
|
-
|
300
|
+
File.expand_path("~")
|
309
301
|
rescue Exception => ex
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
302
|
+
if File::ALT_SEPARATOR
|
303
|
+
"C:/"
|
304
|
+
else
|
305
|
+
"/"
|
306
|
+
end
|
315
307
|
end
|
316
308
|
end
|
317
309
|
|
@@ -320,12 +312,22 @@ module Gem
|
|
320
312
|
# Default home directory path to be used if an alternate value is
|
321
313
|
# not specified in the environment.
|
322
314
|
def default_dir
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
315
|
+
## rbconfig = Dir.glob("{#{($LOAD_PATH).join(',')}}/rbconfig.rb").first
|
316
|
+
## if rbconfig
|
317
|
+
## module_eval File.read(rbconfig) unless const_defined?("Config")
|
318
|
+
## else
|
319
|
+
## require 'rbconfig'
|
320
|
+
## end
|
321
|
+
#
|
322
|
+
# Note on above code: we have an issue if a Config class is
|
323
|
+
# already defined and we load 'rbconfig'. The above code is
|
324
|
+
# supposed to work around that but it's been commented out. In
|
325
|
+
# any case, I moved "require 'rbconfig'" to the top of this
|
326
|
+
# file, because there was a circular dependency between this
|
327
|
+
# method and our custom require. In any case, rbconfig is a
|
328
|
+
# fundamental RubyGems dependency, so it might as well be up the
|
329
|
+
# top. -- Gavin Sinclair, 2004-12-12
|
330
|
+
#
|
329
331
|
File.join(Config::CONFIG['libdir'], 'ruby', 'gems', Config::CONFIG['ruby_version'])
|
330
332
|
end
|
331
333
|
|
@@ -337,9 +339,9 @@ module Gem
|
|
337
339
|
def ensure_gem_subdirectories(gemdir)
|
338
340
|
DIRECTORIES.each do |filename|
|
339
341
|
fn = File.join(gemdir, filename)
|
340
|
-
|
342
|
+
unless File.exists?(fn)
|
341
343
|
require 'fileutils'
|
342
|
-
|
344
|
+
FileUtils.mkdir_p(fn) rescue nil
|
343
345
|
end
|
344
346
|
end
|
345
347
|
end
|
@@ -350,4 +352,6 @@ end
|
|
350
352
|
require 'rubygems/source_index'
|
351
353
|
require 'rubygems/specification'
|
352
354
|
require 'rubygems/version'
|
353
|
-
require 'rubygems/loadpath_manager'
|
355
|
+
#require 'rubygems/loadpath_manager' # custom_require replaces this
|
356
|
+
require 'rubygems/custom_require'
|
357
|
+
|
@@ -0,0 +1,109 @@
|
|
1
|
+
require 'rubygems/source_index'
|
2
|
+
|
3
|
+
module Kernel
|
4
|
+
alias require__ require
|
5
|
+
|
6
|
+
#
|
7
|
+
# We replace Ruby's require with our own, which is capable of loading gems on demand.
|
8
|
+
#
|
9
|
+
# When you call <tt>require 'x'</tt>, this is what happens:
|
10
|
+
# * If the file can be loaded from the existing Ruby loadpath, it is.
|
11
|
+
# * Otherwise, installed gems are searched for a file that matches. If it's found in gem
|
12
|
+
# 'y', that gem is activated (added to the loadpath).
|
13
|
+
#
|
14
|
+
# The normal <tt>require</tt> functionality of returning false if that file has already been
|
15
|
+
# loaded is preserved.
|
16
|
+
#
|
17
|
+
def require(path)
|
18
|
+
require__ path
|
19
|
+
rescue LoadError
|
20
|
+
begin
|
21
|
+
@gempath_searcher ||= Gem::GemPathSearcher.new
|
22
|
+
if spec = @gempath_searcher.find(path)
|
23
|
+
Gem.activate(spec.name, true, "= #{spec.version}")
|
24
|
+
require__ path
|
25
|
+
else
|
26
|
+
raise LoadError, "No such file to load -- #{path}"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end # module Kernel
|
31
|
+
|
32
|
+
|
33
|
+
module Gem
|
34
|
+
|
35
|
+
#
|
36
|
+
# GemPathSearcher has the capability to find loadable files inside gems. It generates data
|
37
|
+
# up front to speed up searches later.
|
38
|
+
#
|
39
|
+
class GemPathSearcher
|
40
|
+
|
41
|
+
#
|
42
|
+
# Initialise the data we need to make searches later.
|
43
|
+
#
|
44
|
+
def initialize
|
45
|
+
# We want a record of all the installed gemspecs, in the order we wish to examine them.
|
46
|
+
@gemspecs = init_gemspecs
|
47
|
+
# Map gem spec to glob of full require_path directories. Preparing this information may
|
48
|
+
# speed up searches later.
|
49
|
+
@lib_dirs = {}
|
50
|
+
@gemspecs.each do |spec|
|
51
|
+
@lib_dirs[spec.object_id] = lib_dirs(spec)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
#
|
56
|
+
# Look in all the installed gems until a matching _path_ is found. Return the _gemspec_
|
57
|
+
# of the gem where it was found. If no match is found, return nil.
|
58
|
+
#
|
59
|
+
# The gems are searched in alphabetical order, and in reverse version order.
|
60
|
+
#
|
61
|
+
# For example:
|
62
|
+
#
|
63
|
+
# find('log4r') # -> (log4r-1.1 spec)
|
64
|
+
# find('log4r.rb') # -> (log4r-1.1 spec)
|
65
|
+
# find('rake/rdoctask') # -> (rake-0.4.12 spec)
|
66
|
+
# find('foobarbaz') # -> nil
|
67
|
+
#
|
68
|
+
# Matching paths can have various suffixes ('.rb', '.so', and others), which may or may
|
69
|
+
# not already be attached to _file_. This method doesn't care about the full filename
|
70
|
+
# that matches; only that there is a match.
|
71
|
+
#
|
72
|
+
def find(path)
|
73
|
+
@gemspecs.each do |spec|
|
74
|
+
return spec if matching_file(spec, path)
|
75
|
+
end
|
76
|
+
nil
|
77
|
+
end
|
78
|
+
|
79
|
+
private
|
80
|
+
|
81
|
+
SUFFIX_PATTERN = "{,.rb,.so,.bundle,.dll,.sl}"
|
82
|
+
|
83
|
+
#
|
84
|
+
# Attempts to find a matching path using the require_paths of the given _spec_.
|
85
|
+
#
|
86
|
+
# Some of the intermediate results are cached in @lib_dirs for speed.
|
87
|
+
#
|
88
|
+
def matching_file(spec, path) # :doc:
|
89
|
+
glob = "#{@lib_dirs[spec.object_id]}/#{path}#{SUFFIX_PATTERN}"
|
90
|
+
return true unless Dir[glob].select { |f| File.file?(f) }.empty?
|
91
|
+
end
|
92
|
+
|
93
|
+
# Return a list of all installed gemspecs, sorted by alphabetical order and in reverse
|
94
|
+
# version order.
|
95
|
+
def init_gemspecs
|
96
|
+
Gem.source_index.map { |_, spec| spec }.sort_by { |spec|
|
97
|
+
[spec.name, spec.version.to_ints.map { |n| -n } ]
|
98
|
+
}
|
99
|
+
end
|
100
|
+
|
101
|
+
# Returns library directories glob for a gemspec. For example,
|
102
|
+
# '/usr/local/lib/ruby/gems/1.8/gems/foobar-1.0/{lib,ext}'
|
103
|
+
def lib_dirs(spec)
|
104
|
+
"#{spec.full_gem_path}/#{spec.require_paths.join(',')}"
|
105
|
+
end
|
106
|
+
|
107
|
+
end # class Gem::GemPathLoader
|
108
|
+
|
109
|
+
end # module Gem
|
@@ -160,7 +160,7 @@ module Gem
|
|
160
160
|
|
161
161
|
if remote? && installed_gems.nil?
|
162
162
|
say "Attempting remote installation of '#{gem_name}'"
|
163
|
-
installer = Gem::RemoteInstaller.new(options
|
163
|
+
installer = Gem::RemoteInstaller.new(options)
|
164
164
|
installed_gems = installer.install(gem_name, options[:version], options[:force], options[:install_dir])
|
165
165
|
say "Successfully installed #{installed_gems[0].name}, version #{installed_gems[0].version}" if installed_gems
|
166
166
|
end
|
@@ -373,7 +373,7 @@ module Gem
|
|
373
373
|
say
|
374
374
|
say "*** REMOTE GEMS ***"
|
375
375
|
begin
|
376
|
-
output_query_results(Gem::RemoteInstaller.new(options
|
376
|
+
output_query_results(Gem::RemoteInstaller.new(options).search(options[:name]))
|
377
377
|
rescue Gem::RemoteSourceException => e
|
378
378
|
alert_error e.to_s
|
379
379
|
end
|
@@ -521,7 +521,7 @@ module Gem
|
|
521
521
|
hig[spec.name] = spec
|
522
522
|
end
|
523
523
|
end
|
524
|
-
remote_gemspecs = Gem::RemoteInstaller.new(options
|
524
|
+
remote_gemspecs = Gem::RemoteInstaller.new(options).search(//)
|
525
525
|
# For some reason, this is an array of arrays. The actual list of specifications is
|
526
526
|
# the first and only element. If there were more remote sources, perhaps there would be
|
527
527
|
# more.
|
@@ -93,11 +93,18 @@ module Gem
|
|
93
93
|
# Read the data from the (source based) URI.
|
94
94
|
def read_data(uri)
|
95
95
|
require 'rubygems/open-uri'
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
96
|
+
begin
|
97
|
+
open(uri,
|
98
|
+
"User-Agent" => "RubyGems/#{Gem::RubyGemsVersion}",
|
99
|
+
:proxy => @http_proxy
|
100
|
+
) do |input|
|
101
|
+
input.read
|
102
|
+
end
|
103
|
+
rescue
|
104
|
+
old_uri = uri
|
105
|
+
uri = uri.downcase
|
106
|
+
retry if old_uri != uri
|
107
|
+
raise
|
101
108
|
end
|
102
109
|
end
|
103
110
|
|
@@ -317,10 +324,11 @@ module Gem
|
|
317
324
|
# * <tt>:no_proxy</tt>: ignore environment variables and _don't_
|
318
325
|
# use a proxy
|
319
326
|
#
|
320
|
-
def initialize(
|
327
|
+
def initialize(options={})
|
321
328
|
# Ensure http_proxy env vars are used if no proxy explicitly supplied.
|
329
|
+
@options = options
|
322
330
|
@http_proxy =
|
323
|
-
case http_proxy
|
331
|
+
case @options[:http_proxy]
|
324
332
|
when :no_proxy
|
325
333
|
false
|
326
334
|
when nil
|
@@ -457,14 +465,7 @@ module Gem
|
|
457
465
|
installed_gems = []
|
458
466
|
dependencies.each do |dependency|
|
459
467
|
if ask_yes_no("Install required dependency #{dependency.name}?", true)
|
460
|
-
remote_installer = RemoteInstaller.new(
|
461
|
-
if @http_proxy == false
|
462
|
-
:no_proxy
|
463
|
-
elsif @http_proxy == true
|
464
|
-
else
|
465
|
-
@http_proxy
|
466
|
-
end
|
467
|
-
)
|
468
|
+
remote_installer = RemoteInstaller.new(@options)
|
468
469
|
installed_gems << remote_installer.install(
|
469
470
|
dependency.name,
|
470
471
|
dependency.version_requirements,
|
@@ -1,4 +1,7 @@
|
|
1
1
|
require 'rubygems/user_interaction'
|
2
|
+
|
3
|
+
require 'forwardable'
|
4
|
+
|
2
5
|
module Gem
|
3
6
|
|
4
7
|
# The SourceIndex object indexes all the gems available from a
|
@@ -12,6 +15,9 @@ module Gem
|
|
12
15
|
# old YAMLized source index objects to load properly.
|
13
16
|
#
|
14
17
|
class SourceIndex
|
18
|
+
extend Forwardable
|
19
|
+
include Enumerable
|
20
|
+
|
15
21
|
class << self
|
16
22
|
include Gem::UserInteraction
|
17
23
|
end
|
@@ -40,7 +46,7 @@ module Gem
|
|
40
46
|
def self.from_installed_gems(*spec_dirs)
|
41
47
|
gems = {}
|
42
48
|
if spec_dirs.empty?
|
43
|
-
|
49
|
+
spec_dirs = Gem.path.collect { |dir| File.join(dir, "specifications") }
|
44
50
|
end
|
45
51
|
Dir.glob("{#{spec_dirs.join(',')}}/*.gemspec").each do |file_name|
|
46
52
|
gemspec = load_specification(file_name)
|
@@ -48,7 +54,7 @@ module Gem
|
|
48
54
|
end
|
49
55
|
self.new(gems)
|
50
56
|
end
|
51
|
-
|
57
|
+
|
52
58
|
# Load a specification from a file (eval'd Ruby code)
|
53
59
|
#
|
54
60
|
# file_name:: [String] The .gemspec file
|
@@ -81,6 +87,8 @@ module Gem
|
|
81
87
|
@gems.each(&block)
|
82
88
|
end
|
83
89
|
|
90
|
+
def_delegators :@gems, :size, :length
|
91
|
+
|
84
92
|
# Search for a gem by name and optional version
|
85
93
|
#
|
86
94
|
# gem_name::
|
@@ -21,7 +21,7 @@ module Gem
|
|
21
21
|
# Potentially raised when a specification is validated.
|
22
22
|
class InvalidSpecificationException < Gem::Exception; end
|
23
23
|
class EndOfYAMLException < Gem::Exception; end
|
24
|
-
|
24
|
+
|
25
25
|
##
|
26
26
|
# == Gem::Specification
|
27
27
|
#
|
@@ -124,11 +124,21 @@ module Gem
|
|
124
124
|
def self.attribute(name, default=nil)
|
125
125
|
@@attributes << [name, default]
|
126
126
|
@@default_value[name] = default
|
127
|
-
|
128
|
-
|
127
|
+
attr_accessor(name)
|
128
|
+
end
|
129
|
+
|
130
|
+
# Same as :attribute, but ensures that values assigned to the
|
131
|
+
# attribute are array values by applying :to_a to the value.
|
132
|
+
def self.array_attribute(name)
|
133
|
+
@@attributes << [name, []]
|
134
|
+
@@default_value[name] = []
|
135
|
+
module_eval %{
|
129
136
|
def #{name}
|
130
|
-
|
131
|
-
|
137
|
+
@#{name} ||= []
|
138
|
+
end
|
139
|
+
def #{name}=(value)
|
140
|
+
@#{name} = value.to_a
|
141
|
+
end
|
132
142
|
}
|
133
143
|
end
|
134
144
|
|
@@ -212,15 +222,15 @@ module Gem
|
|
212
222
|
attribute :has_rdoc, false
|
213
223
|
attribute :required_ruby_version, Gem::Version::Requirement.default
|
214
224
|
attribute :platform, Gem::Platform::RUBY
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
225
|
+
array_attribute :authors
|
226
|
+
array_attribute :files
|
227
|
+
array_attribute :test_files
|
228
|
+
array_attribute :rdoc_options
|
229
|
+
array_attribute :extra_rdoc_files
|
230
|
+
array_attribute :executables
|
231
|
+
array_attribute :extensions
|
232
|
+
array_attribute :requirements
|
233
|
+
array_attribute :dependencies
|
224
234
|
|
225
235
|
read_only :dependencies
|
226
236
|
|
@@ -582,18 +592,13 @@ module Gem
|
|
582
592
|
end
|
583
593
|
|
584
594
|
# Duplicate an object unless it's an immediate value.
|
585
|
-
def
|
595
|
+
def copy_of(obj)
|
586
596
|
case obj
|
587
597
|
when Numeric, Symbol, true, false, nil then obj
|
588
598
|
else obj.dup
|
589
599
|
end
|
590
600
|
end
|
591
601
|
|
592
|
-
# Duplicate an object unless it's an immediate value.
|
593
|
-
def copy_of(obj)
|
594
|
-
self.class.copy_of(obj)
|
595
|
-
end
|
596
|
-
|
597
602
|
# Return a string containing a Ruby code representation of the given object.
|
598
603
|
def ruby_code(obj)
|
599
604
|
case obj
|
@@ -609,5 +614,6 @@ module Gem
|
|
609
614
|
end
|
610
615
|
|
611
616
|
end # class Specification
|
617
|
+
|
612
618
|
end # module Gem
|
613
619
|
|
@@ -0,0 +1,19 @@
|
|
1
|
+
#
|
2
|
+
# This file defines a $log variable for logging, and a time() method for recording timing
|
3
|
+
# information.
|
4
|
+
#
|
5
|
+
|
6
|
+
$log = Object.new
|
7
|
+
def $log.debug(str)
|
8
|
+
STDERR.puts str
|
9
|
+
end
|
10
|
+
|
11
|
+
def time(msg, width=25)
|
12
|
+
t = Time.now
|
13
|
+
return_value = yield
|
14
|
+
elapsed = Time.now.to_f - t.to_f
|
15
|
+
elapsed = sprintf("%3.3f", elapsed)
|
16
|
+
$log.debug "#{msg.ljust(width)}: #{elapsed}s"
|
17
|
+
return_value
|
18
|
+
end
|
19
|
+
|
data/lib/rubygems/version.rb
CHANGED
data/scripts/runtest.rb
CHANGED
@@ -15,3 +15,20 @@ def run_tests(pattern='test/test*.rb', log_enabled=false)
|
|
15
15
|
end
|
16
16
|
}
|
17
17
|
end
|
18
|
+
|
19
|
+
# You can run the unit tests by running this file directly, providing a pattern. For example,
|
20
|
+
#
|
21
|
+
# ruby scripts/runtests.rb spec
|
22
|
+
#
|
23
|
+
# will load just the "test/test_specification.rb" unit test (unless others match as well).
|
24
|
+
|
25
|
+
if $0 == __FILE__
|
26
|
+
$:.unshift 'lib' # Must run this from the root directory.
|
27
|
+
pattern = ARGV.shift
|
28
|
+
if pattern
|
29
|
+
pattern = "test/*#{pattern}*.rb"
|
30
|
+
run_tests(pattern, true)
|
31
|
+
else
|
32
|
+
run_tests
|
33
|
+
end
|
34
|
+
end
|
Binary file
|
Binary file
|
Binary file
|
data/test/data/c-1.2.gem
ADDED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
CODE = 1
|
@@ -0,0 +1 @@
|
|
1
|
+
CODE = 1
|
@@ -0,0 +1 @@
|
|
1
|
+
CODE = 1
|
@@ -0,0 +1 @@
|
|
1
|
+
CODE = 1
|
Binary file
|
data/test/test_gempaths.rb
CHANGED
@@ -91,6 +91,49 @@ class TestGemPaths < Test::Unit::TestCase
|
|
91
91
|
end
|
92
92
|
end
|
93
93
|
|
94
|
+
def test_ensure_gem_directories_new
|
95
|
+
FileUtils.rm_r("test/temp/gemdir")
|
96
|
+
Gem.use_paths("test/temp/gemdir")
|
97
|
+
Gem.send(:ensure_gem_subdirectories, "test/temp/gemdir")
|
98
|
+
assert File.exist?("test/temp/gemdir/cache")
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_ensure_gem_directories_missing_parents
|
102
|
+
gemdir = "test/temp/a/b/c/gemdir"
|
103
|
+
FileUtils.rm_r("test/temp/a") rescue nil
|
104
|
+
Gem.use_paths(gemdir)
|
105
|
+
Gem.send(:ensure_gem_subdirectories, gemdir)
|
106
|
+
assert File.exist?("#{gemdir}/cache")
|
107
|
+
end
|
108
|
+
|
109
|
+
def test_ensure_gem_directories_write_protected
|
110
|
+
gemdir = "test/temp/egd"
|
111
|
+
FileUtils.rm_r gemdir rescue nil
|
112
|
+
FileUtils.mkdir_p gemdir
|
113
|
+
FileUtils.chmod 0400, gemdir
|
114
|
+
Gem.use_paths(gemdir)
|
115
|
+
Gem.send(:ensure_gem_subdirectories, gemdir)
|
116
|
+
assert ! File.exist?("#{gemdir}/cache")
|
117
|
+
ensure
|
118
|
+
FileUtils.chmod(0600, gemdir) rescue nil
|
119
|
+
FileUtils.rm_r gemdir rescue nil
|
120
|
+
end
|
121
|
+
|
122
|
+
def test_ensure_gem_directories_with_parents_write_protected
|
123
|
+
parent = "test/temp/egd"
|
124
|
+
gemdir = "#{parent}/a/b/c"
|
125
|
+
|
126
|
+
FileUtils.rm_r parent rescue nil
|
127
|
+
FileUtils.mkdir_p parent
|
128
|
+
FileUtils.chmod 0400, parent
|
129
|
+
Gem.use_paths(gemdir)
|
130
|
+
Gem.send(:ensure_gem_subdirectories, gemdir)
|
131
|
+
assert ! File.exist?("#{gemdir}/cache")
|
132
|
+
ensure
|
133
|
+
FileUtils.chmod(0600, parent) rescue nil
|
134
|
+
FileUtils.rm_r parent rescue nil
|
135
|
+
end
|
136
|
+
|
94
137
|
private
|
95
138
|
|
96
139
|
def create_additional_gem_dirs
|
data/test/test_loadmanager.rb
CHANGED
@@ -1,12 +1,14 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
+
# This test case disabled because it's incompatible with the new custom_require.rb.
|
4
|
+
|
3
5
|
require 'test/unit'
|
4
|
-
require 'rubygems/loadpath_manager'
|
6
|
+
#require 'rubygems/loadpath_manager'
|
5
7
|
require 'rubygems/builder'
|
6
8
|
|
7
9
|
require 'test/gemenvironment'
|
8
10
|
|
9
|
-
class TestLoadPathManager
|
11
|
+
class TestLoadPathManager #< Test::Unit::TestCase
|
10
12
|
def setup
|
11
13
|
TestEnvironment.create
|
12
14
|
Gem.clear_paths
|
@@ -143,7 +143,7 @@ class RemoteInstallerTest < Test::Unit::TestCase
|
|
143
143
|
FOO_GEM = '' # TODO
|
144
144
|
CACHE_DIR = File.join(Gem.dir, 'cache')
|
145
145
|
|
146
|
-
# Disable this test for now. We will come back to revisit this.
|
146
|
+
# TODO: Disable this test for now. We will come back to revisit this.
|
147
147
|
def disable_test_install
|
148
148
|
Gem.use_paths("test/data/gemhome")
|
149
149
|
result = @remote_installer.install('foo')
|
data/test/test_specification.rb
CHANGED
@@ -134,6 +134,11 @@ class TestSimpleSpecification < Test::Unit::TestCase
|
|
134
134
|
end
|
135
135
|
end
|
136
136
|
|
137
|
+
def test_array_attributes
|
138
|
+
@spec.files = (1..10)
|
139
|
+
assert_equal Array, @spec.files.class
|
140
|
+
end
|
141
|
+
|
137
142
|
def test_equality
|
138
143
|
same_spec = @spec.dup
|
139
144
|
assert_equal @spec, same_spec
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.3
|
|
3
3
|
specification_version: 1
|
4
4
|
name: rubygems-update
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.8.
|
7
|
-
date:
|
6
|
+
version: 0.8.4
|
7
|
+
date: 2005-01-01
|
8
8
|
summary: RubyGems Update GEM
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -41,17 +41,17 @@ files:
|
|
41
41
|
- doc/doc.css
|
42
42
|
- doc/makedoc.rb
|
43
43
|
- examples/application
|
44
|
+
- examples/application/an-app.gemspec
|
44
45
|
- examples/application/bin
|
45
46
|
- examples/application/lib
|
46
|
-
- examples/application/an-app.gemspec
|
47
47
|
- examples/application/bin/myapp
|
48
48
|
- examples/application/lib/somefunctionality.rb
|
49
|
-
- gemspecs/ook.gemspec
|
50
|
-
- gemspecs/README
|
51
49
|
- gemspecs/cgikit-1.1.0.gemspec
|
52
50
|
- gemspecs/jabber4r.gemspec
|
53
51
|
- gemspecs/linguistics.gemspec
|
52
|
+
- gemspecs/ook.gemspec
|
54
53
|
- gemspecs/progressbar.gemspec
|
54
|
+
- gemspecs/README
|
55
55
|
- gemspecs/redcloth.gemspec
|
56
56
|
- gemspecs/rublog.gemspec
|
57
57
|
- gemspecs/ruby-doom.gemspec
|
@@ -59,11 +59,11 @@ files:
|
|
59
59
|
- gemspecs/statistics.gemspec
|
60
60
|
- lib/rubygems.rb
|
61
61
|
- lib/ubygems.rb
|
62
|
-
- lib/rubygems/specification.rb
|
63
62
|
- lib/rubygems/builder.rb
|
64
63
|
- lib/rubygems/cmd_manager.rb
|
65
64
|
- lib/rubygems/command.rb
|
66
65
|
- lib/rubygems/config_file.rb
|
66
|
+
- lib/rubygems/custom_require.rb
|
67
67
|
- lib/rubygems/doc_manager.rb
|
68
68
|
- lib/rubygems/format.rb
|
69
69
|
- lib/rubygems/gem_commands.rb
|
@@ -74,11 +74,13 @@ files:
|
|
74
74
|
- lib/rubygems/open-uri.rb
|
75
75
|
- lib/rubygems/package.rb
|
76
76
|
- lib/rubygems/remote_installer.rb
|
77
|
+
- lib/rubygems/rubygems_version.rb
|
77
78
|
- lib/rubygems/source_index.rb
|
79
|
+
- lib/rubygems/specification.rb
|
80
|
+
- lib/rubygems/timer.rb
|
78
81
|
- lib/rubygems/user_interaction.rb
|
79
82
|
- lib/rubygems/validator.rb
|
80
83
|
- lib/rubygems/version.rb
|
81
|
-
- lib/rubygems/rubygems_version.rb
|
82
84
|
- pkgs/sources
|
83
85
|
- pkgs/sources/lib
|
84
86
|
- pkgs/sources/sources.gemspec
|
@@ -88,15 +90,18 @@ files:
|
|
88
90
|
- scripts/gemdoc.rb
|
89
91
|
- scripts/runtest.rb
|
90
92
|
- scripts/specdoc.rb
|
91
|
-
- test/data
|
92
|
-
- test/mock
|
93
93
|
- test/bogussources.rb
|
94
|
+
- test/data
|
94
95
|
- test/functional.rb
|
95
96
|
- test/gemenvironment.rb
|
97
|
+
- test/gemutilities.rb
|
96
98
|
- test/insure_session.rb
|
99
|
+
- test/mock
|
97
100
|
- test/mockgemui.rb
|
101
|
+
- test/onegem.rb
|
98
102
|
- test/simple_gem.rb
|
99
103
|
- test/test_builder.rb
|
104
|
+
- test/test_cached_fetcher.rb
|
100
105
|
- test/test_check_command.rb
|
101
106
|
- test/test_command.rb
|
102
107
|
- test/test_configfile.rb
|
@@ -104,34 +109,61 @@ files:
|
|
104
109
|
- test/test_gemloadpaths.rb
|
105
110
|
- test/test_gempaths.rb
|
106
111
|
- test/test_loadmanager.rb
|
112
|
+
- test/test_local_cache.rb
|
107
113
|
- test/test_package.rb
|
108
114
|
- test/test_parse_commands.rb
|
109
115
|
- test/test_process_commands.rb
|
110
|
-
- test/
|
116
|
+
- test/test_remote_fetcher.rb
|
117
|
+
- test/test_remote_installer.rb
|
118
|
+
- test/test_source_index.rb
|
111
119
|
- test/test_specification.rb
|
112
120
|
- test/test_validator.rb
|
113
121
|
- test/test_version_comparison.rb
|
114
122
|
- test/testgem.rc
|
115
123
|
- test/user_capture.rb
|
116
|
-
- test/
|
117
|
-
- test/
|
118
|
-
- test/
|
119
|
-
- test/
|
120
|
-
- test/
|
121
|
-
- test/
|
122
|
-
- test/gemutilities.rb
|
124
|
+
- test/yaml_data.rb
|
125
|
+
- test/data/a-0.0.1.gem
|
126
|
+
- test/data/a-0.0.2.gem
|
127
|
+
- test/data/b-0.0.2.gem
|
128
|
+
- test/data/c-1.2.gem
|
129
|
+
- test/data/gemhome
|
123
130
|
- test/data/gems
|
124
|
-
- test/data/one
|
125
131
|
- test/data/legacy
|
126
132
|
- test/data/lib
|
133
|
+
- test/data/one
|
134
|
+
- test/data/gemhome/cache
|
135
|
+
- test/data/gemhome/doc
|
136
|
+
- test/data/gemhome/gems
|
137
|
+
- test/data/gemhome/specifications
|
138
|
+
- test/data/gemhome/cache/a-0.0.1.gem
|
139
|
+
- test/data/gemhome/cache/a-0.0.2.gem
|
140
|
+
- test/data/gemhome/cache/b-0.0.2.gem
|
141
|
+
- test/data/gemhome/cache/c-1.2.gem
|
142
|
+
- test/data/gemhome/gems/a-0.0.1
|
143
|
+
- test/data/gemhome/gems/a-0.0.2
|
144
|
+
- test/data/gemhome/gems/b-0.0.2
|
145
|
+
- test/data/gemhome/gems/c-1.2
|
146
|
+
- test/data/gemhome/gems/a-0.0.1/lib
|
147
|
+
- test/data/gemhome/gems/a-0.0.1/lib/code.rb
|
148
|
+
- test/data/gemhome/gems/a-0.0.2/lib
|
149
|
+
- test/data/gemhome/gems/a-0.0.2/lib/code.rb
|
150
|
+
- test/data/gemhome/gems/b-0.0.2/lib
|
151
|
+
- test/data/gemhome/gems/b-0.0.2/lib/code.rb
|
152
|
+
- test/data/gemhome/gems/c-1.2/lib
|
153
|
+
- test/data/gemhome/gems/c-1.2/lib/code.rb
|
154
|
+
- test/data/gemhome/specifications/a-0.0.1.gemspec
|
155
|
+
- test/data/gemhome/specifications/a-0.0.2.gemspec
|
156
|
+
- test/data/gemhome/specifications/b-0.0.2.gemspec
|
157
|
+
- test/data/gemhome/specifications/c-1.2.gemspec
|
158
|
+
- test/data/legacy/keyedlist-0.4.0.ruby
|
159
|
+
- test/data/legacy/keyedlist-0.4.0.yaml
|
160
|
+
- test/data/lib/code.rb
|
127
161
|
- test/data/one/lib
|
128
|
-
- test/data/one/
|
162
|
+
- test/data/one/one-0.0.1.gem
|
129
163
|
- test/data/one/one.gemspec
|
130
164
|
- test/data/one/one.yaml
|
165
|
+
- test/data/one/README.one
|
131
166
|
- test/data/one/lib/one.rb
|
132
|
-
- test/data/legacy/keyedlist-0.4.0.ruby
|
133
|
-
- test/data/legacy/keyedlist-0.4.0.yaml
|
134
|
-
- test/data/lib/code.rb
|
135
167
|
- test/mock/gems
|
136
168
|
- test/mock/gems/cache
|
137
169
|
- test/mock/gems/doc
|