diff options
author | Samuel Giddins <segiddins@segiddins.me> | 2017-02-01 12:11:07 -0600 |
---|---|---|
committer | Samuel Giddins <segiddins@segiddins.me> | 2017-02-01 12:11:07 -0600 |
commit | 33088f63de90b33e920bd4238bdc157b1db2300b (patch) | |
tree | 6db3a95d669226debc70d161e76740de0a86df27 | |
parent | 8c0cbf3c03a56b8cdfeaba2558c35f461608b287 (diff) | |
download | bundler-33088f63de90b33e920bd4238bdc157b1db2300b.tar.gz |
[RubyVersion] Ensure passed-in versions are valid during init
-rw-r--r-- | lib/bundler/ruby_version.rb | 2 | ||||
-rw-r--r-- | spec/install/gemfile/ruby_spec.rb | 20 |
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 |