Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"pronto run" failed (Errno::ENOENT) if cwd is a "git worktree" #358

Closed
arika opened this issue Sep 29, 2019 · 2 comments
Closed

"pronto run" failed (Errno::ENOENT) if cwd is a "git worktree" #358

arika opened this issue Sep 29, 2019 · 2 comments
Labels

Comments

@arika
Copy link

arika commented Sep 29, 2019

$ pronto run -c develop
Traceback (most recent call last):
	21: from /.../.rbenv/versions/2.5.3/bin/pronto:23:in `<main>'
	20: from /.../.rbenv/versions/2.5.3/bin/pronto:23:in `load'
	19: from /.../.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/pronto-0.10.0/bin/pronto:6:in `<top (required)>'
	18: from /.../.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/thor-0.20.3/lib/thor/base.rb:466:in `start'
	17: from /.../.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/thor-0.20.3/lib/thor.rb:387:in `dispatch'
	16: from /.../.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/thor-0.20.3/lib/thor/invocation.rb:126:in `invoke_command'
	15: from /.../.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/thor-0.20.3/lib/thor/command.rb:27:in `run'
	14: from /.../.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/pronto-0.10.0/lib/pronto/cli.rb:64:in `run'
	13: from /.../.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/pronto-0.10.0/lib/pronto/cli.rb:64:in `chdir'
	12: from /.../.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/pronto-0.10.0/lib/pronto/cli.rb:66:in `block in run'
	11: from /.../.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/pronto-0.10.0/lib/pronto.rb:64:in `run'
	10: from /.../.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/pronto-0.10.0/lib/pronto/runners.rb:13:in `run'
	 9: from /.../.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/pronto-0.10.0/lib/pronto/runners.rb:13:in `each'
	 8: from /.../.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/pronto-0.10.0/lib/pronto/runners.rb:20:in `block in run'
	 7: from /.../.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/pronto-brakeman-0.10.0/lib/pronto/brakeman.rb:7:in `run'
	 6: from /.../.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/pronto-0.10.0/lib/pronto/runner.rb:27:in `ruby_patches'
	 5: from /.../.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/pronto-0.10.0/lib/pronto/runner.rb:27:in `select'
	 4: from /.../.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/pronto-0.10.0/lib/pronto/runner.rb:27:in `block in ruby_patches'
	 3: from /.../.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/pronto-0.10.0/lib/pronto/runner.rb:31:in `ruby_file?'
	 2: from /.../.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/pronto-0.10.0/lib/pronto/runner.rb:50:in `ruby_executable?'
	 1: from /.../.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/pronto-0.10.0/lib/pronto/runner.rb:50:in `open'
/.../.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/pronto-0.10.0/lib/pronto/runner.rb:50:in `initialize': No such file or directory @ rb_sysopen - /.../work/test-proj/.git/worktrees/Gemfile (Errno::ENOENT)

I guess that Pronto::Git::Patch#new_file_full_path may return unexpected value for Pronto::Runner.

$ cd /tmp
$ git clone https://github.com/prontolabs/pronto.git
$ cd pronto
$ bundle
$ git worktree add ../t
$ echo '# test' >> Gemfile
$ echo '# test' >> ../t/Gemfile
$ bundle exec ruby -Ilib -rpronto -e 'Pronto::Git::Repository.new(".").diff(:unstaged).each {|p| p p.new_file_full_path }'
#<Pathname:/tmp/pronto/Gemfile>
$ bundle exec ruby -Ilib -rpronto -e 'Dir.chdir("../t"); Pronto::Git::Repository.new(".").diff(:unstaged).each {|p| p p.new_file_full_path }'
#<Pathname:/tmp/pronto/.git/worktrees/Gemfile>

When I apply the following patch, new_file_full_path returns #<Pathname:/tmp/t/Gemfile>.

--- a/lib/pronto/git/repository.rb
+++ b/lib/pronto/git/repository.rb
@@ -46,7 +46,7 @@ def commits_until(sha)
       end

       def path
-        Pathname.new(@repo.path).parent
+        Pathname.new(@repo.workdir)
       end

       def blame(path, lineno)
@doomspork
Copy link
Member

@arika would you be open to submitting a fix?

@doomspork doomspork added the bug label Oct 23, 2019
@arika
Copy link
Author

arika commented Apr 1, 2021

fixed at 2803d4b 😃

@arika arika closed this as completed Apr 1, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants