diff options
author | The Bundler Bot <bot@bundler.io> | 2017-02-08 15:43:35 +0000 |
---|---|---|
committer | Samuel Giddins <segiddins@segiddins.me> | 2017-02-12 15:28:51 -0800 |
commit | d924fe3ed3414f58403f2ef3842e46f39ddfde14 (patch) | |
tree | b64bca2d7900f77f8e9f265157cd69f7b8eb7a91 | |
parent | 8f042a4240330cc5262dfb2af73f5cb05a94cefb (diff) | |
download | bundler-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.rb | 6 | ||||
-rw-r--r-- | spec/install/gemfile/ruby_spec.rb | 20 |
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 |