rubygems-update 2.6.1 → 2.6.2
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.
- checksums.yaml +4 -4
- data/.travis.yml +6 -1
- data/History.txt +13 -0
- data/MAINTAINERS.md +1 -1
- data/Rakefile +2 -2
- data/appveyor.yml +3 -1
- data/lib/rubygems.rb +33 -10
- data/lib/rubygems/core_ext/kernel_require.rb +8 -5
- data/lib/rubygems/dependency.rb +7 -6
- data/lib/rubygems/installer.rb +3 -2
- data/lib/rubygems/installer_test_case.rb +2 -0
- data/lib/rubygems/resolver.rb +2 -2
- data/lib/rubygems/test_case.rb +10 -1
- data/test/rubygems/test_gem.rb +11 -0
- data/test/rubygems/test_gem_installer.rb +50 -1
- data/test/rubygems/test_gem_resolver.rb +12 -0
- data/test/rubygems/test_kernel.rb +7 -0
- data/test/rubygems/test_require.rb +28 -0
- metadata +17 -17
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 2e637cea941cba1038aa966e4b493ee19b015f16
         | 
| 4 | 
            +
              data.tar.gz: 2f3a0e95c40344b31b87a509b76ba85b01884304
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 8e2600876b6e09cee7b0cc41b72ae5d5deefa904b38b886f594737f30e12facc67a9584d5fc2188eadb41b124211fdc91a70f1a17f531013be5d436511640071
         | 
| 7 | 
            +
              data.tar.gz: d01dd0b8aea7c52cd8095f61b0bf637621798af6bf47821601b5e1df0ef2542261b32e21871702cdb4f35ee707b4bcf338bdcce16cf135507c889312f15eaa5b
         | 
    
        data/.travis.yml
    CHANGED
    
    | @@ -3,7 +3,7 @@ after_script: | |
| 3 3 | 
             
            - rake travis:after -t
         | 
| 4 4 | 
             
            before_script:
         | 
| 5 5 | 
             
            - gem uninstall executable-hooks gem-wrappers -x --force -i `gem env home`@global
         | 
| 6 | 
            -
            - gem install rake --no-document
         | 
| 6 | 
            +
            - gem install rake -v '~> 10.5' --no-document
         | 
| 7 7 | 
             
            - gem install hoe-travis --no-document
         | 
| 8 8 | 
             
            - gem install minitest -v '~> 4.7' --no-document
         | 
| 9 9 | 
             
            - rake travis:before -t
         | 
| @@ -14,6 +14,11 @@ notifications: | |
| 14 14 | 
             
              email:
         | 
| 15 15 | 
             
              - drbrain@segment7.net
         | 
| 16 16 | 
             
              - evan+notify@phx.io
         | 
| 17 | 
            +
            branches:
         | 
| 18 | 
            +
              only:
         | 
| 19 | 
            +
                - master
         | 
| 20 | 
            +
                - auto
         | 
| 21 | 
            +
                - /[\d.]+/
         | 
| 17 22 | 
             
            rvm:
         | 
| 18 23 | 
             
            - 1.8.7
         | 
| 19 24 | 
             
            - 1.9.2
         | 
    
        data/History.txt
    CHANGED
    
    | @@ -1,5 +1,18 @@ | |
| 1 1 | 
             
            # coding: UTF-8
         | 
| 2 2 |  | 
| 3 | 
            +
            === 2.6.2 / 2016-03-12
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            Bug fixes:
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            * Fix wrong version of gem activation for bin stub. Pull request #1527 by
         | 
| 8 | 
            +
              Aaron Patterson.
         | 
| 9 | 
            +
            * Speed up gem activation failures. Pull request #1539 by Aaron Patterson.
         | 
| 10 | 
            +
            * Fix platform sorting in the resolver. Pull request #1542 by Samuel E.
         | 
| 11 | 
            +
              Giddins.
         | 
| 12 | 
            +
            * Ensure we unlock the monitor even if try_activate throws. Pull request
         | 
| 13 | 
            +
              #1538 by Charles Oliver Nutter.
         | 
| 14 | 
            +
             | 
| 15 | 
            +
             | 
| 3 16 | 
             
            === 2.6.1 / 2016-02-28
         | 
| 4 17 |  | 
| 5 18 | 
             
            Bug fixes:
         | 
    
        data/MAINTAINERS.md
    CHANGED
    
    | @@ -2,4 +2,4 @@ André Arko <andre@arko.net> (@indirect) | |
| 2 2 | 
             
            Jeremy Hinegardner <jeremy@copiousfreetime.org> (@copiousfreetime)
         | 
| 3 3 | 
             
            Kurtis Rainbolt-Greene <me@kurtisrainboltgreene.name> (@krainboltgreene)
         | 
| 4 4 | 
             
            Samuel Giddins <segiddins@segiddins.me> (@segiddins)
         | 
| 5 | 
            -
            Marie  | 
| 5 | 
            +
            Ellen Marie Dash <me@duckie.co> (@duckinator)
         | 
    
        data/Rakefile
    CHANGED
    
    | @@ -26,7 +26,6 @@ end | |
| 26 26 |  | 
| 27 27 | 
             
            Hoe::RUBY_FLAGS << " --disable-gems" if RUBY_VERSION > "1.9"
         | 
| 28 28 |  | 
| 29 | 
            -
            Hoe.plugin :minitest
         | 
| 30 29 | 
             
            Hoe.plugin :git
         | 
| 31 30 | 
             
            Hoe.plugin :travis
         | 
| 32 31 |  | 
| @@ -78,6 +77,7 @@ end | |
| 78 77 |  | 
| 79 78 | 
             
            v = hoe.version
         | 
| 80 79 |  | 
| 80 | 
            +
            hoe.testlib      = :minitest
         | 
| 81 81 | 
             
            hoe.test_prelude = 'gem "minitest", "~> 4.0"'
         | 
| 82 82 |  | 
| 83 83 | 
             
            Rake::Task['docs'].clear
         | 
| @@ -173,7 +173,7 @@ task :package => %W[ | |
| 173 173 |  | 
| 174 174 | 
             
            desc "Upload release to gemcutter S3"
         | 
| 175 175 | 
             
            task :upload_to_gemcutter do
         | 
| 176 | 
            -
              sh "s3cmd put -P pkg/rubygems-update-#{v}.gem pkg/rubygems-#{v}.zip pkg/rubygems-#{v}.tgz s3://production.s3.rubygems.org/rubygems/"
         | 
| 176 | 
            +
              sh "s3cmd put -P pkg/rubygems-update-#{v}.gem pkg/rubygems-#{v}.zip pkg/rubygems-#{v}.tgz s3://oregon.production.s3.rubygems.org/rubygems/"
         | 
| 177 177 | 
             
            end
         | 
| 178 178 |  | 
| 179 179 | 
             
            desc "Upload release to rubygems.org"
         | 
    
        data/appveyor.yml
    CHANGED
    
    | @@ -3,13 +3,15 @@ version: "{build}" | |
| 3 3 | 
             
            branches:
         | 
| 4 4 | 
             
              only:
         | 
| 5 5 | 
             
                - master
         | 
| 6 | 
            +
                - auto
         | 
| 7 | 
            +
                - /[\d.]+/
         | 
| 6 8 | 
             
            clone_depth: 10
         | 
| 7 9 | 
             
            install:
         | 
| 8 10 | 
             
              - SET PATH=C:\Ruby%ruby_version%\bin;%PATH%
         | 
| 9 11 | 
             
              - SET GEM_HOME=%APPDATA%\.gem
         | 
| 10 12 | 
             
              - ruby --version
         | 
| 11 13 | 
             
              - gem --version
         | 
| 12 | 
            -
              - gem install rake --no-rdoc --no-ri
         | 
| 14 | 
            +
              - gem install rake -v "~> 10.5" --no-rdoc --no-ri
         | 
| 13 15 | 
             
              - gem install hoe-travis --no-rdoc --no-ri
         | 
| 14 16 | 
             
              - gem install minitest -v "~> 4.7" --no-rdoc --no-ri
         | 
| 15 17 | 
             
              - rake travis:before --trace
         | 
    
        data/lib/rubygems.rb
    CHANGED
    
    | @@ -10,7 +10,7 @@ require 'rbconfig' | |
| 10 10 | 
             
            require 'thread'
         | 
| 11 11 |  | 
| 12 12 | 
             
            module Gem
         | 
| 13 | 
            -
              VERSION = '2.6. | 
| 13 | 
            +
              VERSION = '2.6.2'
         | 
| 14 14 | 
             
            end
         | 
| 15 15 |  | 
| 16 16 | 
             
            # Must be first since it unloads the prelude from 1.9.2
         | 
| @@ -174,14 +174,6 @@ module Gem | |
| 174 174 | 
             
              @pre_reset_hooks      ||= []
         | 
| 175 175 | 
             
              @post_reset_hooks     ||= []
         | 
| 176 176 |  | 
| 177 | 
            -
              def self.env_requirement(gem_name)
         | 
| 178 | 
            -
                @env_requirements_by_name ||= {}
         | 
| 179 | 
            -
                @env_requirements_by_name[gem_name] ||= begin
         | 
| 180 | 
            -
                  req = ENV["GEM_REQUIREMENT_#{gem_name.upcase}"] || '>= 0'.freeze
         | 
| 181 | 
            -
                  Gem::Requirement.create(req)
         | 
| 182 | 
            -
                end
         | 
| 183 | 
            -
              end
         | 
| 184 | 
            -
             | 
| 185 177 | 
             
              ##
         | 
| 186 178 | 
             
              # Try to activate a gem containing +path+. Returns true if
         | 
| 187 179 | 
             
              # activation succeeded or wasn't needed because it was already
         | 
| @@ -243,11 +235,15 @@ module Gem | |
| 243 235 | 
             
                requirements = Gem::Requirement.default if
         | 
| 244 236 | 
             
                  requirements.empty?
         | 
| 245 237 |  | 
| 238 | 
            +
                find_spec_for_exe(name, exec_name, requirements).bin_file exec_name
         | 
| 239 | 
            +
              end
         | 
| 240 | 
            +
             | 
| 241 | 
            +
              def self.find_spec_for_exe name, exec_name, requirements
         | 
| 246 242 | 
             
                dep = Gem::Dependency.new name, requirements
         | 
| 247 243 |  | 
| 248 244 | 
             
                loaded = Gem.loaded_specs[name]
         | 
| 249 245 |  | 
| 250 | 
            -
                return loaded | 
| 246 | 
            +
                return loaded if loaded && dep.matches_spec?(loaded)
         | 
| 251 247 |  | 
| 252 248 | 
             
                specs = dep.matching_specs(true)
         | 
| 253 249 |  | 
| @@ -263,6 +259,24 @@ module Gem | |
| 263 259 | 
             
                  raise Gem::GemNotFoundException, msg
         | 
| 264 260 | 
             
                end
         | 
| 265 261 |  | 
| 262 | 
            +
                spec
         | 
| 263 | 
            +
              end
         | 
| 264 | 
            +
              private_class_method :find_spec_for_exe
         | 
| 265 | 
            +
             | 
| 266 | 
            +
              ##
         | 
| 267 | 
            +
              # Find the full path to the executable for gem +name+.  If the +exec_name+
         | 
| 268 | 
            +
              # is not given, the gem's default_executable is chosen, otherwise the
         | 
| 269 | 
            +
              # specified executable's path is returned.  +requirements+ allows
         | 
| 270 | 
            +
              # you to specify specific gem versions.
         | 
| 271 | 
            +
              #
         | 
| 272 | 
            +
              # A side effect of this method is that it will activate the gem that
         | 
| 273 | 
            +
              # contains the executable.
         | 
| 274 | 
            +
              #
         | 
| 275 | 
            +
              # This method should *only* be used in bin stub files.
         | 
| 276 | 
            +
             | 
| 277 | 
            +
              def self.activate_bin_path name, exec_name, requirement # :nodoc:
         | 
| 278 | 
            +
                spec = find_spec_for_exe name, exec_name, [requirement]
         | 
| 279 | 
            +
                Gem::LOADED_SPECS_MUTEX.synchronize { spec.activate }
         | 
| 266 280 | 
             
                spec.bin_file exec_name
         | 
| 267 281 | 
             
              end
         | 
| 268 282 |  | 
| @@ -849,6 +863,15 @@ An Array was passed in from #{caller[3]} | |
| 849 863 | 
             
                @ruby_api_version ||= RbConfig::CONFIG['ruby_version'].dup
         | 
| 850 864 | 
             
              end
         | 
| 851 865 |  | 
| 866 | 
            +
              def self.env_requirement(gem_name)
         | 
| 867 | 
            +
                @env_requirements_by_name ||= {}
         | 
| 868 | 
            +
                @env_requirements_by_name[gem_name] ||= begin
         | 
| 869 | 
            +
                  req = ENV["GEM_REQUIREMENT_#{gem_name.upcase}"] || '>= 0'.freeze
         | 
| 870 | 
            +
                  Gem::Requirement.create(req)
         | 
| 871 | 
            +
                end
         | 
| 872 | 
            +
              end
         | 
| 873 | 
            +
              post_reset { @env_requirements_by_name = {} }
         | 
| 874 | 
            +
             | 
| 852 875 | 
             
              ##
         | 
| 853 876 | 
             
              # Returns the latest release-version specification for the gem +name+.
         | 
| 854 877 |  | 
| @@ -121,14 +121,17 @@ module Kernel | |
| 121 121 | 
             
              rescue LoadError => load_error
         | 
| 122 122 | 
             
                RUBYGEMS_ACTIVATION_MONITOR.enter
         | 
| 123 123 |  | 
| 124 | 
            -
                 | 
| 125 | 
            -
             | 
| 126 | 
            -
             | 
| 127 | 
            -
             | 
| 128 | 
            -
             | 
| 124 | 
            +
                begin
         | 
| 125 | 
            +
                  if load_error.message.start_with?("Could not find") or
         | 
| 126 | 
            +
                      (load_error.message.end_with?(path) and Gem.try_activate(path)) then
         | 
| 127 | 
            +
                    require_again = true
         | 
| 128 | 
            +
                  end
         | 
| 129 | 
            +
                ensure
         | 
| 129 130 | 
             
                  RUBYGEMS_ACTIVATION_MONITOR.exit
         | 
| 130 131 | 
             
                end
         | 
| 131 132 |  | 
| 133 | 
            +
                return gem_original_require(path) if require_again
         | 
| 134 | 
            +
             | 
| 132 135 | 
             
                raise load_error
         | 
| 133 136 | 
             
              end
         | 
| 134 137 |  | 
    
        data/lib/rubygems/dependency.rb
    CHANGED
    
    | @@ -286,7 +286,9 @@ class Gem::Dependency | |
| 286 286 | 
             
                  }
         | 
| 287 287 | 
             
                end
         | 
| 288 288 |  | 
| 289 | 
            -
                 | 
| 289 | 
            +
                # `stubs_for` returns oldest first, but `matching_specs` is supposed to
         | 
| 290 | 
            +
                # return newest first, so just reverse the list
         | 
| 291 | 
            +
                matches.reverse
         | 
| 290 292 | 
             
              end
         | 
| 291 293 |  | 
| 292 294 | 
             
              ##
         | 
| @@ -302,14 +304,13 @@ class Gem::Dependency | |
| 302 304 | 
             
                # TODO: check Gem.activated_spec[self.name] in case matches falls outside
         | 
| 303 305 |  | 
| 304 306 | 
             
                if matches.empty? then
         | 
| 305 | 
            -
                  specs = Gem::Specification. | 
| 306 | 
            -
                            s.name == name
         | 
| 307 | 
            -
                          }.map { |x| x.full_name }
         | 
| 307 | 
            +
                  specs = Gem::Specification.stubs_for name
         | 
| 308 308 |  | 
| 309 309 | 
             
                  if specs.empty?
         | 
| 310 | 
            -
                    total = Gem::Specification. | 
| 310 | 
            +
                    total = Gem::Specification.stubs.size
         | 
| 311 311 | 
             
                    msg   = "Could not find '#{name}' (#{requirement}) among #{total} total gem(s)\n".dup
         | 
| 312 312 | 
             
                  else
         | 
| 313 | 
            +
                    specs = specs.map(&:full_name)
         | 
| 313 314 | 
             
                    msg   = "Could not find '#{name}' (#{requirement}) - did find: [#{specs.join ','}]\n".dup
         | 
| 314 315 | 
             
                  end
         | 
| 315 316 | 
             
                  msg << "Checked in 'GEM_PATH=#{Gem.path.join(File::PATH_SEPARATOR)}', execute `gem env` for more information"
         | 
| @@ -334,6 +335,6 @@ class Gem::Dependency | |
| 334 335 |  | 
| 335 336 | 
             
                matches.delete_if { |spec| spec.nil? || spec.version.prerelease? } unless prerelease?
         | 
| 336 337 |  | 
| 337 | 
            -
                matches. | 
| 338 | 
            +
                matches.first
         | 
| 338 339 | 
             
              end
         | 
| 339 340 | 
             
            end
         | 
    
        data/lib/rubygems/installer.rb
    CHANGED
    
    | @@ -216,7 +216,8 @@ class Gem::Installer | |
| 216 216 | 
             
                  existing = io.read.slice(%r{
         | 
| 217 217 | 
             
                      ^(
         | 
| 218 218 | 
             
                        gem \s |
         | 
| 219 | 
            -
                        load \s Gem\.bin_path\(
         | 
| 219 | 
            +
                        load \s Gem\.bin_path\( |
         | 
| 220 | 
            +
                        load \s Gem\.activate_bin_path\(
         | 
| 220 221 | 
             
                      )
         | 
| 221 222 | 
             
                      (['"])(.*?)(\2),
         | 
| 222 223 | 
             
                    }x, 3)
         | 
| @@ -719,7 +720,7 @@ if ARGV.first | |
| 719 720 | 
             
              end
         | 
| 720 721 | 
             
            end
         | 
| 721 722 |  | 
| 722 | 
            -
            load Gem. | 
| 723 | 
            +
            load Gem.activate_bin_path('#{spec.name}', '#{bin_file_name}', version)
         | 
| 723 724 | 
             
            TEXT
         | 
| 724 725 | 
             
              end
         | 
| 725 726 |  | 
    
        data/lib/rubygems/resolver.rb
    CHANGED
    
    | @@ -193,7 +193,7 @@ class Gem::Resolver | |
| 193 193 | 
             
                conflict = e.conflicts.values.first
         | 
| 194 194 | 
             
                raise Gem::DependencyResolutionError, Conflict.new(conflict.requirement_trees.first.first, conflict.existing, conflict.requirement)
         | 
| 195 195 | 
             
              ensure
         | 
| 196 | 
            -
                @output.close if @output and !debug?
         | 
| 196 | 
            +
                @output.close if defined?(@output) and !debug?
         | 
| 197 197 | 
             
              end
         | 
| 198 198 |  | 
| 199 199 | 
             
              ##
         | 
| @@ -233,7 +233,7 @@ class Gem::Resolver | |
| 233 233 | 
             
                  exc.errors = @set.errors
         | 
| 234 234 | 
             
                  raise exc
         | 
| 235 235 | 
             
                end
         | 
| 236 | 
            -
                possibles.sort_by { |s| [s.source, s.version,  | 
| 236 | 
            +
                possibles.sort_by { |s| [s.source, s.version, Gem::Platform.local =~ s.platform ? 1 : 0] }.
         | 
| 237 237 | 
             
                  map { |s| ActivationRequest.new s, dependency, [] }
         | 
| 238 238 | 
             
              end
         | 
| 239 239 |  | 
    
        data/lib/rubygems/test_case.rb
    CHANGED
    
    | @@ -223,6 +223,10 @@ class Gem::TestCase < MiniTest::Unit::TestCase | |
| 223 223 | 
             
                @orig_gem_spec_cache = ENV['GEM_SPEC_CACHE']
         | 
| 224 224 | 
             
                @orig_rubygems_gemdeps = ENV['RUBYGEMS_GEMDEPS']
         | 
| 225 225 | 
             
                @orig_rubygems_host = ENV['RUBYGEMS_HOST']
         | 
| 226 | 
            +
                ENV.keys.find_all { |k| k.start_with?('GEM_REQUIREMENT_') }.each do |k|
         | 
| 227 | 
            +
                  ENV.delete k
         | 
| 228 | 
            +
                end
         | 
| 229 | 
            +
                @orig_gem_env_requirements = ENV.to_hash
         | 
| 226 230 |  | 
| 227 231 | 
             
                ENV['GEM_VENDOR'] = nil
         | 
| 228 232 |  | 
| @@ -277,6 +281,7 @@ class Gem::TestCase < MiniTest::Unit::TestCase | |
| 277 281 | 
             
                ENV['HOME'] = @userhome
         | 
| 278 282 | 
             
                Gem.instance_variable_set :@user_home, nil
         | 
| 279 283 | 
             
                Gem.instance_variable_set :@gemdeps, nil
         | 
| 284 | 
            +
                Gem.instance_variable_set :@env_requirements_by_name, nil
         | 
| 280 285 | 
             
                Gem.send :remove_instance_variable, :@ruby_version if
         | 
| 281 286 | 
             
                  Gem.instance_variables.include? :@ruby_version
         | 
| 282 287 |  | 
| @@ -368,6 +373,11 @@ class Gem::TestCase < MiniTest::Unit::TestCase | |
| 368 373 |  | 
| 369 374 | 
             
                FileUtils.rm_rf @tempdir unless ENV['KEEP_FILES']
         | 
| 370 375 |  | 
| 376 | 
            +
                ENV.clear
         | 
| 377 | 
            +
                @orig_gem_env_requirements.each do |k,v|
         | 
| 378 | 
            +
                  ENV[k] = v
         | 
| 379 | 
            +
                end
         | 
| 380 | 
            +
             | 
| 371 381 | 
             
                ENV['GEM_HOME']   = @orig_gem_home
         | 
| 372 382 | 
             
                ENV['GEM_PATH']   = @orig_gem_path
         | 
| 373 383 | 
             
                ENV['GEM_VENDOR'] = @orig_gem_vendor
         | 
| @@ -1493,4 +1503,3 @@ tmpdirs << (ENV['GEM_PATH'] = Dir.mktmpdir("path")) | |
| 1493 1503 | 
             
            pid = $$
         | 
| 1494 1504 | 
             
            END {tmpdirs.each {|dir| Dir.rmdir(dir)} if $$ == pid}
         | 
| 1495 1505 | 
             
            Gem.clear_paths
         | 
| 1496 | 
            -
             | 
    
        data/test/rubygems/test_gem.rb
    CHANGED
    
    | @@ -816,6 +816,17 @@ class TestGem < Gem::TestCase | |
| 816 816 | 
             
                RbConfig::CONFIG['ruby_version'] = orig_ruby_version
         | 
| 817 817 | 
             
              end
         | 
| 818 818 |  | 
| 819 | 
            +
              def test_self_env_requirement
         | 
| 820 | 
            +
                ENV["GEM_REQUIREMENT_FOO"] = '>= 1.2.3'
         | 
| 821 | 
            +
                ENV["GEM_REQUIREMENT_BAR"] = '1.2.3'
         | 
| 822 | 
            +
                ENV["GEM_REQUIREMENT_BAZ"] = 'abcd'
         | 
| 823 | 
            +
             | 
| 824 | 
            +
                assert_equal Gem::Requirement.create('>= 1.2.3'), Gem.env_requirement('foo')
         | 
| 825 | 
            +
                assert_equal Gem::Requirement.create('1.2.3'), Gem.env_requirement('bAr')
         | 
| 826 | 
            +
                assert_raises(Gem::Requirement::BadRequirementError) { Gem.env_requirement('baz') }
         | 
| 827 | 
            +
                assert_equal Gem::Requirement.default, Gem.env_requirement('qux')
         | 
| 828 | 
            +
              end
         | 
| 829 | 
            +
             | 
| 819 830 | 
             
              def test_self_ruby_version_1_8_5
         | 
| 820 831 | 
             
                util_set_RUBY_VERSION '1.8.5'
         | 
| 821 832 |  | 
| @@ -48,7 +48,7 @@ if ARGV.first | |
| 48 48 | 
             
              end
         | 
| 49 49 | 
             
            end
         | 
| 50 50 |  | 
| 51 | 
            -
            load Gem. | 
| 51 | 
            +
            load Gem.activate_bin_path('a', 'executable', version)
         | 
| 52 52 | 
             
                EOF
         | 
| 53 53 |  | 
| 54 54 | 
             
                wrapper = @installer.app_script_text 'executable'
         | 
| @@ -781,6 +781,55 @@ gem 'other', version | |
| 781 781 | 
             
                assert_match(/ran executable/, e.message)
         | 
| 782 782 | 
             
              end
         | 
| 783 783 |  | 
| 784 | 
            +
              def test_conflicting_binstubs
         | 
| 785 | 
            +
                Dir.mkdir util_inst_bindir
         | 
| 786 | 
            +
                util_clear_gems
         | 
| 787 | 
            +
             | 
| 788 | 
            +
                # build old version that has a bin file
         | 
| 789 | 
            +
                util_setup_gem do |spec|
         | 
| 790 | 
            +
                  File.open File.join('bin', 'executable'), 'w' do |f|
         | 
| 791 | 
            +
                    f.puts "require 'code'"
         | 
| 792 | 
            +
                  end
         | 
| 793 | 
            +
                  File.open File.join('lib', 'code.rb'), 'w' do |f|
         | 
| 794 | 
            +
                    f.puts 'raise "I have an executable"'
         | 
| 795 | 
            +
                  end
         | 
| 796 | 
            +
                end
         | 
| 797 | 
            +
             | 
| 798 | 
            +
                @installer.wrappers = true
         | 
| 799 | 
            +
                build_rake_in do
         | 
| 800 | 
            +
                  use_ui @ui do
         | 
| 801 | 
            +
                    @newspec = @installer.install
         | 
| 802 | 
            +
                  end
         | 
| 803 | 
            +
                end
         | 
| 804 | 
            +
             | 
| 805 | 
            +
                old_bin_file = File.join @installer.bin_dir, 'executable'
         | 
| 806 | 
            +
             | 
| 807 | 
            +
                # build new version that doesn't have a bin file
         | 
| 808 | 
            +
                util_setup_gem do |spec|
         | 
| 809 | 
            +
                  FileUtils.rm File.join('bin', 'executable')
         | 
| 810 | 
            +
                  spec.files.delete File.join('bin', 'executable')
         | 
| 811 | 
            +
                  spec.executables.delete 'executable'
         | 
| 812 | 
            +
                  spec.version = @spec.version.bump
         | 
| 813 | 
            +
                  File.open File.join('lib', 'code.rb'), 'w' do |f|
         | 
| 814 | 
            +
                    f.puts 'raise "I do not have an executable"'
         | 
| 815 | 
            +
                  end
         | 
| 816 | 
            +
                end
         | 
| 817 | 
            +
             | 
| 818 | 
            +
                build_rake_in do
         | 
| 819 | 
            +
                  use_ui @ui do
         | 
| 820 | 
            +
                    @newspec = @installer.install
         | 
| 821 | 
            +
                  end
         | 
| 822 | 
            +
                end
         | 
| 823 | 
            +
             | 
| 824 | 
            +
                e = assert_raises RuntimeError do
         | 
| 825 | 
            +
                  instance_eval File.read(old_bin_file)
         | 
| 826 | 
            +
                end
         | 
| 827 | 
            +
             | 
| 828 | 
            +
                # We expect the bin stub to activate the version that actually contains
         | 
| 829 | 
            +
                # the binstub.
         | 
| 830 | 
            +
                assert_match('I have an executable', e.message)
         | 
| 831 | 
            +
              end
         | 
| 832 | 
            +
             | 
| 784 833 | 
             
              def test_install_creates_binstub_that_understand_version
         | 
| 785 834 | 
             
                Dir.mkdir util_inst_bindir
         | 
| 786 835 | 
             
                util_setup_gem
         | 
| @@ -695,6 +695,18 @@ class TestGemResolver < Gem::TestCase | |
| 695 695 | 
             
                assert_equal [a1, a1_p1], selected
         | 
| 696 696 | 
             
              end
         | 
| 697 697 |  | 
| 698 | 
            +
              def test_search_for_local_platform_partial_string_match
         | 
| 699 | 
            +
                a1    = util_spec 'a', 1
         | 
| 700 | 
            +
                a1_p1 = util_spec 'a', 1 do |s| s.platform = Gem::Platform.local.os end
         | 
| 701 | 
            +
                a1_p2 = util_spec 'a', 1 do |s| s.platform = 'unknown'              end
         | 
| 702 | 
            +
             | 
| 703 | 
            +
                s = set(a1_p1, a1_p2, a1)
         | 
| 704 | 
            +
                d = [make_dep('a')]
         | 
| 705 | 
            +
                r = Gem::Resolver.new(d, s)
         | 
| 706 | 
            +
             | 
| 707 | 
            +
                assert_resolves_to [a1_p1], r
         | 
| 708 | 
            +
              end
         | 
| 709 | 
            +
             | 
| 698 710 | 
             
              def test_raises_and_explains_when_platform_prevents_install
         | 
| 699 711 | 
             
                a1 = util_spec "a", "1" do |s|
         | 
| 700 712 | 
             
                  s.platform = Gem::Platform.new %w[c p 1]
         | 
| @@ -64,6 +64,13 @@ class TestKernel < Gem::TestCase | |
| 64 64 | 
             
                assert gem('d', '>= 1.a'), 'prerelease requirement may load prerelease'
         | 
| 65 65 | 
             
              end
         | 
| 66 66 |  | 
| 67 | 
            +
              def test_gem_env_req
         | 
| 68 | 
            +
                ENV["GEM_REQUIREMENT_A"] = '~> 2.0'
         | 
| 69 | 
            +
                assert_raises(Gem::LoadError) { gem('a', '= 1') }
         | 
| 70 | 
            +
                assert gem('a', '> 1')
         | 
| 71 | 
            +
                assert_equal @a2, Gem.loaded_specs['a']
         | 
| 72 | 
            +
              end
         | 
| 73 | 
            +
             | 
| 67 74 | 
             
              def test_gem_conflicting
         | 
| 68 75 | 
             
                assert gem('a', '= 1'), "Should load"
         | 
| 69 76 |  | 
| @@ -319,4 +319,32 @@ class TestGemRequire < Gem::TestCase | |
| 319 319 | 
             
              def unresolved_names
         | 
| 320 320 | 
             
                Gem::Specification.unresolved_deps.values.map(&:to_s).sort
         | 
| 321 321 | 
             
              end
         | 
| 322 | 
            +
             | 
| 323 | 
            +
              def test_try_activate_error_unlocks_require_monitor
         | 
| 324 | 
            +
                silence_warnings do
         | 
| 325 | 
            +
                  class << ::Gem
         | 
| 326 | 
            +
                    alias old_try_activate try_activate
         | 
| 327 | 
            +
                    def try_activate(*); raise 'raised from try_activate'; end
         | 
| 328 | 
            +
                  end
         | 
| 329 | 
            +
                end
         | 
| 330 | 
            +
             | 
| 331 | 
            +
                require 'does_not_exist_for_try_activate_test'
         | 
| 332 | 
            +
              rescue RuntimeError => e
         | 
| 333 | 
            +
                assert_match(/raised from try_activate/, e.message)
         | 
| 334 | 
            +
                assert Kernel::RUBYGEMS_ACTIVATION_MONITOR.try_enter, "require monitor was not unlocked when try_activate raised"
         | 
| 335 | 
            +
              ensure
         | 
| 336 | 
            +
                silence_warnings do
         | 
| 337 | 
            +
                  class << ::Gem
         | 
| 338 | 
            +
                    alias try_activate old_try_activate
         | 
| 339 | 
            +
                  end
         | 
| 340 | 
            +
                end
         | 
| 341 | 
            +
                Kernel::RUBYGEMS_ACTIVATION_MONITOR.exit
         | 
| 342 | 
            +
              end
         | 
| 343 | 
            +
             | 
| 344 | 
            +
              def silence_warnings
         | 
| 345 | 
            +
                old_verbose, $VERBOSE = $VERBOSE, false
         | 
| 346 | 
            +
                yield
         | 
| 347 | 
            +
              ensure
         | 
| 348 | 
            +
                $VERBOSE = old_verbose
         | 
| 349 | 
            +
              end
         | 
| 322 350 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: rubygems-update
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 2.6. | 
| 4 | 
            +
              version: 2.6.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Jim Weirich
         | 
| @@ -10,22 +10,8 @@ authors: | |
| 10 10 | 
             
            autorequire: 
         | 
| 11 11 | 
             
            bindir: bin
         | 
| 12 12 | 
             
            cert_chain: []
         | 
| 13 | 
            -
            date: 2016- | 
| 13 | 
            +
            date: 2016-03-12 00:00:00.000000000 Z
         | 
| 14 14 | 
             
            dependencies:
         | 
| 15 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 16 | 
            -
              name: minitest
         | 
| 17 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 18 | 
            -
                requirements:
         | 
| 19 | 
            -
                - - "~>"
         | 
| 20 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 21 | 
            -
                    version: '5.8'
         | 
| 22 | 
            -
              type: :development
         | 
| 23 | 
            -
              prerelease: false
         | 
| 24 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 25 | 
            -
                requirements:
         | 
| 26 | 
            -
                - - "~>"
         | 
| 27 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 28 | 
            -
                    version: '5.8'
         | 
| 29 15 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 30 16 | 
             
              name: rdoc
         | 
| 31 17 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -96,6 +82,20 @@ dependencies: | |
| 96 82 | 
             
                - - "~>"
         | 
| 97 83 | 
             
                  - !ruby/object:Gem::Version
         | 
| 98 84 | 
             
                    version: 0.9.3
         | 
| 85 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 86 | 
            +
              name: minitest
         | 
| 87 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 88 | 
            +
                requirements:
         | 
| 89 | 
            +
                - - "~>"
         | 
| 90 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 91 | 
            +
                    version: '4.0'
         | 
| 92 | 
            +
              type: :development
         | 
| 93 | 
            +
              prerelease: false
         | 
| 94 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 95 | 
            +
                requirements:
         | 
| 96 | 
            +
                - - "~>"
         | 
| 97 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 98 | 
            +
                    version: '4.0'
         | 
| 99 99 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 100 100 | 
             
              name: hoe
         | 
| 101 101 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -555,7 +555,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 555 555 | 
             
                  version: '0'
         | 
| 556 556 | 
             
            requirements: []
         | 
| 557 557 | 
             
            rubyforge_project: 
         | 
| 558 | 
            -
            rubygems_version: 2.6. | 
| 558 | 
            +
            rubygems_version: 2.6.2
         | 
| 559 559 | 
             
            signing_key: 
         | 
| 560 560 | 
             
            specification_version: 4
         | 
| 561 561 | 
             
            summary: RubyGems is a package management framework for Ruby
         |