diff options
author | Bundlerbot <bot@bundler.io> | 2018-12-30 03:20:18 +0000 |
---|---|---|
committer | Colby Swandale <me@colby.fyi> | 2018-12-30 15:14:11 +1100 |
commit | 53e4ffa93c0685357ad7dbe7ab34ad471d742cda (patch) | |
tree | 3f9b3f9634fba5e7340b0e3863b327a288fbab91 | |
parent | a0ee4cd11d99414d1ef9e9a49c825279fad3aad0 (diff) | |
download | bundler-53e4ffa93c0685357ad7dbe7ab34ad471d742cda.tar.gz |
Merge #6856
6856: Test against Ruby 2.6 and RubyGems 3 r=colby-swandale a=segiddins
The problem was we weren't testing our compatibility with the latest and greatest.
Co-authored-by: Samuel Giddins <segiddins@segiddins.me>
Co-authored-by: Colby Swandale <me@colby.fyi>
(cherry picked from commit a63a39d738865665f714f179fe42dd10006da26d)
-rw-r--r-- | .travis.yml | 2 | ||||
-rw-r--r-- | bundler.gemspec | 6 | ||||
-rw-r--r-- | lib/bundler/current_ruby.rb | 1 | ||||
-rw-r--r-- | lib/bundler/spec_set.rb | 28 | ||||
-rw-r--r-- | man/gemfile.5.ronn | 8 | ||||
-rw-r--r-- | spec/commands/exec_spec.rb | 3 | ||||
-rw-r--r-- | spec/lock/lockfile_bundler_1_spec.rb | 6 | ||||
-rw-r--r-- | spec/quality_spec.rb | 6 | ||||
-rw-r--r-- | spec/runtime/setup_spec.rb | 4 | ||||
-rw-r--r-- | spec/support/helpers.rb | 2 | ||||
-rw-r--r-- | spec/support/path.rb | 4 |
11 files changed, 49 insertions, 21 deletions
diff --git a/.travis.yml b/.travis.yml index 8b3d8b25bf..57dec9ae49 100644 --- a/.travis.yml +++ b/.travis.yml @@ -29,10 +29,10 @@ addons: secure: "TrzIv116JLGUxm6PAUskCYrv8KTDguncKROVwbnjVPKTGDAgoDderd8JUdDEXrKoZ9qGLD2TPYKExt9/QDl71E+qHdWnVqWv4HKCUk2P9z/VLKzHuggOUBkCXiJUhjywUieCJhI3N92bfq2EjSBbu2/OFHqWOjLQ+QCooTEBjv8=" rvm: + - 2.6.0 - 2.5.3 - 2.4.5 - 2.3.8 - - 2.6.0 # Rubygems versions MUST be available as rake tasks # see Rakefile:125 for the list of possible RGV values diff --git a/bundler.gemspec b/bundler.gemspec index 60ead665e3..af65811f23 100644 --- a/bundler.gemspec +++ b/bundler.gemspec @@ -8,8 +8,6 @@ rescue LoadError require File.expand_path("../bundler/version", __FILE__) end -require "shellwords" - Gem::Specification.new do |s| s.name = "bundler" s.version = Bundler::VERSION @@ -49,7 +47,9 @@ Gem::Specification.new do |s| s.add_development_dependency "ronn", "~> 0.7.3" s.add_development_dependency "rspec", "~> 3.6" - s.files = `git ls-files -z`.split("\x0").select {|f| f.match(%r{^(lib|exe)/}) } + base_dir = File.dirname(__FILE__).gsub(%r{([^A-Za-z0-9_\-.,:\/@\n])}, "\\\\\\1") + s.files = IO.popen("git -C #{base_dir} ls-files -z", &:read).split("\x0").select {|f| f.match(%r{^(lib|exe)/}) } + # we don't check in man pages, but we need to ship them because # we use them to generate the long-form help for each command. s.files += Dir.glob("man/**/*") diff --git a/lib/bundler/current_ruby.rb b/lib/bundler/current_ruby.rb index d5efaad6c5..ae5fae841e 100644 --- a/lib/bundler/current_ruby.rb +++ b/lib/bundler/current_ruby.rb @@ -19,6 +19,7 @@ module Bundler 2.4 2.5 2.6 + 2.7 ].freeze KNOWN_MAJOR_VERSIONS = KNOWN_MINOR_VERSIONS.map {|v| v.split(".", 2).first }.uniq.freeze diff --git a/lib/bundler/spec_set.rb b/lib/bundler/spec_set.rb index 5003b2cbec..bbdf04a7d6 100644 --- a/lib/bundler/spec_set.rb +++ b/lib/bundler/spec_set.rb @@ -1,16 +1,12 @@ # frozen_string_literal: true require "tsort" -require "forwardable" require "set" module Bundler class SpecSet - extend Forwardable - include TSort, Enumerable - - def_delegators :@specs, :<<, :length, :add, :remove, :size, :empty? - def_delegators :sorted, :each + include Enumerable + include TSort def initialize(specs) @specs = specs @@ -132,6 +128,26 @@ module Bundler what_required(req) << spec end + def <<(spec) + @specs << spec + end + + def length + @specs.length + end + + def size + @specs.size + end + + def empty? + @specs.empty? + end + + def each(&b) + sorted.each(&b) + end + private def sorted diff --git a/man/gemfile.5.ronn b/man/gemfile.5.ronn index f4772f6d8d..c941463edc 100644 --- a/man/gemfile.5.ronn +++ b/man/gemfile.5.ronn @@ -216,13 +216,13 @@ used on platforms with Ruby 2.3, use: The full list of platforms and supported versions includes: * `ruby`: - 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5 + 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6 * `mri`: - 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5 + 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6 * `mingw`: - 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5 + 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6 * `x64_mingw`: - 2.0, 2.1, 2.2, 2.3, 2.4, 2.5 + 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6 As with groups, you can specify one or more platforms: diff --git a/spec/commands/exec_spec.rb b/spec/commands/exec_spec.rb index 76841dcff6..2e3cb6621e 100644 --- a/spec/commands/exec_spec.rb +++ b/spec/commands/exec_spec.rb @@ -765,10 +765,11 @@ __FILE__: #{path.to_s.inspect} it "overrides disable_shared_gems so bundler can be found" do skip "bundler 1.16.x is not support with Ruby 2.6 on Travis CI" if RUBY_VERSION >= "2.6" + system_gems :bundler file = bundled_app("file_that_bundle_execs.rb") create_file(file, <<-RB) #!#{Gem.ruby} - puts `bundle exec echo foo` + puts `#{system_bundle_bin_path} exec echo foo` RB file.chmod(0o777) bundle! "exec #{file}", :system_bundler => true diff --git a/spec/lock/lockfile_bundler_1_spec.rb b/spec/lock/lockfile_bundler_1_spec.rb index 851fbea99a..e89c5078d9 100644 --- a/spec/lock/lockfile_bundler_1_spec.rb +++ b/spec/lock/lockfile_bundler_1_spec.rb @@ -78,7 +78,7 @@ RSpec.describe "the lockfile format", :bundler => "< 3" do it "does not update the lockfile's bundler version if nothing changed during bundle install", :ruby_repo do version = "#{Bundler::VERSION.split(".").first}.0.0.0.a" - lockfile <<-L + lockfile normalize_uri_file(<<-L) GEM remote: file://localhost#{gem_repo1}/ specs: @@ -94,13 +94,13 @@ RSpec.describe "the lockfile format", :bundler => "< 3" do #{version} L - install_gemfile <<-G + install_gemfile normalize_uri_file(<<-G) source "file://localhost#{gem_repo1}" gem "rack" G - lockfile_should_be <<-G + lockfile_should_be normalize_uri_file(<<-G) GEM remote: file://localhost#{gem_repo1}/ specs: diff --git a/spec/quality_spec.rb b/spec/quality_spec.rb index 812acc344f..ce7058afc0 100644 --- a/spec/quality_spec.rb +++ b/spec/quality_spec.rb @@ -261,7 +261,11 @@ RSpec.describe "The library itself" do end end - expect(last_command.stdboth.split("\n")).to be_well_formed + warnings = last_command.stdboth.split("\n") + # ignore warnings around deprecated Object#=~ method in RubyGems + warnings.reject! {|w| w =~ %r{rubygems\/version.rb.*deprecated\ Object#=~} } + + expect(warnings).to be_well_formed end end end diff --git a/spec/runtime/setup_spec.rb b/spec/runtime/setup_spec.rb index 15dd1fe190..c41738a598 100644 --- a/spec/runtime/setup_spec.rb +++ b/spec/runtime/setup_spec.rb @@ -886,7 +886,9 @@ end end end - it "should succesfully require 'bundler/setup'", :ruby_repo do + # Can't make this pass on 2.6 since the ruby standard library has the same $LOAD_PATH + # entry as bundler (since it's a default gem) + it "should successfully require 'bundler/setup'", :ruby_repo, :ruby => "< 2.6" do install_gemfile "" ENV["GEM_PATH"] = symlinked_gem_home.path diff --git a/spec/support/helpers.rb b/spec/support/helpers.rb index 181dac3220..43bf6af229 100644 --- a/spec/support/helpers.rb +++ b/spec/support/helpers.rb @@ -104,7 +104,7 @@ module Spec bundle_bin = options.delete("bundle_bin") || bindir.join("bundle") if system_bundler = options.delete(:system_bundler) - bundle_bin = "-S bundle" + bundle_bin = system_bundle_bin_path end env = options.delete(:env) || {} diff --git a/spec/support/path.rb b/spec/support/path.rb index 03a96893f3..38f7145dc7 100644 --- a/spec/support/path.rb +++ b/spec/support/path.rb @@ -90,6 +90,10 @@ module Spec tmp("gems/system", *path) end + def system_bundle_bin_path + system_gem_path("bin/bundle") + end + def lib_path(*args) tmp("libs", *args) end |