summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuanitoFatas <katehuang0320@gmail.com>2016-08-27 00:12:56 +0800
committerJuanitoFatas <katehuang0320@gmail.com>2016-09-15 17:15:43 +0800
commitc9aa76ad694923674f9486bbdfbf58bc4e6de6e3 (patch)
tree962ad6765edec99c8db2c030c98778c9f3f8e405
parentb3cb9516aaf83cf865c9ed76c52ec4d0d182015f (diff)
downloadbundler-c9aa76ad694923674f9486bbdfbf58bc4e6de6e3.tar.gz
Support specify engine by symbol in Gemfile
-rw-r--r--lib/bundler/ruby_version.rb4
-rw-r--r--spec/bundler/ruby_version_spec.rb8
-rw-r--r--spec/install/gemfile_spec.rb29
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