Closed terlar closed 5 years ago
Okay then.
Now, is this variable supposed to be mutually exclusive with the use of docker or vagrant?
I guess so, or there could perhaps be a case where someone wants to run with a relative path inside Docker and Vagrant. I haven't looked into how the command for those are constructed, but if it is just a simple command + path I guess there is a case where you could rely on the workdir inside the container/vagrant and then use a relative path.
Hi, this change would also be useful to me (I'm running in Vagrant but through a custom script that does things like setting up RVM correctly, so can't use the normal Vagrant support). This change looks good to me and looks almost exactly like the one I made in my local tree as a workaround. Would be great if it could be merged :-) Thanks for a really useful package!
@jscheid So have you tried this exact code?
I was wondering whether the code paths could be united, like if rspec is run from the project-root directory within both vagrant and docker environments, they could just use relative paths as well. The use case for absolute paths is less clear to me overall.
I haven't run this branch but my workaround looks pretty much the same, except it's not configurable:
(defun rspec--shell-quote-local (file)
(let ((remote (file-remote-p file))
(docker (rspec-docker-p))
(vagrant (rspec-vagrant-p)))
(shell-quote-argument
(cond
(remote (substring file (length remote)))
(docker (replace-regexp-in-string (regexp-quote (rspec-project-root))
rspec-docker-cwd file))
(vagrant (replace-regexp-in-string (regexp-quote (rspec-project-root))
rspec-vagrant-cwd file))
(t
(file-relative-name file (rspec-project-root)))))))
I agree with you that relative paths could be hardwired to replace absolute paths like in my workaround, I don't recall ever using absolute paths with rspec.
OK, thank you.
I'll merge this now, hopefully someone will have time to look into just using relative paths later.
Sometimes it is not feasible to use the full path, either when using bin-stub wrappers going to docker images and other cases. This provides an option to opt-out from the absolute paths.
My current use case is bin-stubs that take care of executing the tests within docker through
docker exec
to achieve faster speeds. I guess one option would be to setrspec-docker-cwd
andrspec-docker-command
but it is nice to have something that works everywhere without special config.