mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
[rubygems/rubygems] Show a proper error if gem path is not writable
Instead of showing the bug report place with an error at a randome place. https://github.com/rubygems/rubygems/commit/241854ce73
This commit is contained in:
parent
f6d1909500
commit
00412be204
3 changed files with 47 additions and 3 deletions
|
@ -75,10 +75,22 @@ module Bundler
|
|||
end
|
||||
end
|
||||
|
||||
def permission_type
|
||||
case @permission_type
|
||||
when :create
|
||||
"executable permissions for all parent directories and write permissions for `#{parent_folder}`"
|
||||
else
|
||||
"#{@permission_type} permissions for that path"
|
||||
end
|
||||
end
|
||||
|
||||
def parent_folder
|
||||
File.dirname(@path)
|
||||
end
|
||||
|
||||
def message
|
||||
"There was an error while trying to #{action} `#{@path}`. " \
|
||||
"It is likely that you need to grant #{@permission_type} permissions " \
|
||||
"for that path."
|
||||
"It is likely that you need to grant #{permission_type}."
|
||||
end
|
||||
|
||||
status_code(23)
|
||||
|
|
|
@ -19,7 +19,9 @@ module Bundler
|
|||
FileUtils.rm_rf gem_dir
|
||||
FileUtils.rm_rf spec.extension_dir
|
||||
|
||||
FileUtils.mkdir_p gem_dir, :mode => 0o755
|
||||
SharedHelpers.filesystem_access(gem_dir, :create) do
|
||||
FileUtils.mkdir_p gem_dir, :mode => 0o755
|
||||
end
|
||||
|
||||
extract_files
|
||||
|
||||
|
|
|
@ -678,6 +678,36 @@ RSpec.describe "bundle install with gem sources" do
|
|||
end
|
||||
end
|
||||
|
||||
describe "when bundle gems path does not have write access", :permissions do
|
||||
let(:gems_path) { bundled_app("vendor/#{Bundler.ruby_scope}/gems") }
|
||||
|
||||
before do
|
||||
FileUtils.mkdir_p(gems_path)
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem 'rack'
|
||||
G
|
||||
end
|
||||
|
||||
it "should display a proper message to explain the problem" do
|
||||
FileUtils.chmod("-x", gems_path)
|
||||
bundle "config set --local path vendor"
|
||||
|
||||
begin
|
||||
bundle :install, :raise_on_error => false
|
||||
ensure
|
||||
FileUtils.chmod("+x", gems_path)
|
||||
end
|
||||
|
||||
expect(err).not_to include("ERROR REPORT TEMPLATE")
|
||||
|
||||
expect(err).to include(
|
||||
"There was an error while trying to create `#{gems_path.join("rack-1.0.0")}`. " \
|
||||
"It is likely that you need to grant executable permissions for all parent directories and write permissions for `#{gems_path}`."
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
describe "when bundle cache path does not have write access", :permissions do
|
||||
let(:cache_path) { bundled_app("vendor/#{Bundler.ruby_scope}/cache") }
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue