rubygems-update 0.9.3 → 0.9.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 CHANGED
@@ -1,3 +1,23 @@
1
+ 2007-05-23 Jim Weirich <jim@weirichhouse.org>
2
+
3
+ * lib/rubygems/commands/sources_command.rb
4
+ (Gem::Commands::SourcesCommand::initialize): Added a --clear-all
5
+ option to the sources subcommand. Clear-all will remove the cache
6
+ files.
7
+
8
+ * lib/rubygems/source_info_cache.rb (Gem): Moved system_cache_file
9
+ and user_cache_file to class methods so that we can get the file
10
+ names without creating a SourceInfoCache instance.
11
+
12
+ 2007-05-23 Eric Hodel <drbrain@segment7.net>
13
+
14
+ * lib/rubygems/source_info_cache.rb: Teach SIC to repair itself
15
+ when it encounters a bad cache file.
16
+
17
+ 2007-05-14 Chad Fowler <chad@chadfowler.com>
18
+ * lib/rubygems/command_manager.rb: Re-added registration for
19
+ gem cleanup command which I accidentally removed during refactoring.
20
+
1
21
  2007-05-10 Jim Weirich <jim@weirichhouse.org>
2
22
 
3
23
  * lib/rubygems/remote_installer.rb: Uncommented the require
data/Rakefile CHANGED
@@ -182,10 +182,11 @@ task :tag => [:prerelease] do
182
182
  reltag = "REL_#{PKG_VERSION.gsub(/\./, '_')}"
183
183
  reltag = "REL_#{ENV['REUSE'].gsub(/\./, '_')}" if ENV['REUSE']
184
184
  announce "Tagging SVN with [#{reltag}]"
185
+ software_dir = File.basename(Dir.pwd)
185
186
  if ENV['RELTEST']
186
- announce "Release Task Testing, skipping SVN tagging"
187
+ announce "Release Task Testing, skipping SVN tagging (in dir #{software_dir})"
187
188
  else
188
- sh %{cd ..; svn copy trunk tags/#{reltag}; svn ci -m "Tag #{reltag}" tags/#{reltag}}
189
+ sh %{svn copy svn+ssh://rubyforge.org/var/svn/rubygems/trunk svn+ssh://rubyforge.org/var/svn/rubygems/tags/#{reltag}}
189
190
  end
190
191
  end
191
192
 
@@ -203,7 +204,7 @@ if HAVE_RCOV
203
204
  t.libs << "test"
204
205
  t.rcov_opts = ['-xRakefile', '-xrakefile', '-xpublish.rf', '--text-report']
205
206
  t.test_files = FileList[
206
- 'test/test*.rb'
207
+ 'test/{functional,test}*.rb'
207
208
  ]
208
209
  t.verbose = true
209
210
  end
@@ -68,6 +68,7 @@ module Gem
68
68
  register_command :specification
69
69
  register_command :uninstall
70
70
  register_command :unpack
71
+ register_command :cleanup
71
72
  register_command :update
72
73
  end
73
74
 
@@ -17,6 +17,10 @@ module Gem
17
17
  add_option '-r', '--remove SOURCE_URI', 'Remove source' do |value, options|
18
18
  options[:remove] = value
19
19
  end
20
+
21
+ add_option '-c', '--clear-all', 'Remove all sources' do |value, options|
22
+ options[:clear_all] = value
23
+ end
20
24
  end
21
25
 
22
26
  def defaults_str
@@ -24,6 +28,13 @@ module Gem
24
28
  end
25
29
 
26
30
  def execute
31
+ options[:list] = ! (options[:add] || options[:remove] || options[:clear_all])
32
+
33
+ if options[:clear_all] then
34
+ remove_cache_file("user", Gem::SourceInfoCache.user_cache_file)
35
+ remove_cache_file("system", Gem::SourceInfoCache.system_cache_file)
36
+ end
37
+
27
38
  if options[:add] then
28
39
  source_uri = options[:add]
29
40
 
@@ -56,7 +67,7 @@ module Gem
56
67
  end
57
68
  end
58
69
 
59
- if options[:list] or not (options[:add] or options[:remove]) then
70
+ if options[:list] then
60
71
  say "*** CURRENT SOURCES ***"
61
72
  say
62
73
 
@@ -66,8 +77,18 @@ module Gem
66
77
  end
67
78
  end
68
79
 
69
- end
80
+ def remove_cache_file(desc, fn)
81
+ FileUtils.rm_rf fn rescue nil
82
+ if ! File.exist?(fn)
83
+ say "*** Removed #{desc} source cache ***"
84
+ elsif ! File.writable?(fn)
85
+ say "*** Unable to remove #{desc} source cache (write protected) ***"
86
+ else
87
+ say "*** Unable to remove #{desc} source cache ***"
88
+ end
89
+ end
90
+ private :remove_cache_file
70
91
 
71
-
72
- end
73
- end
92
+ end # class SourcesCommand
93
+ end # module Commands
94
+ end # module Gem
@@ -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.9.3'
5
+ RubyGemsVersion = '0.9.4'
6
6
  end
@@ -258,6 +258,10 @@ module Gem
258
258
  self
259
259
  end
260
260
 
261
+ def ==(other) # :nodoc:
262
+ self.class === other and @gems == other.gems
263
+ end
264
+
261
265
  protected
262
266
 
263
267
  attr_reader :gems
@@ -32,6 +32,8 @@ class Gem::SourceInfoCache
32
32
  include Gem::UserInteraction
33
33
 
34
34
  @cache = nil
35
+ @system_cache_file = nil
36
+ @user_cache_file = nil
35
37
 
36
38
  def self.cache
37
39
  return @cache if @cache
@@ -53,9 +55,6 @@ class Gem::SourceInfoCache
53
55
  @cache_data = nil
54
56
  @cache_file = nil
55
57
  @dirty = false
56
-
57
- @system_cache_file = nil
58
- @user_cache_file = nil
59
58
  end
60
59
 
61
60
  # The most recent cache data.
@@ -65,10 +64,22 @@ class Gem::SourceInfoCache
65
64
  cache_file # HACK writable check
66
65
  # Marshal loads 30-40% faster from a String, and 2MB on 20061116 is small
67
66
  begin
68
- data = File.open cache_file, 'rb' do |fp|
69
- fp.read
67
+ data = File.open cache_file, 'rb' do |fp| fp.read end
68
+ @cache_data = Marshal.load data
69
+ @cache_data.each do |url, sice|
70
+ next unless Hash === sice
71
+ @dirty = true
72
+ if sice.key? 'cache' and sice.key? 'size' and
73
+ Gem::SourceIndex === sice['cache'] and Numeric === sice['size'] then
74
+ new_sice = Gem::SourceInfoCacheEntry.new sice['cache'], sice['size']
75
+ @cache_data[url] = new_sice
76
+ else # irreperable, force refetch.
77
+ sice = Gem::SourceInfoCacheEntry.new Gem::SourceIndex.new, 0
78
+ sice.refresh url # HACK may be unnecessary, see ::cache and #refresh
79
+ @cache_data[url] = sice
80
+ end
70
81
  end
71
- @cache_data = Marshal.load data
82
+ @cache_data
72
83
  rescue
73
84
  {}
74
85
  end
@@ -110,18 +121,28 @@ class Gem::SourceInfoCache
110
121
  end.flatten
111
122
  end
112
123
 
124
+ # Mark the cache as updated (i.e. dirty).
125
+ def update
126
+ @dirty = true
127
+ end
128
+
113
129
  # The name of the system cache file.
114
130
  def system_cache_file
115
- @system_cache_file ||= File.join(Gem.dir, "source_cache")
131
+ self.class.system_cache_file
116
132
  end
117
133
 
118
- # Mark the cache as updated (i.e. dirty).
119
- def update
120
- @dirty = true
134
+ # The name of the system cache file. (class method)
135
+ def self.system_cache_file
136
+ @system_cache_file ||= File.join(Gem.dir, "source_cache")
121
137
  end
122
138
 
123
139
  # The name of the user cache file.
124
140
  def user_cache_file
141
+ self.class.user_cache_file
142
+ end
143
+
144
+ # The name of the user cache file. (class method)
145
+ def self.user_cache_file
125
146
  @user_cache_file ||=
126
147
  ENV['GEMCACHE'] || File.join(Gem.user_home, ".gem", "source_cache")
127
148
  end
@@ -27,5 +27,11 @@ class Gem::SourceInfoCacheEntry
27
27
  @size = remote_size
28
28
  end
29
29
 
30
+ def ==(other) # :nodoc:
31
+ self.class === other and
32
+ @size == other.size and
33
+ @source_index == other.source_index
34
+ end
35
+
30
36
  end
31
37
 
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{2007-05-23}
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{2007-05-23}
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{2007-05-23}
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{2007-05-23}
5
+ s.summary = %q{summary}
6
+ s.description = %q{desc}
7
+ s.files = ["lib/code.rb"]
8
+ end
@@ -76,6 +76,25 @@ class TestGemSourceInfoCache < RubyGemTestCase
76
76
  assert_equal true, @sic.dirty, 'still dirty'
77
77
  end
78
78
 
79
+ def test_cache_data_irreparable
80
+ @fetcher.data['http://gems.example.com/yaml'] = @source_index.to_yaml
81
+
82
+ data = { 'http://gems.example.com' => { 'totally' => 'borked' } }
83
+
84
+ [@sic.system_cache_file, @sic.user_cache_file].each do |fn|
85
+ FileUtils.mkdir_p File.dirname(fn)
86
+ open(fn, "wb") { |f| f.write Marshal.dump(data) }
87
+ end
88
+
89
+ @sic.instance_eval { @cache_data = nil }
90
+
91
+ fetched = use_ui MockGemUi.new do @sic.cache_data end
92
+
93
+ fetched_si = fetched['http://gems.example.com'].source_index
94
+
95
+ assert_equal @source_index.index_signature, fetched_si.index_signature
96
+ end
97
+
79
98
  def test_cache_data_none_readable
80
99
  FileUtils.chmod 0222, @sic.system_cache_file
81
100
  FileUtils.chmod 0222, @sic.user_cache_file
@@ -94,6 +113,27 @@ class TestGemSourceInfoCache < RubyGemTestCase
94
113
  assert_equal 'unable to locate a writable cache file', e.message
95
114
  end
96
115
 
116
+ def test_cache_data_repair
117
+ data = {
118
+ 'http://www.example.com' => {
119
+ 'cache' => Gem::SourceIndex.new,
120
+ 'size' => 0,
121
+ }
122
+ }
123
+ [@sic.system_cache_file, @sic.user_cache_file].each do |fn|
124
+ FileUtils.mkdir_p File.dirname(fn)
125
+ open(fn, "wb") { |f| f.write Marshal.dump(data) }
126
+ end
127
+
128
+ @sic.instance_eval { @cache_data = nil }
129
+
130
+ expected = {
131
+ 'http://www.example.com' =>
132
+ Gem::SourceInfoCacheEntry.new(Gem::SourceIndex.new, 0)
133
+ }
134
+ assert_equal expected, @sic.cache_data
135
+ end
136
+
97
137
  def test_cache_data_user_fallback
98
138
  FileUtils.chmod 0444, @sic.system_cache_file
99
139
  assert_equal [['key','usr']], @sic.cache_data.to_a.sort
metadata CHANGED
@@ -1,10 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.3
2
+ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: rubygems-update
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.9.3
7
- date: 2007-05-10 00:00:00 -04:00
6
+ version: 0.9.4
7
+ date: 2007-05-23 00:00:00 -04:00
8
8
  summary: RubyGems Update GEM
9
9
  require_paths:
10
10
  - lib
@@ -129,6 +129,7 @@ files:
129
129
  - lib/rubygems/digest/sha2.rb
130
130
  - pkgs/sources
131
131
  - pkgs/sources/lib
132
+ - pkgs/sources/sources-0.0.1.gem
132
133
  - pkgs/sources/sources.gemspec
133
134
  - pkgs/sources/lib/sources.rb
134
135
  - redist/session.gem
@@ -189,8 +190,13 @@ files:
189
190
  - test/testgem.rc
190
191
  - test/user_capture.rb
191
192
  - test/yaml_data.rb
193
+ - test/data/a-0.0.1.gem
194
+ - test/data/a-0.0.2.gem
195
+ - test/data/b-0.0.2.gem
192
196
  - test/data/broken-1.0.0.gem
193
197
  - test/data/broken_build
198
+ - test/data/c-1.2.gem
199
+ - test/data/gemhome
194
200
  - test/data/legacy
195
201
  - test/data/lib
196
202
  - test/data/one
@@ -200,10 +206,35 @@ files:
200
206
  - test/data/broken_build/ext
201
207
  - test/data/broken_build/ext/extconf.rb
202
208
  - test/data/broken_build/ext/foo.c
209
+ - test/data/gemhome/cache
210
+ - test/data/gemhome/doc
211
+ - test/data/gemhome/gems
212
+ - test/data/gemhome/specifications
213
+ - test/data/gemhome/cache/a-0.0.1.gem
214
+ - test/data/gemhome/cache/a-0.0.2.gem
215
+ - test/data/gemhome/cache/b-0.0.2.gem
216
+ - test/data/gemhome/cache/c-1.2.gem
217
+ - test/data/gemhome/gems/a-0.0.1
218
+ - test/data/gemhome/gems/a-0.0.2
219
+ - test/data/gemhome/gems/b-0.0.2
220
+ - test/data/gemhome/gems/c-1.2
221
+ - test/data/gemhome/gems/a-0.0.1/lib
222
+ - test/data/gemhome/gems/a-0.0.1/lib/code.rb
223
+ - test/data/gemhome/gems/a-0.0.2/lib
224
+ - test/data/gemhome/gems/a-0.0.2/lib/code.rb
225
+ - test/data/gemhome/gems/b-0.0.2/lib
226
+ - test/data/gemhome/gems/b-0.0.2/lib/code.rb
227
+ - test/data/gemhome/gems/c-1.2/lib
228
+ - test/data/gemhome/gems/c-1.2/lib/code.rb
229
+ - test/data/gemhome/specifications/a-0.0.1.gemspec
230
+ - test/data/gemhome/specifications/a-0.0.2.gemspec
231
+ - test/data/gemhome/specifications/b-0.0.2.gemspec
232
+ - test/data/gemhome/specifications/c-1.2.gemspec
203
233
  - test/data/legacy/keyedlist-0.4.0.ruby
204
234
  - test/data/legacy/keyedlist-0.4.0.yaml
205
235
  - test/data/lib/code.rb
206
236
  - test/data/one/lib
237
+ - test/data/one/one-0.0.1.gem
207
238
  - test/data/one/one.gemspec
208
239
  - test/data/one/one.yaml
209
240
  - test/data/one/README.one