[bundler/bundler] Fix open default gem error

https://github.com/bundler/bundler/commit/792d724752
This commit is contained in:
Zehan Zhao 2016-08-15 22:44:19 +08:00 коммит произвёл Hiroshi SHIBATA
Родитель 98841b2b19
Коммит d80f5399ad
2 изменённых файлов: 22 добавлений и 5 удалений

Просмотреть файл

@ -15,11 +15,15 @@ module Bundler
return Bundler.ui.info("To open a bundled gem, set $EDITOR or $BUNDLER_EDITOR") unless editor
return unless spec = Bundler::CLI::Common.select_spec(name, :regex_match)
path = spec.full_gem_path
Dir.chdir(path) do
command = Shellwords.split(editor) + [path]
Bundler.with_original_env do
system(*command)
end || Bundler.ui.info("Could not run '#{command.join(" ")}'")
if spec.default_gem?
Bundler.ui.info "Unable to open #{name} because it's a default gem, so the directory it would normally be installed to does not exist."
else
Dir.chdir(path) do
command = Shellwords.split(editor) + [path]
Bundler.with_original_env do
system(*command)
end || Bundler.ui.info("Could not run '#{command.join(" ")}'")
end
end
end
end

Просмотреть файл

@ -91,4 +91,17 @@ RSpec.describe "bundle open" do
expect(out).not_to include("BUNDLE_GEMFILE=")
end
end
context "when opening a default gem" do
before do
install_gemfile <<-G
gem "json"
G
end
it "throws proper error when trying to open default gem" do
bundle "open json", :env => { "EDITOR" => "echo editor", "VISUAL" => "echo visual", "BUNDLER_EDITOR" => "echo bundler_editor" }
expect(out).to include("Unable to open json because it's a default gem, so the directory it would normally be installed to does not exist.")
end
end
end