summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBundlerbot <bot@bundler.io>2018-12-30 03:20:18 +0000
committerColby Swandale <me@colby.fyi>2018-12-30 15:14:11 +1100
commit53e4ffa93c0685357ad7dbe7ab34ad471d742cda (patch)
tree3f9b3f9634fba5e7340b0e3863b327a288fbab91
parenta0ee4cd11d99414d1ef9e9a49c825279fad3aad0 (diff)
downloadbundler-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.yml2
-rw-r--r--bundler.gemspec6
-rw-r--r--lib/bundler/current_ruby.rb1
-rw-r--r--lib/bundler/spec_set.rb28
-rw-r--r--man/gemfile.5.ronn8
-rw-r--r--spec/commands/exec_spec.rb3
-rw-r--r--spec/lock/lockfile_bundler_1_spec.rb6
-rw-r--r--spec/quality_spec.rb6
-rw-r--r--spec/runtime/setup_spec.rb4
-rw-r--r--spec/support/helpers.rb2
-rw-r--r--spec/support/path.rb4
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