Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Findings:
The error for an empty work tree isn't great, and should perhaps
not be an error at all.
It would be nice to use a C++ wrapper library. Writing this in C style
is a little unpleasant. Would make sense to use that in the main code
as well, unless we want to keep the untested build from source closure
small and not vendor the wrapper.
An example of such a wrapper is https://github.com/AndreyG/libgit2cpp
Alternatively, we might do a lightweight wrapper of our own that only
adds constructors and destructors.
Alternatively, we could use a store-only CLI command to test fetchers.
This won't let us test the intricacies of laziness, but does simplify
the setup of such things as git repositories by an order of magnitude.
In this case, I'd keep the test suite around for tests that are specific
to the input accessor methods, insofar as those aren't covered by the
such CLI-based tests.
Nix couldn't find a suitable
getCacheDir()
when run in the sandbox.I think a fixed location in
/tmp
is a sensible behavior in this case.