summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThe Bundler Bot <bot@bundler.io>2017-02-08 15:43:35 +0000
committerSamuel Giddins <segiddins@segiddins.me>2017-02-12 15:28:51 -0800
commitd924fe3ed3414f58403f2ef3842e46f39ddfde14 (patch)
treeb64bca2d7900f77f8e9f265157cd69f7b8eb7a91
parent8f042a4240330cc5262dfb2af73f5cb05a94cefb (diff)
downloadbundler-d924fe3ed3414f58403f2ef3842e46f39ddfde14.tar.gz
Auto merge of #5391 - bundler:seg-ruby-version-requirement-valid, r=indirect
[RubyVersion] Ensure passed-in versions are valid during init Closes #5380 (cherry picked from commit 427f07f77f414f43d693c87c104546af3d9fe984)
-rw-r--r--lib/bundler/ruby_version.rb6
-rw-r--r--spec/install/gemfile/ruby_spec.rb20
2 files changed, 25 insertions, 1 deletions
diff --git a/lib/bundler/ruby_version.rb b/lib/bundler/ruby_version.rb
index ebdefe63fc..f0a001d296 100644
--- a/lib/bundler/ruby_version.rb
+++ b/lib/bundler/ruby_version.rb
@@ -21,7 +21,11 @@ module Bundler
# must not be specified, or the engine version
# specified must match the version.
- @versions = Array(versions)
+ @versions = Array(versions).map do |v|
+ op, v = Gem::Requirement.parse(v)
+ op == "=" ? v.to_s : "#{op} #{v}"
+ end
+
@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 1adbf10833..15ad082f19 100644
--- a/spec/install/gemfile/ruby_spec.rb
+++ b/spec/install/gemfile/ruby_spec.rb
@@ -86,4 +86,24 @@ 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 "#{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