rubygems-update 1.8.19 → 1.8.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of rubygems-update might be problematic. Click here for more details.
- data/History.txt +9 -0
- data/Manifest.txt +2 -0
- data/lib/rubygems.rb +2 -1
- data/lib/rubygems/builder.rb +2 -2
- data/lib/rubygems/commands/build_command.rb +6 -2
- data/lib/rubygems/commands/fetch_command.rb +2 -2
- data/lib/rubygems/psych_additions.rb +9 -0
- data/lib/rubygems/spec_fetcher.rb +6 -2
- data/lib/rubygems/specification.rb +5 -0
- data/test/rubygems/data/null-type.gemspec.rz +0 -0
- data/test/rubygems/test_gem_commands_build_command.rb +16 -0
- data/test/rubygems/test_gem_commands_fetch_command.rb +25 -0
- data/test/rubygems/test_gem_commands_install_command.rb +32 -0
- data/test/rubygems/test_gem_specification.rb +10 -0
- metadata +7 -5
    
        data/History.txt
    CHANGED
    
    | @@ -1,5 +1,14 @@ | |
| 1 1 | 
             
            # coding: UTF-8
         | 
| 2 2 |  | 
| 3 | 
            +
            === 1.8.20 / 2012-03-21
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            * 4 bug fixes:
         | 
| 6 | 
            +
             | 
| 7 | 
            +
              * Add --force to `gem build` to skip validation. Fixes #297
         | 
| 8 | 
            +
              * Gracefully deal with YAML::PrivateType objects in Marshal'd gemspecs
         | 
| 9 | 
            +
              * Treat the source as a proper url base. Fixes #304
         | 
| 10 | 
            +
              * Warn when updating the specs cache fails. Fixes #300
         | 
| 11 | 
            +
             | 
| 3 12 | 
             
            === 1.8.19 / 2012-03-14
         | 
| 4 13 |  | 
| 5 14 | 
             
            * 3 bug fixes:
         | 
    
        data/Manifest.txt
    CHANGED
    
    | @@ -86,6 +86,7 @@ lib/rubygems/package/tar_writer.rb | |
| 86 86 | 
             
            lib/rubygems/package_task.rb
         | 
| 87 87 | 
             
            lib/rubygems/path_support.rb
         | 
| 88 88 | 
             
            lib/rubygems/platform.rb
         | 
| 89 | 
            +
            lib/rubygems/psych_additions.rb
         | 
| 89 90 | 
             
            lib/rubygems/psych_tree.rb
         | 
| 90 91 | 
             
            lib/rubygems/remote_fetcher.rb
         | 
| 91 92 | 
             
            lib/rubygems/require_paths_builder.rb
         | 
| @@ -109,6 +110,7 @@ setup.rb | |
| 109 110 | 
             
            test/rubygems/bogussources.rb
         | 
| 110 111 | 
             
            test/rubygems/data/gem-private_key.pem
         | 
| 111 112 | 
             
            test/rubygems/data/gem-public_cert.pem
         | 
| 113 | 
            +
            test/rubygems/data/null-type.gemspec.rz
         | 
| 112 114 | 
             
            test/rubygems/fake_certlib/openssl.rb
         | 
| 113 115 | 
             
            test/rubygems/fix_openssl_warnings.rb
         | 
| 114 116 | 
             
            test/rubygems/foo/discover.rb
         | 
    
        data/lib/rubygems.rb
    CHANGED
    
    | @@ -120,7 +120,7 @@ require "rubygems/deprecate" | |
| 120 120 | 
             
            # -The RubyGems Team
         | 
| 121 121 |  | 
| 122 122 | 
             
            module Gem
         | 
| 123 | 
            -
              VERSION = '1.8. | 
| 123 | 
            +
              VERSION = '1.8.20'
         | 
| 124 124 |  | 
| 125 125 | 
             
              ##
         | 
| 126 126 | 
             
              # Raised when RubyGems is unable to load or activate a gem.  Contains the
         | 
| @@ -671,6 +671,7 @@ module Gem | |
| 671 671 | 
             
                      YAML::ENGINE.yamler = "psych"
         | 
| 672 672 | 
             
                    end
         | 
| 673 673 |  | 
| 674 | 
            +
                    require 'rubygems/psych_additions'
         | 
| 674 675 | 
             
                    require 'rubygems/psych_tree'
         | 
| 675 676 | 
             
                  end
         | 
| 676 677 | 
             
                end
         | 
    
        data/lib/rubygems/builder.rb
    CHANGED
    
    | @@ -32,9 +32,9 @@ class Gem::Builder | |
| 32 32 | 
             
              # Builds the gem from the specification.  Returns the name of the file
         | 
| 33 33 | 
             
              # written.
         | 
| 34 34 |  | 
| 35 | 
            -
              def build
         | 
| 35 | 
            +
              def build(skip_validation=false)
         | 
| 36 36 | 
             
                @spec.mark_version
         | 
| 37 | 
            -
                @spec.validate
         | 
| 37 | 
            +
                @spec.validate unless skip_validation
         | 
| 38 38 | 
             
                @signer = sign
         | 
| 39 39 | 
             
                write_package
         | 
| 40 40 | 
             
                say success if Gem.configuration.verbose
         | 
| @@ -4,7 +4,11 @@ require 'rubygems/builder' | |
| 4 4 | 
             
            class Gem::Commands::BuildCommand < Gem::Command
         | 
| 5 5 |  | 
| 6 6 | 
             
              def initialize
         | 
| 7 | 
            -
                super | 
| 7 | 
            +
                super 'build', 'Build a gem from a gemspec'
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                add_option '--force', 'skip validation of the spec' do |value, options|
         | 
| 10 | 
            +
                  options[:force] = true
         | 
| 11 | 
            +
                end
         | 
| 8 12 | 
             
              end
         | 
| 9 13 |  | 
| 10 14 | 
             
              def arguments # :nodoc:
         | 
| @@ -22,7 +26,7 @@ class Gem::Commands::BuildCommand < Gem::Command | |
| 22 26 | 
             
                  spec = load_gemspec gemspec
         | 
| 23 27 |  | 
| 24 28 | 
             
                  if spec then
         | 
| 25 | 
            -
                    Gem::Builder.new(spec).build
         | 
| 29 | 
            +
                    Gem::Builder.new(spec).build options[:force]
         | 
| 26 30 | 
             
                  else
         | 
| 27 31 | 
             
                    alert_error "Error loading gemspec. Aborting."
         | 
| 28 32 | 
             
                    terminate_interaction 1
         | 
| @@ -59,11 +59,11 @@ class Gem::Commands::FetchCommand < Gem::Command | |
| 59 59 | 
             
                  end
         | 
| 60 60 |  | 
| 61 61 | 
             
                  file = "#{spec.full_name}.gem"
         | 
| 62 | 
            -
                  remote_path = source_uri + "gems/#{file}"
         | 
| 62 | 
            +
                  remote_path = URI.parse(source_uri) + "gems/#{file}"
         | 
| 63 63 |  | 
| 64 64 | 
             
                  fetch = Gem::RemoteFetcher.fetcher
         | 
| 65 65 |  | 
| 66 | 
            -
                  gem = fetch.fetch_path remote_path
         | 
| 66 | 
            +
                  gem = fetch.fetch_path remote_path.to_s
         | 
| 67 67 |  | 
| 68 68 | 
             
                  File.open file, "wb" do |f|
         | 
| 69 69 | 
             
                    f.write gem
         | 
| @@ -255,8 +255,12 @@ class Gem::SpecFetcher | |
| 255 255 | 
             
                loaded     = false
         | 
| 256 256 |  | 
| 257 257 | 
             
                if File.exist? local_file then
         | 
| 258 | 
            -
                   | 
| 259 | 
            -
                     | 
| 258 | 
            +
                  begin
         | 
| 259 | 
            +
                    spec_dump =
         | 
| 260 | 
            +
                      @fetcher.fetch_path(spec_path, File.mtime(local_file))
         | 
| 261 | 
            +
                  rescue Gem::RemoteFetcher::FetchError => e
         | 
| 262 | 
            +
                    alert_warning "Error fetching data: #{e.message}"
         | 
| 263 | 
            +
                  end
         | 
| 260 264 |  | 
| 261 265 | 
             
                  loaded = true if spec_dump
         | 
| 262 266 |  | 
| @@ -666,6 +666,11 @@ class Gem::Specification | |
| 666 666 | 
             
                  raise TypeError, "invalid Gem::Specification format #{array.inspect}"
         | 
| 667 667 | 
             
                end
         | 
| 668 668 |  | 
| 669 | 
            +
                # Cleanup any YAML::PrivateType. They only show up for an old bug
         | 
| 670 | 
            +
                # where nil => null, so just convert them to nil based on the type.
         | 
| 671 | 
            +
             | 
| 672 | 
            +
                array.map! { |e| e.kind_of?(YAML::PrivateType) ? nil : e }
         | 
| 673 | 
            +
             | 
| 669 674 | 
             
                spec.instance_variable_set :@rubygems_version,          array[0]
         | 
| 670 675 | 
             
                # spec version
         | 
| 671 676 | 
             
                spec.instance_variable_set :@name,                      array[2]
         | 
| Binary file | 
| @@ -98,5 +98,21 @@ class TestGemCommandsBuildCommand < Gem::TestCase | |
| 98 98 | 
             
                assert_equal "this is a summary", spec.summary
         | 
| 99 99 | 
             
              end
         | 
| 100 100 |  | 
| 101 | 
            +
              def test_execute_force
         | 
| 102 | 
            +
                @gem.instance_variable_set :@required_rubygems_version, nil
         | 
| 103 | 
            +
             | 
| 104 | 
            +
                gemspec_file = File.join(@tempdir, @gem.spec_name)
         | 
| 105 | 
            +
             | 
| 106 | 
            +
                File.open gemspec_file, 'w' do |gs|
         | 
| 107 | 
            +
                  gs.write @gem.to_yaml
         | 
| 108 | 
            +
                end
         | 
| 109 | 
            +
             | 
| 110 | 
            +
                @cmd.options[:args] = [gemspec_file]
         | 
| 111 | 
            +
                @cmd.options[:force] = true
         | 
| 112 | 
            +
             | 
| 113 | 
            +
                util_test_build_gem @gem, gemspec_file
         | 
| 114 | 
            +
              end
         | 
| 115 | 
            +
             | 
| 116 | 
            +
             | 
| 101 117 | 
             
            end
         | 
| 102 118 |  | 
| @@ -73,5 +73,30 @@ class TestGemCommandsFetchCommand < Gem::TestCase | |
| 73 73 | 
             
                       "#{@a1.full_name} not fetched"
         | 
| 74 74 | 
             
              end
         | 
| 75 75 |  | 
| 76 | 
            +
              def test_execute_handles_sources_properly
         | 
| 77 | 
            +
                repo = "http://gems.example.com"
         | 
| 78 | 
            +
                @uri = URI.parse repo
         | 
| 79 | 
            +
             | 
| 80 | 
            +
                Gem.sources.replace [repo]
         | 
| 81 | 
            +
             | 
| 82 | 
            +
                util_setup_fake_fetcher
         | 
| 83 | 
            +
                util_setup_spec_fetcher @a1, @a2
         | 
| 84 | 
            +
             | 
| 85 | 
            +
                @fetcher.data["#{@gem_repo}gems/#{@a1.file_name}"] =
         | 
| 86 | 
            +
                  File.read(@a1.cache_file)
         | 
| 87 | 
            +
             | 
| 88 | 
            +
                @cmd.options[:args] = [@a2.name]
         | 
| 89 | 
            +
                @cmd.options[:version] = Gem::Requirement.new '1'
         | 
| 90 | 
            +
             | 
| 91 | 
            +
                use_ui @ui do
         | 
| 92 | 
            +
                  Dir.chdir @tempdir do
         | 
| 93 | 
            +
                    @cmd.execute
         | 
| 94 | 
            +
                  end
         | 
| 95 | 
            +
                end
         | 
| 96 | 
            +
             | 
| 97 | 
            +
                assert File.exist?(File.join(@tempdir, @a1.file_name)),
         | 
| 98 | 
            +
                       "#{@a1.full_name} not fetched"
         | 
| 99 | 
            +
              end
         | 
| 100 | 
            +
             | 
| 76 101 | 
             
            end
         | 
| 77 102 |  | 
| @@ -178,6 +178,38 @@ class TestGemCommandsInstallCommand < Gem::TestCase | |
| 178 178 | 
             
                assert_match(/ould not find a valid gem 'nonexistent'/, @ui.error)
         | 
| 179 179 | 
             
              end
         | 
| 180 180 |  | 
| 181 | 
            +
              def test_execute_bad_source
         | 
| 182 | 
            +
                util_setup_fake_fetcher
         | 
| 183 | 
            +
                util_setup_spec_fetcher
         | 
| 184 | 
            +
             | 
| 185 | 
            +
                # This is needed because we need to exercise the cache path
         | 
| 186 | 
            +
                # within SpecFetcher
         | 
| 187 | 
            +
                path = File.join Gem.user_home, '.gem', 'specs', "not-there.nothing%80",
         | 
| 188 | 
            +
                                                "latest_specs.4.8"
         | 
| 189 | 
            +
             | 
| 190 | 
            +
                FileUtils.mkdir_p File.dirname(path)
         | 
| 191 | 
            +
             | 
| 192 | 
            +
                File.open path, "w" do |f|
         | 
| 193 | 
            +
                  f.write Marshal.dump([])
         | 
| 194 | 
            +
                end
         | 
| 195 | 
            +
             | 
| 196 | 
            +
                Gem.sources.replace ["http://not-there.nothing"]
         | 
| 197 | 
            +
             | 
| 198 | 
            +
                @cmd.options[:args] = %w[nonexistent]
         | 
| 199 | 
            +
             | 
| 200 | 
            +
                use_ui @ui do
         | 
| 201 | 
            +
                  e = assert_raises Gem::SystemExitException do
         | 
| 202 | 
            +
                    @cmd.execute
         | 
| 203 | 
            +
                  end
         | 
| 204 | 
            +
                  assert_equal 2, e.exit_code
         | 
| 205 | 
            +
                end
         | 
| 206 | 
            +
             | 
| 207 | 
            +
                errs = @ui.error.split("\n")
         | 
| 208 | 
            +
             | 
| 209 | 
            +
                assert_match(/WARNING:  Error fetching data/, errs.shift)
         | 
| 210 | 
            +
                assert_match(/ould not find a valid gem 'nonexistent'/, errs.shift)
         | 
| 211 | 
            +
              end
         | 
| 212 | 
            +
             | 
| 181 213 | 
             
              def test_execute_nonexistent_with_hint
         | 
| 182 214 | 
             
                misspelled = "nonexistent_with_hint"
         | 
| 183 215 | 
             
                correctly_spelled = "non_existent_with_hint"
         | 
| @@ -406,6 +406,16 @@ dependencies: [] | |
| 406 406 | 
             
                assert_equal expected, Gem::Specification.normalize_yaml_input(input)
         | 
| 407 407 | 
             
              end
         | 
| 408 408 |  | 
| 409 | 
            +
              DATA_PATH = File.expand_path "../data", __FILE__
         | 
| 410 | 
            +
             | 
| 411 | 
            +
              def test_handles_private_null_type
         | 
| 412 | 
            +
                path = File.join DATA_PATH, "null-type.gemspec.rz"
         | 
| 413 | 
            +
             | 
| 414 | 
            +
                data = Marshal.load Gem.inflate(File.read(path))
         | 
| 415 | 
            +
             | 
| 416 | 
            +
                assert_equal nil, data.rubyforge_project
         | 
| 417 | 
            +
              end
         | 
| 418 | 
            +
             | 
| 409 419 | 
             
              def test_initialize
         | 
| 410 420 | 
             
                spec = Gem::Specification.new do |s|
         | 
| 411 421 | 
             
                  s.name = "blah"
         | 
    
        metadata
    CHANGED
    
    | @@ -1,13 +1,13 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: rubygems-update
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              hash:  | 
| 4 | 
            +
              hash: 31
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
              segments: 
         | 
| 7 7 | 
             
              - 1
         | 
| 8 8 | 
             
              - 8
         | 
| 9 | 
            -
              -  | 
| 10 | 
            -
              version: 1.8. | 
| 9 | 
            +
              - 20
         | 
| 10 | 
            +
              version: 1.8.20
         | 
| 11 11 | 
             
            platform: ruby
         | 
| 12 12 | 
             
            authors: 
         | 
| 13 13 | 
             
            - Jim Weirich
         | 
| @@ -17,7 +17,7 @@ autorequire: | |
| 17 17 | 
             
            bindir: bin
         | 
| 18 18 | 
             
            cert_chain: []
         | 
| 19 19 |  | 
| 20 | 
            -
            date: 2012-03- | 
| 20 | 
            +
            date: 2012-03-21 00:00:00 Z
         | 
| 21 21 | 
             
            dependencies: 
         | 
| 22 22 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| 23 23 | 
             
              name: minitest
         | 
| @@ -269,6 +269,7 @@ files: | |
| 269 269 | 
             
            - lib/rubygems/package_task.rb
         | 
| 270 270 | 
             
            - lib/rubygems/path_support.rb
         | 
| 271 271 | 
             
            - lib/rubygems/platform.rb
         | 
| 272 | 
            +
            - lib/rubygems/psych_additions.rb
         | 
| 272 273 | 
             
            - lib/rubygems/psych_tree.rb
         | 
| 273 274 | 
             
            - lib/rubygems/remote_fetcher.rb
         | 
| 274 275 | 
             
            - lib/rubygems/require_paths_builder.rb
         | 
| @@ -292,6 +293,7 @@ files: | |
| 292 293 | 
             
            - test/rubygems/bogussources.rb
         | 
| 293 294 | 
             
            - test/rubygems/data/gem-private_key.pem
         | 
| 294 295 | 
             
            - test/rubygems/data/gem-public_cert.pem
         | 
| 296 | 
            +
            - test/rubygems/data/null-type.gemspec.rz
         | 
| 295 297 | 
             
            - test/rubygems/fake_certlib/openssl.rb
         | 
| 296 298 | 
             
            - test/rubygems/fix_openssl_warnings.rb
         | 
| 297 299 | 
             
            - test/rubygems/foo/discover.rb
         | 
| @@ -385,7 +387,7 @@ post_install_message: | |
| 385 387 | 
             
            rdoc_options: 
         | 
| 386 388 | 
             
            - --main
         | 
| 387 389 | 
             
            - README.rdoc
         | 
| 388 | 
            -
            - --title=RubyGems 1.8. | 
| 390 | 
            +
            - --title=RubyGems 1.8.20 Documentation
         | 
| 389 391 | 
             
            require_paths: 
         | 
| 390 392 | 
             
            - hide_lib_for_update
         | 
| 391 393 | 
             
            required_ruby_version: !ruby/object:Gem::Requirement 
         |