diff options
author | JuanitoFatas <katehuang0320@gmail.com> | 2016-08-27 00:12:56 +0800 |
---|---|---|
committer | JuanitoFatas <katehuang0320@gmail.com> | 2016-09-15 17:15:43 +0800 |
commit | c9aa76ad694923674f9486bbdfbf58bc4e6de6e3 (patch) | |
tree | 962ad6765edec99c8db2c030c98778c9f3f8e405 | |
parent | b3cb9516aaf83cf865c9ed76c52ec4d0d182015f (diff) | |
download | bundler-c9aa76ad694923674f9486bbdfbf58bc4e6de6e3.tar.gz |
Support specify engine by symbol in Gemfile
-rw-r--r-- | lib/bundler/ruby_version.rb | 4 | ||||
-rw-r--r-- | spec/bundler/ruby_version_spec.rb | 8 | ||||
-rw-r--r-- | spec/install/gemfile_spec.rb | 29 |
3 files changed, 39 insertions, 2 deletions
diff --git a/lib/bundler/ruby_version.rb b/lib/bundler/ruby_version.rb index 8c050c6d31..ebdefe63fc 100644 --- a/lib/bundler/ruby_version.rb +++ b/lib/bundler/ruby_version.rb @@ -23,8 +23,8 @@ module Bundler @versions = Array(versions) @gem_version = Gem::Requirement.create(@versions.first).requirements.first.last - @input_engine = engine - @engine = engine || "ruby" + @input_engine = engine && engine.to_s + @engine = engine && engine.to_s || "ruby" @engine_versions = (engine_version && Array(engine_version)) || @versions @engine_gem_version = Gem::Requirement.create(@engine_versions.first).requirements.first.last @patchlevel = patchlevel diff --git a/spec/bundler/ruby_version_spec.rb b/spec/bundler/ruby_version_spec.rb index abcd0303d0..e983c18484 100644 --- a/spec/bundler/ruby_version_spec.rb +++ b/spec/bundler/ruby_version_spec.rb @@ -35,6 +35,14 @@ describe "Bundler::RubyVersion and its subclasses" do end end + context "with engine in symbol" do + let(:engine) { :jruby } + + it "should coerce engine to string" do + expect(subject.engine).to eq("jruby") + end + end + context "is called with multiple requirements" do let(:version) { ["<= 2.0.0", "> 1.9.3"] } let(:engine_version) { nil } diff --git a/spec/install/gemfile_spec.rb b/spec/install/gemfile_spec.rb index 98abc30c86..c32edb2e54 100644 --- a/spec/install/gemfile_spec.rb +++ b/spec/install/gemfile_spec.rb @@ -66,4 +66,33 @@ describe "bundle install" do expect(out).to match(/You passed :lib as an option for gem 'rack', but it is invalid/) end end + + context "with engine specified in symbol" do + it "does not raise any error parsing Gemfile" do + simulate_ruby_version "2.3.0" do + simulate_ruby_engine "jruby", "9.1.2.0" do + install_gemfile! <<-G + source "https://rubygems.org" + ruby "2.3.0", :engine => :jruby, engine_version: "9.1.2.0" + G + + expect(out).to match(/Bundle complete!/) + end + end + end + + it "installation succeeds" do + simulate_ruby_version "2.3.0" do + simulate_ruby_engine "jruby", "9.1.2.0" do + install_gemfile! <<-G + source "file://#{gem_repo1}" + ruby "2.3.0", :engine => :jruby, engine_version: "9.1.2.0" + gem "rack" + G + + expect(the_bundle).to include_gems "rack 1.0.0" + end + end + end + end end |