[前][次][番号順一覧][スレッド一覧]

ruby-changes:2488

From: ko1@a...
Date: 20 Nov 2007 14:57:07 +0900
Subject: [ruby-changes:2488] drbrain - Ruby:r13979 (trunk): Update to RubyGems 0.9.5

drbrain	2007-11-20 14:56:43 +0900 (Tue, 20 Nov 2007)

  New Revision: 13979

  Modified files:
    trunk/ChangeLog
    trunk/lib/rubygems/dependency_installer.rb
    trunk/lib/rubygems/indexer/marshal_index_builder.rb
    trunk/lib/rubygems/indexer/master_index_builder.rb
    trunk/lib/rubygems/indexer/quick_index_builder.rb
    trunk/lib/rubygems/indexer.rb
    trunk/lib/rubygems/platform.rb
    trunk/lib/rubygems/rubygems_version.rb
    trunk/lib/rubygems/specification.rb
    trunk/lib/rubygems.rb
    trunk/test/rubygems/gemutilities.rb
    trunk/test/rubygems/test_gem.rb
    trunk/test/rubygems/test_gem_commands_environment_command.rb
    trunk/test/rubygems/test_gem_dependency_installer.rb
    trunk/test/rubygems/test_gem_ext_configure_builder.rb
    trunk/test/rubygems/test_gem_format.rb
    trunk/test/rubygems/test_gem_indexer.rb
    trunk/test/rubygems/test_gem_platform.rb
    trunk/test/rubygems/test_gem_specification.rb

  Log:
    Update to RubyGems 0.9.5

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/rubygems/indexer.rb?r1=13979&r2=13978
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/rubygems/test_gem_ext_configure_builder.rb?r1=13979&r2=13978
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/rubygems/test_gem_commands_environment_command.rb?r1=13979&r2=13978
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/rubygems/test_gem_indexer.rb?r1=13979&r2=13978
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/rubygems/test_gem.rb?r1=13979&r2=13978
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/rubygems/platform.rb?r1=13979&r2=13978
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=13979&r2=13978
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/rubygems.rb?r1=13979&r2=13978
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/rubygems/rubygems_version.rb?r1=13979&r2=13978
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/rubygems/indexer/master_index_builder.rb?r1=13979&r2=13978
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/rubygems/indexer/marshal_index_builder.rb?r1=13979&r2=13978
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/rubygems/test_gem_platform.rb?r1=13979&r2=13978
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/rubygems/test_gem_format.rb?r1=13979&r2=13978
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/rubygems/specification.rb?r1=13979&r2=13978
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/rubygems/indexer/quick_index_builder.rb?r1=13979&r2=13978
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/rubygems/dependency_installer.rb?r1=13979&r2=13978
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/rubygems/test_gem_specification.rb?r1=13979&r2=13978
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/rubygems/gemutilities.rb?r1=13979&r2=13978
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/rubygems/test_gem_dependency_installer.rb?r1=13979&r2=13978

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 13978)
+++ ChangeLog	(revision 13979)
@@ -1,3 +1,7 @@
+Tue Nov 20 14:55:37 2007  Eric Hodel  <drbrain@s...>
+
+	* lib/rubygems*: Update to RubyGems 0.9.5.
+
 Tue Nov 20 13:00:44 2007  NAKAMURA Usaku  <usa@r...>
 
 	* include/ruby/win32.h win32/win32.c (rb_w32_pipe_exec): use dual fd
Index: lib/rubygems/dependency_installer.rb
===================================================================
--- lib/rubygems/dependency_installer.rb	(revision 13978)
+++ lib/rubygems/dependency_installer.rb	(revision 13979)
@@ -124,13 +124,26 @@
     case scheme
     when 'http' then
       unless File.exist? local_gem_path then
-        say "Downloading gem #{gem_file_name}" if
-          Gem.configuration.really_verbose
+        begin
+          say "Downloading gem #{gem_file_name}" if
+            Gem.configuration.really_verbose
 
-        remote_gem_path = source_uri + "gems/#{gem_file_name}"
+          remote_gem_path = source_uri + "gems/#{gem_file_name}"
 
-        gem = Gem::RemoteFetcher.fetcher.fetch_path remote_gem_path
+          gem = Gem::RemoteFetcher.fetcher.fetch_path remote_gem_path
+        rescue Gem::RemoteFetcher::FetchError
+          raise if spec.original_platform == spec.platform
 
+          alternate_name = "#{spec.name}-#{spec.version}-#{spec.original_platform}.gem"
+
+          say "Failed, downloading gem #{alternate_name}" if
+            Gem.configuration.really_verbose
+
+          remote_gem_path = source_uri + "gems/#{alternate_name}"
+
+          gem = Gem::RemoteFetcher.fetcher.fetch_path remote_gem_path
+        end
+
         File.open local_gem_path, 'wb' do |fp|
           fp.write gem
         end
Index: lib/rubygems/indexer.rb
===================================================================
--- lib/rubygems/indexer.rb	(revision 13978)
+++ lib/rubygems/indexer.rb	(revision 13979)
@@ -60,16 +60,8 @@
             begin
               spec = Gem::Format.from_file_by_path(gemfile).spec
 
-              original_name = if spec.platform == Gem::Platform::RUBY or
-                                 spec.platform.nil? then
-                                spec.full_name
-                              else
-                                "#{spec.name}-#{spec.version}-#{spec.original_platform}"
-                              end
-
-              unless gemfile =~ /\/#{Regexp.escape spec.full_name}.*\.gem\z/i or
-                     gemfile =~ /\/#{Regexp.escape original_name}.*\.gem\z/i then
-                alert_warning "Skipping misnamed gem: #{gemfile} => #{spec.full_name} (#{original_name})"
+              unless gemfile =~ /\/#{Regexp.escape spec.original_name}.*\.gem\z/i then
+                alert_warning "Skipping misnamed gem: #{gemfile} => #{spec.full_name} (#{spec.original_name})"
                 next
               end
 
@@ -80,7 +72,7 @@
               @quick_index.add spec
               @marshal_index.add spec
 
-              progress.updated spec.full_name
+              progress.updated spec.original_name
 
             rescue SignalException => e
               alert_error "Recieved signal, exiting"
Index: lib/rubygems/specification.rb
===================================================================
--- lib/rubygems/specification.rb	(revision 13978)
+++ lib/rubygems/specification.rb	(revision 13979)
@@ -243,14 +243,15 @@
         @summary,
         @required_ruby_version,
         @required_rubygems_version,
-        @new_platform,
+        @original_platform,
         @dependencies,
         @rubyforge_project,
         @email,
         @authors,
         @description,
         @homepage,
-        @has_rdoc
+        @has_rdoc,
+        @new_platform,
       ]
     end
 
@@ -277,9 +278,7 @@
       spec.instance_variable_set :@summary,                   array[5]
       spec.instance_variable_set :@required_ruby_version,     array[6]
       spec.instance_variable_set :@required_rubygems_version, array[7]
-      spec.instance_variable_set :@new_platform,              array[8]
       spec.instance_variable_set :@original_platform,         array[8]
-      spec.instance_variable_set :@platform,                  array[8].to_s
       spec.instance_variable_set :@dependencies,              array[9]
       spec.instance_variable_set :@rubyforge_project,         array[10]
       spec.instance_variable_set :@email,                     array[11]
@@ -287,6 +286,8 @@
       spec.instance_variable_set :@description,               array[13]
       spec.instance_variable_set :@homepage,                  array[14]
       spec.instance_variable_set :@has_rdoc,                  array[15]
+      spec.instance_variable_set :@new_platform,              array[16]
+      spec.instance_variable_set :@platform,                  array[16].to_s
       spec.instance_variable_set :@loaded,                    false
 
       spec
@@ -377,7 +378,10 @@
     end
 
     overwrite_accessor :platform= do |platform|
-      @original_platform = platform if @original_platform.nil?
+      if @original_platform.nil? or
+         @original_platform == Gem::Platform::RUBY then
+        @original_platform = platform
+      end
 
       case platform
       when Gem::Platform::CURRENT then
@@ -657,6 +661,17 @@
       end
     end
 
+    # Returns the full name (name-version) of this gemspec using the original
+    # platform.
+    #
+    def original_name # :nodoc:
+      if platform == Gem::Platform::RUBY or platform.nil? then
+        "#{@name}-#{@version}"
+      else
+        "#{@name}-#{@version}-#{@original_platform}"
+      end
+    end
+
     # The full path to the gem (install path + full name).
     #
     # return:: [String] the full gem path
@@ -664,8 +679,7 @@
     def full_gem_path
       path = File.join installation_path, 'gems', full_name
       return path if File.directory? path
-      File.join installation_path, 'gems',
-                "#{name}-#{version}-#{@original_platform}"
+      File.join installation_path, 'gems', original_name
     end
     
     # The default (generated) file name of the gem.
@@ -724,18 +738,34 @@
         hash_code + n
       }
     end
-    
+
     # Export methods (YAML and Ruby code) ----------------------------
-    
-    # Returns an array of attribute names to be used when generating a
-    # YAML representation of this object.  If an attribute still has
-    # its default value, it is omitted.
-    def to_yaml_properties
+
+    def to_yaml(opts = {}) # :nodoc:
       mark_version
-      @@attributes.map { |name, default| "@#{name}" }
+
+      attributes = @@attributes.map { |name,| name.to_s }.sort
+      attributes = attributes - %w[name version platform]
+
+      yaml = YAML.quick_emit object_id, opts do |out|
+        out.map taguri, to_yaml_style do |map|
+          map.add 'name', @name
+          map.add 'version', @version
+          platform = if String === @original_platform then
+                       @original_platform
+                     else
+                       @original_platform.to_s
+                     end
+          map.add 'platform', platform
+
+          attributes.each do |name|
+            map.add name, instance_variable_get("@#{name}")
+          end
+        end
+      end
     end
 
-    def yaml_initialize(tag, vals)
+    def yaml_initialize(tag, vals) # :nodoc:
       vals.each do |ivar, val|
         instance_variable_set "@#{ivar}", val
       end
@@ -754,6 +784,9 @@
 
       result << "  s.name = #{ruby_code name}"
       result << "  s.version = #{ruby_code version}"
+      unless platform.nil? or platform == Gem::Platform::RUBY then
+        result << "  s.platform = #{ruby_code original_platform}"
+      end
       result << ""
       result << "  s.specification_version = #{specification_version} if s.respond_to? :specification_version="
       result << ""
@@ -762,6 +795,7 @@
       handled = [
         :dependencies,
         :name,
+        :platform,
         :required_rubygems_version,
         :specification_version,
         :version,
Index: lib/rubygems/platform.rb
===================================================================
--- lib/rubygems/platform.rb	(revision 13978)
+++ lib/rubygems/platform.rb	(revision 13979)
@@ -27,7 +27,7 @@
 
   def self.new(arch) # :nodoc:
     case arch
-    when Gem::Platform::RUBY, nil then
+    when Gem::Platform::RUBY, nil, '' then
       Gem::Platform::RUBY
     else
       super
Index: lib/rubygems/indexer/marshal_index_builder.rb
===================================================================
--- lib/rubygems/indexer/marshal_index_builder.rb	(revision 13978)
+++ lib/rubygems/indexer/marshal_index_builder.rb	(revision 13979)
@@ -3,6 +3,15 @@
 # Construct the master Gem index file.
 class Gem::Indexer::MarshalIndexBuilder < Gem::Indexer::MasterIndexBuilder
   def end_index
-    @file.write @index.dump
+    gems = {}
+    index = Gem::SourceIndex.new
+
+    @index.each do |name, gemspec|
+      gems[gemspec.original_name] = gemspec
+    end
+
+    index.instance_variable_get(:@gems).replace gems
+
+    @file.write index.dump
   end
 end
Index: lib/rubygems/indexer/master_index_builder.rb
===================================================================
--- lib/rubygems/indexer/master_index_builder.rb	(revision 13978)
+++ lib/rubygems/indexer/master_index_builder.rb	(revision 13979)
@@ -10,7 +10,16 @@
 
   def end_index
     super
-    @file.puts @index.to_yaml
+    @file.puts "--- !ruby/object:#{@index.class}"
+    @file.puts "gems:"
+
+    gems = @index.sort_by { |name, gemspec| gemspec.sort_obj }
+    gems.each do |name, gemspec|
+      yaml = gemspec.to_yaml.gsub(/^/, '    ')
+      yaml = yaml.sub(/\A    ---/, '') # there's a needed extra ' ' here
+      @file.print "  #{gemspec.original_name}:"
+      @file.puts yaml
+    end
   end
 
   def cleanup
Index: lib/rubygems/indexer/quick_index_builder.rb
===================================================================
--- lib/rubygems/indexer/quick_index_builder.rb	(revision 13978)
+++ lib/rubygems/indexer/quick_index_builder.rb	(revision 13979)
@@ -22,13 +22,13 @@
   end
 
   def add(spec)
-    @file.puts spec.full_name
+    @file.puts spec.original_name
     add_yaml(spec)
     add_marshal(spec)
   end
 
   def add_yaml(spec)
-    fn = File.join @directory, "#{spec.full_name}.gemspec.rz"
+    fn = File.join @directory, "#{spec.original_name}.gemspec.rz"
     zipped = zip spec.to_yaml
     File.open fn, "wb" do |gsfile| gsfile.write zipped end
   end
@@ -38,7 +38,7 @@
     FileUtils.mkdir_p File.join(@directory, "Marshal.#{Gem.marshal_version}")
 
     fn = File.join @directory, "Marshal.#{Gem.marshal_version}",
-                   "#{spec.full_name}.gemspec.rz"
+                   "#{spec.original_name}.gemspec.rz"
 
     zipped = zip Marshal.dump(spec)
     File.open fn, "wb" do |gsfile| gsfile.write zipped end
Index: lib/rubygems/rubygems_version.rb
===================================================================
--- lib/rubygems/rubygems_version.rb	(revision 13978)
+++ lib/rubygems/rubygems_version.rb	(revision 13979)
@@ -2,5 +2,5 @@
 # This file is auto-generated by build scripts.
 # See:  rake update_version
 module Gem
-  RubyGemsVersion = '0.9.4.6'
+  RubyGemsVersion = '0.9.5'
 end
Index: lib/rubygems.rb
===================================================================
--- lib/rubygems.rb	(revision 13978)
+++ lib/rubygems.rb	(revision 13979)
@@ -138,7 +138,14 @@
   ##
   # An Array of Regexps that match windows ruby platforms.
 
-  WIN_PATTERNS = [/mswin/i, /mingw/i, /bccwin/i, /wince/i]
+  WIN_PATTERNS = [
+    /bccwin/i,
+    /cygwin/i,
+    /djgpp/i,
+    /mingw/i,
+    /mswin/i,
+    /wince/i,
+  ]
 
   ##
   # Is this a windows platform?
@@ -212,8 +219,7 @@
         install_dir.to_s == Gem.default_dir
 
       if defined? RUBY_FRAMEWORK_VERSION then # mac framework support
-        File.join(File.dirname(Config::CONFIG["sitedir"]),
-                  File.basename(Config::CONFIG["bindir"]))
+        '/usr/bin'
       else # generic install
         Config::CONFIG['bindir']
       end
@@ -225,7 +231,11 @@
     #
     def path
       @gem_path ||= nil
-      set_paths(ENV['GEM_PATH']) unless @gem_path
+      unless @gem_path
+        paths = [ENV['GEM_PATH']]
+        paths << APPLE_GEM_HOME if defined? APPLE_GEM_HOME
+        set_paths(paths.compact.join(File::PATH_SEPARATOR))
+      end
       @gem_path
     end
 
@@ -519,7 +529,7 @@
     # not specified in the environment.
     def default_dir
       if defined? RUBY_FRAMEWORK_VERSION
-        return File.join(File.dirname(Config::CONFIG["sitedir"]), "Gems")
+        return File.join(File.dirname(Config::CONFIG["sitedir"]), "Gems", Config::CONFIG['ruby_version'])
       else
         File.join(Config::CONFIG['libdir'], 'ruby', 'gems', Config::CONFIG['ruby_version'])
       end
Index: test/rubygems/test_gem_format.rb
===================================================================
--- test/rubygems/test_gem_format.rb	(revision 13978)
+++ test/rubygems/test_gem_format.rb	(revision 13979)
@@ -17,6 +17,24 @@
     @simple_gem = SIMPLE_GEM
   end
 
+  def test_from_file_by_path
+    util_make_gems
+
+    gems = Dir[File.join(@gemhome, 'cache', '*.gem')]
+
+    names = [@a0_0_1, @a0_0_2, @b0_0_2, @c1_2, @pl1].map do |spec|
+      spec.original_name
+    end
+
+    gems_n_names = gems.sort.zip names
+
+    gems_n_names.each do |gemfile, name|
+      spec = Gem::Format.from_file_by_path(gemfile).spec
+
+      assert_equal name, spec.original_name
+    end
+  end
+
   def test_from_file_by_path_nonexistent
     assert_raise Gem::Exception do
       Gem::Format.from_file_by_path '/nonexistent'
Index: test/rubygems/test_gem_dependency_installer.rb
===================================================================
--- test/rubygems/test_gem_dependency_installer.rb	(revision 13978)
+++ test/rubygems/test_gem_dependency_installer.rb	(revision 13979)
@@ -92,13 +92,13 @@
   end
 
   def test_install_dependency_old
-    @e1, @e1_gem = util_gem 'e', '1'
-    @f1, @f1_gem = util_gem 'f', '1' do |s| s.add_dependency 'e' end
-    @f2, @f2_gem = util_gem 'f', '2'
+    e1, e1_gem = util_gem 'e', '1'
+    f1, f1_gem = util_gem 'f', '1' do |s| s.add_dependency 'e' end
+    f2, f2_gem = util_gem 'f', '2'
 
-    FileUtils.mv @e1_gem, @tempdir
-    FileUtils.mv @f1_gem, @tempdir
-    FileUtils.mv @f2_gem, @tempdir
+    FileUtils.mv e1_gem, @tempdir
+    FileUtils.mv f1_gem, @tempdir
+    FileUtils.mv f2_gem, @tempdir
     inst = nil
 
     Dir.chdir @tempdir do
@@ -333,7 +333,7 @@
     assert_equal %w[d-2], inst.installed_gems.map { |s| s.full_name }
   end
 
-  def test_download_gem
+  def test_download
     a1_data = nil
     File.open @a1_gem, 'rb' do |fp|
       a1_data = fp.read
@@ -349,7 +349,7 @@
     assert File.exist?(a1_cache_gem)
   end
 
-  def test_download_gem_cached
+  def test_download_cached
     FileUtils.mv @a1_gem, @cache_dir
 
     inst = Gem::DependencyInstaller.new 'a'
@@ -358,7 +358,7 @@
                  inst.download(@a1, 'http://gems.example.com')
   end
 
-  def test_download_gem_local
+  def test_download_local
     FileUtils.mv @a1_gem, @tempdir
     local_path = File.join @tempdir, "#{@a1.full_name}.gem"
     inst = nil
@@ -371,7 +371,7 @@
                  inst.download(@a1, local_path)
   end
 
-  def test_download_gem_install_dir
+  def test_download_install_dir
     a1_data = nil
     File.open @a1_gem, 'rb' do |fp|
       a1_data = fp.read
@@ -390,7 +390,7 @@
   end
 
   unless win_platform? then # File.chmod doesn't work
-    def test_download_gem_local_read_only
+    def test_download_local_read_only
       FileUtils.mv @a1_gem, @tempdir
       local_path = File.join @tempdir, "#{@a1.full_name}.gem"
       inst = nil
@@ -407,9 +407,32 @@
     end
   end
 
-  def test_download_gem_unsupported
+  def test_download_platform_legacy
+    original_platform = 'old-platform'
+
+    e1, e1_gem = util_gem 'e', '1' do |s|
+      s.platform = Gem::Platform::CURRENT
+      s.instance_variable_set :@original_platform, original_platform
+    end
+
+    e1_data = nil
+    File.open e1_gem, 'rb' do |fp|
+      e1_data = fp.read
+    end
+
+    @fetcher.data["http://gems.example.com/gems/e-1-#{original_platform}.gem"] = e1_data
+
     inst = Gem::DependencyInstaller.new 'a'
 
+    e1_cache_gem = File.join(@gemhome, 'cache', "#{e1.full_name}.gem")
+    assert_equal e1_cache_gem, inst.download(e1, 'http://gems.example.com')
+
+    assert File.exist?(e1_cache_gem)
+  end
+
+  def test_download_unsupported
+    inst = Gem::DependencyInstaller.new 'a'
+
     e = assert_raise Gem::InstallError do
       inst.download @a1, 'ftp://gems.rubyforge.org'
     end
@@ -503,8 +526,8 @@
 
     util_build_gem spec
 
-    cache_file = File.join @tempdir, 'gems', "#{spec.full_name}.gem"
-    FileUtils.mv File.join(@gemhome, 'cache', "#{spec.full_name}.gem"),
+    cache_file = File.join @tempdir, 'gems', "#{spec.original_name}.gem"
+    FileUtils.mv File.join(@gemhome, 'cache', "#{spec.original_name}.gem"),
                  cache_file
     FileUtils.rm File.join(@gemhome, 'specifications',
                            "#{spec.full_name}.gemspec")
Index: test/rubygems/test_gem_ext_configure_builder.rb
===================================================================
--- test/rubygems/test_gem_ext_configure_builder.rb	(revision 13978)
+++ test/rubygems/test_gem_ext_configure_builder.rb	(revision 13979)
@@ -49,7 +49,7 @@
 
     expected = %r|configure failed:
 
-sh \./configure --prefix=#{@dest_path}
+sh \./configure --prefix=#{Regexp.escape @dest_path}
 .*?: \./configure: No such file or directory
 |
 
Index: test/rubygems/gemutilities.rb
===================================================================
--- test/rubygems/gemutilities.rb	(revision 13978)
+++ test/rubygems/gemutilities.rb	(revision 13979)
@@ -39,7 +39,7 @@
     @paths << path
     raise ArgumentError, 'need full URI' unless path =~ %r'^http://'
     data = @data[path]
-    raise OpenURI::HTTPError.new("no data for #{path}", nil) if data.nil?
+    raise Gem::RemoteFetcher::FetchError, "no data for #{path}" if data.nil?
     data.respond_to?(:call) ? data.call : data
   end
 
@@ -48,7 +48,7 @@
     @paths << path
     raise ArgumentError, 'need full URI' unless path =~ %r'^http://'
     data = @data[path]
-    raise OpenURI::HTTPError.new("no data for #{path}", nil) if data.nil?
+    raise Gem::RemoteFetcher::FetchError, "no data for #{path}" if data.nil?
     data.respond_to?(:call) ? data.call : data.length
   end
 
@@ -189,7 +189,8 @@
         Gem::Builder.new(spec).build
       end
 
-      FileUtils.mv "#{spec.full_name}.gem", File.join(@gemhome, 'cache')
+      FileUtils.mv "#{spec.full_name}.gem",
+                   File.join(@gemhome, 'cache', "#{spec.original_name}.gem")
     end
   end
 
@@ -203,14 +204,23 @@
     @a0_0_2 = quick_gem('a', '0.0.2', &spec)
     @b0_0_2 = quick_gem('b', '0.0.2', &spec)
     @c1_2   = quick_gem('c', '1.2',   &spec)
+    @pl1     = quick_gem 'pl', '1' do |s| # l for legacy
+      s.files = %w[lib/code.rb]
+      s.require_paths = %w[lib]
+      s.platform = Gem::Platform.new 'i386-linux'
+      s.instance_variable_set :@original_platform, 'i386-linux'
+    end
 
-    write_file File.join(*%w[gems a-0.0.1 lib code.rb]) do end
-    write_file File.join(*%w[gems a-0.0.2 lib code.rb]) do end
-    write_file File.join(*%w[gems b-0.0.2 lib code.rb]) do end
-    write_file File.join(*%w[gems c-1.2 lib code.rb]) do end
+    write_file File.join(*%W[gems #{@a0_0_1.original_name} lib code.rb]) do end
+    write_file File.join(*%W[gems #{@a0_0_2.original_name} lib code.rb]) do end
+    write_file File.join(*%W[gems #{@b0_0_2.original_name} lib code.rb]) do end
+    write_file File.join(*%W[gems #{@c1_2.original_name} lib code.rb]) do end
+    write_file File.join(*%W[gems #{@pl1.original_name} lib code.rb]) do end
 
-    [@a0_0_1, @a0_0_2, @b0_0_2, @c1_2].each { |spec| util_build_gem spec }
+    [@a0_0_1, @a0_0_2, @b0_0_2, @c1_2, @pl1].each { |spec| util_build_gem spec }
 
+    FileUtils.rm_r File.join(@gemhome, 'gems', @pl1.original_name)
+
     Gem.source_index = nil
   end
 
Index: test/rubygems/test_gem_commands_environment_command.rb
===================================================================
--- test/rubygems/test_gem_commands_environment_command.rb	(revision 13978)
+++ test/rubygems/test_gem_commands_environment_command.rb	(revision 13979)
@@ -22,13 +22,14 @@
 
     assert_match %r|RUBYGEMS VERSION: (\d\.)+\d \((\d\.)+\d\)|, @ui.output
     assert_match %r|RUBY VERSION: \d\.\d\.\d \(.*\) \[.*\]|, @ui.output
-    assert_match %r|INSTALLATION DIRECTORY: #{@gemhome}|, @ui.output
+    assert_match %r|INSTALLATION DIRECTORY: #{Regexp.escape @gemhome}|,
+                 @ui.output
     assert_match %r|RUBYGEMS PREFIX: |, @ui.output
     assert_match %r|RUBY EXECUTABLE:.*ruby|, @ui.output
     assert_match %r|RUBYGEMS PLATFORMS:|, @ui.output
     assert_match %r|- #{Gem::Platform.local}|, @ui.output
     assert_match %r|GEM PATHS:|, @ui.output
-    assert_match %r|- #{@gemhome}|, @ui.output
+    assert_match %r|- #{Regexp.escape @gemhome}|, @ui.output
     assert_match %r|GEM CONFIGURATION:|, @ui.output
     assert_match %r|:verbose => |, @ui.output
     assert_match %r|REMOTE SOURCES:|, @ui.output
Index: test/rubygems/test_gem_platform.rb
===================================================================
--- test/rubygems/test_gem_platform.rb	(revision 13978)
+++ test/rubygems/test_gem_platform.rb	(revision 13979)
@@ -21,6 +21,7 @@
   def test_self_new
     assert_equal Gem::Platform::RUBY, Gem::Platform.new(Gem::Platform::RUBY)
     assert_equal Gem::Platform::RUBY, Gem::Platform.new(nil)
+    assert_equal Gem::Platform::RUBY, Gem::Platform.new('')
   end
 
   def test_initialize
Index: test/rubygems/test_gem_indexer.rb
===================================================================
--- test/rubygems/test_gem_indexer.rb	(revision 13978)
+++ test/rubygems/test_gem_indexer.rb	(revision 13979)
@@ -49,16 +49,23 @@
 
     assert File.directory?(quickdir)
     assert File.directory?(marshal_quickdir)
-    assert File.exist?(File.join(quickdir, "index"))
-    assert File.exist?(File.join(quickdir, "index.rz"))
-    assert File.exist?(File.join(quickdir, "#{@a0_0_1.full_name}.gemspec.rz"))
-    assert File.exist?(File.join(marshal_quickdir, "#{@a0_0_1.full_name}.gemspec.rz"))
-    assert File.exist?(File.join(quickdir, "#{@a0_0_2.full_name}.gemspec.rz"))
-    assert File.exist?(File.join(marshal_quickdir, "#{@a0_0_2.full_name}.gemspec.rz"))
-    assert File.exist?(File.join(quickdir, "#{@b0_0_2.full_name}.gemspec.rz"))
-    assert File.exist?(File.join(quickdir, "#{@c1_2.full_name}.gemspec.rz"))
-    assert !File.exist?(File.join(quickdir, "#{@c1_2.full_name}.gemspec"))
-    assert !File.exist?(File.join(marshal_quickdir, "#{@c1_2.full_name}.gemspec"))
+
+    assert_indexed quickdir, "index"
+    assert_indexed quickdir, "index.rz"
+
+    assert_indexed quickdir, "#{@a0_0_1.full_name}.gemspec.rz"
+    assert_indexed quickdir, "#{@a0_0_2.full_name}.gemspec.rz"
+    assert_indexed quickdir, "#{@b0_0_2.full_name}.gemspec.rz"
+    assert_indexed quickdir, "#{@c1_2.full_name}.gemspec.rz"
+
+    assert_indexed quickdir, "#{@pl1.original_name}.gemspec.rz"
+    deny_indexed quickdir, "#{@pl1.full_name}.gemspec.rz"
+
+    assert_indexed marshal_quickdir, "#{@a0_0_1.full_name}.gemspec.rz"
+    assert_indexed marshal_quickdir, "#{@a0_0_2.full_name}.gemspec.rz"
+
+    deny_indexed quickdir, "#{@c1_2.full_name}.gemspec"
+    deny_indexed marshal_quickdir, "#{@c1_2.full_name}.gemspec"
   end
 
   def test_generate_index_ui
@@ -67,8 +74,8 @@
     end
 
     expected = <<-EOF
-Generating index for 4 gems in #{@tempdir}
-....
+Generating index for 5 gems in #{@tempdir}
+.....
 Loaded all gems
 Generating master indexes (this may take a while)
     EOF
@@ -92,12 +99,21 @@
 
     dump_index.each do |_,gem|
       gem.send :remove_instance_variable, :@loaded
-      gem.send :remove_instance_variable, :@original_platform
     end
 
     assert_equal yaml_index, dump_index,
                  "expected YAML and Marshal to produce identical results"
   end
 
+  def assert_indexed(dir, name)
+    file = File.join dir, name
+    assert File.exist?(file), "#{file} does not exist"
+  end
+
+  def deny_indexed(dir, name)
+    file = File.join dir, name
+    assert !File.exist?(file), "#{file} exists"
+  end
+
 end if ''.respond_to? :to_xs
 
Index: test/rubygems/test_gem.rb
===================================================================
--- test/rubygems/test_gem.rb	(revision 13978)
+++ test/rubygems/test_gem.rb	(revision 13979)
@@ -10,17 +10,18 @@
     super
 
     @additional = %w[a b].map { |d| File.join @tempdir, d }
-    @default_dir_re = %r|/ruby/gems/[0-9.]+|
+    @default_dir_re = %r|/[Rr]uby/[Gg]ems/[0-9.]+|
   end
 
   def test_self_all_load_paths
     util_make_gems
 
     expected = [
-      File.join(@tempdir, *%w[gemhome gems a-0.0.1 lib]),
-      File.join(@tempdir, *%w[gemhome gems a-0.0.2 lib]),
-      File.join(@tempdir, *%w[gemhome gems b-0.0.2 lib]),
-      File.join(@tempdir, *%w[gemhome gems c-1.2 lib]),
+      File.join(@gemhome, *%W[gems #{@a0_0_1.full_name} lib]),
+      File.join(@gemhome, *%W[gems #{@a0_0_2.full_name} lib]),
+      File.join(@gemhome, *%W[gems #{@b0_0_2.full_name} lib]),
+      File.join(@gemhome, *%W[gems #{@c1_2.full_name} lib]),
+      File.join(@gemhome, *%W[gems #{@pl1.full_name} lib]),
     ]
 
     assert_equal expected, Gem.all_load_paths.sort
@@ -34,8 +35,9 @@
 
   def test_self_bindir_default_dir
     default = Gem.default_dir
-    assert_equal Config::CONFIG['bindir'], Gem.bindir(default)
-    assert_equal Config::CONFIG['bindir'], Gem.bindir(Pathname.new(default))
+    bindir = (defined? RUBY_FRAMEWORK_VERSION) ? '/usr/bin' : Config::CONFIG['bindir']    
+    assert_equal bindir, Gem.bindir(default)
+    assert_equal bindir, Gem.bindir(Pathname.new(default))
   end
 
   def test_self_clear_paths
@@ -172,9 +174,10 @@
     util_make_gems
 
     expected = [
-      File.join(@tempdir, *%w[gemhome gems a-0.0.2 lib]),
-      File.join(@tempdir, *%w[gemhome gems b-0.0.2 lib]),
-      File.join(@tempdir, *%w[gemhome gems c-1.2 lib]),
+      File.join(@gemhome, *%W[gems #{@a0_0_2.full_name} lib]),
+      File.join(@gemhome, *%W[gems #{@b0_0_2.full_name} lib]),
+      File.join(@gemhome, *%W[gems #{@c1_2.full_name} lib]),
+      File.join(@gemhome, *%W[gems #{@pl1.full_name} lib]),
     ]
 
     assert_equal expected, Gem.latest_load_paths.sort
@@ -196,12 +199,14 @@
 
   def test_self_path_ENV_PATH
     Gem.clear_paths
+    path_count = Gem.path.size
+    Gem.clear_paths
     util_ensure_gem_dirs
 
     ENV['GEM_PATH'] = @additional.join(File::PATH_SEPARATOR)
 
     assert_equal @additional, Gem.path[0,2]
-    assert_equal 3, Gem.path.size
+    assert_equal path_count + @additional.size, Gem.path.size
     assert_match Gem.dir, Gem.path.last
   end
 
@@ -214,7 +219,9 @@
     ENV['GEM_PATH'] = dirs.join File::PATH_SEPARATOR
 
     assert_equal @gemhome, Gem.dir
-    assert_equal @additional + [Gem.dir], Gem.path
+    paths = [Gem.dir]
+    paths << APPLE_GEM_HOME if defined? APPLE_GEM_HOME
+    assert_equal @additional + paths, Gem.path
   end
 
   def test_self_path_overlap
@@ -225,7 +232,9 @@
     ENV['GEM_PATH'] = @additional.join(File::PATH_SEPARATOR)
 
     assert_equal @gemhome, Gem.dir
-    assert_equal @additional + [Gem.dir], Gem.path
+    paths = [Gem.dir]
+    paths.insert(0, APPLE_GEM_HOME) if defined? APPLE_GEM_HOME
+    assert_equal @additional + paths, Gem.path
   end
 
   def test_self_platforms
Index: test/rubygems/test_gem_specification.rb
===================================================================
--- test/rubygems/test_gem_specification.rb	(revision 13978)
+++ test/rubygems/test_gem_specification.rb	(revision 13979)
@@ -196,6 +196,17 @@
     assert_equal "1.3.5", spec.version.to_s
   end
 
+  def test__dump
+    @a0_0_2.platform = Gem::Platform.local
+    @a0_0_2.instance_variable_set :@original_platform, 'old_platform'
+
+    data = Marshal.dump @a0_0_2
+
+    same_spec = Marshal.load data
+
+    assert_equal 'old_platform', same_spec.original_platform
+  end
+
   def test_author
     assert_equal 'A User', @a0_0_1.author
   end
@@ -445,6 +456,14 @@
     assert_equal 'a', @a0_0_1.name
   end
 
+  def test_original_name
+    assert_equal 'a-0.0.1', @a0_0_1.full_name
+
+    @a0_0_1.platform = 'i386-linux'
+    @a0_0_1.instance_variable_set :@original_platform, 'i386-linux'
+    assert_equal 'a-0.0.1-i386-linux', @a0_0_1.original_name
+  end
+
   def test_platform
     assert_equal Gem::Platform::RUBY, @a0_0_1.platform
   end
@@ -573,6 +592,7 @@
     expected = "Gem::Specification.new do |s|
   s.name = %q{a}
   s.version = \"0.0.1\"
+  s.platform = Gem::Platform.new([\"ppc\", \"darwin\", nil])
 
   s.specification_version = 2 if s.respond_to? :specification_version=
 
@@ -587,10 +607,9 @@
   s.files = [\"lib/code.rb\", \"test/suite.rb\", \"bin/exec\", \"ext/a/extconf.rb\"]
   s.has_rdoc = %q{true}
   s.homepage = %q{http://example.com}
-  s.platform = Gem::Platform.new([\"ppc\", \"darwin\", nil])
   s.require_paths = [\"lib\"]
   s.requirements = [\"A working computer\"]
-  s.rubygems_version = %q{0.9.4.6}
+  s.rubygems_version = %q{#{Gem::RubyGemsVersion}}
   s.summary = %q{this is a summary}
   s.test_files = [\"test/suite.rb\"]
 
@@ -615,6 +634,17 @@
     assert_equal gemspec1, gemspec2
   end
 
+  def test_to_ruby_platform
+    @a0_0_2.platform = Gem::Platform.local
+    @a0_0_2.instance_variable_set :@original_platform, 'old_platform'
+
+    ruby_code = @a0_0_2.to_ruby
+
+    same_spec = eval ruby_code
+
+    assert_equal 'old_platform', same_spec.original_platform
+  end
+
   def test_to_yaml
     yaml_str = @a0_0_1.to_yaml
     same_spec = YAML.load(yaml_str)
@@ -635,6 +665,7 @@
 
   def test_to_yaml_legacy_platform
     @a0_0_1.platform = 'powerpc-darwin7.9.0'
+    @a0_0_1.instance_variable_set :@original_platform, 'powerpc-darwin7.9.0'
 
     yaml_str = @a0_0_1.to_yaml
 

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧]