Skip to content

Commit

Permalink
Fix relativizing directory on non-path remotes
Browse files Browse the repository at this point in the history
Appraisal was creating invalid lock files, because paths weren't being
relatived correctly. e.g.:

    remote: https://github.com/thoughtbot..raisal

Instead of:

    remote: https://github.com/thoughtbot/appraisal

This PR solves this issue by replacing only the absolute paths that are
preceded by a space.
  • Loading branch information
aymeric-ledorze authored and nickcharlton committed Feb 6, 2023
1 parent 0c855ae commit f31bc34
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 1 deletion.
5 changes: 4 additions & 1 deletion lib/appraisal/appraisal.rb
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,10 @@ def relativize
lockfile_content = File.read(lockfile_path)

File.open(lockfile_path, 'w') do |file|
file.write lockfile_content.gsub(/#{current_directory}/, relative_path.to_s)
file.write lockfile_content.gsub(
/ #{current_directory}/,
" #{relative_path}",
)
end
end

Expand Down
20 changes: 20 additions & 0 deletions spec/acceptance/cli/install_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,26 @@
not_to include(current_directory)
end

it "does not relativize directory of uris in gemfile.lock" do
build_gemspec
add_gemspec_to_gemfile

build_git_gem("uri_dummy")
uri_dummy_path = "#{current_directory}/uri_dummy"
FileUtils.symlink(File.absolute_path("tmp/gems/uri_dummy"), uri_dummy_path)

build_appraisal_file <<-APPRAISAL
appraise '1.0.0' do
gem 'uri_dummy', git: 'file://#{uri_dummy_path}'
end
APPRAISAL

run "appraisal install"

expect(content_of("gemfiles/1.0.0.gemfile.lock")).
to include("file://#{uri_dummy_path}")
end

context 'with job size', :parallel => true do
before do
build_appraisal_file <<-Appraisal
Expand Down

0 comments on commit f31bc34

Please sign in to comment.