summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Giddins <segiddins@segiddins.me>2017-02-01 12:11:07 -0600
committerSamuel Giddins <segiddins@segiddins.me>2017-02-01 12:11:07 -0600
commit33088f63de90b33e920bd4238bdc157b1db2300b (patch)
tree6db3a95d669226debc70d161e76740de0a86df27
parent8c0cbf3c03a56b8cdfeaba2558c35f461608b287 (diff)
downloadbundler-33088f63de90b33e920bd4238bdc157b1db2300b.tar.gz
[RubyVersion] Ensure passed-in versions are valid during init
-rw-r--r--lib/bundler/ruby_version.rb2
-rw-r--r--spec/install/gemfile/ruby_spec.rb20
2 files changed, 21 insertions, 1 deletions
diff --git a/lib/bundler/ruby_version.rb b/lib/bundler/ruby_version.rb
index ebdefe63fc..6fd65b5c12 100644
--- a/lib/bundler/ruby_version.rb
+++ b/lib/bundler/ruby_version.rb
@@ -21,7 +21,7 @@ module Bundler
# must not be specified, or the engine version
# specified must match the version.
- @versions = Array(versions)
+ @versions = Array(versions).map {|v| Gem::Requirement.parse(v).last }
@gem_version = Gem::Requirement.create(@versions.first).requirements.first.last
@input_engine = engine && engine.to_s
@engine = engine && engine.to_s || "ruby"
diff --git a/spec/install/gemfile/ruby_spec.rb b/spec/install/gemfile/ruby_spec.rb
index 3f8957916b..cff3384298 100644
--- a/spec/install/gemfile/ruby_spec.rb
+++ b/spec/install/gemfile/ruby_spec.rb
@@ -86,4 +86,24 @@ RSpec.describe "ruby requirement" do
expect(the_bundle).to include_gems "rack 1.0.0"
expect(locked_ruby_version.versions).to eq(["5100"])
end
+
+ it "allows requirements with trailing whitespace" do
+ install_gemfile! <<-G
+ source "file://#{gem_repo1}"
+ ruby "#{Gem.ruby_version}\\n \t\\n"
+ gem "rack"
+ G
+
+ expect(the_bundle).to include_gems "rack 1.0.0"
+ end
+
+ it "fails gracefully with malformed requirements" do
+ install_gemfile <<-G
+ source "file://#{gem_repo1}"
+ ruby ">= 0", "-.\\0"
+ gem "rack"
+ G
+
+ expect(out).to include("There was an error parsing") # i.e. DSL error, not error template
+ end
end