test.vim: more efficient compiling of test files #1317
Merged
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.
This change improves the way we compile a Go test. Previously we would
build a test binary to catch any build errors. A callback was then
responsible to delete the test binary after showing build errors (if
there were any).
This could be racy though, because if the tests lasts long and we quit
early, the callback to clean the binary file would never run. So we
would end up with artifacts in our working directory.
To fix the issue we're going to tell to the
go
tool to run a specific,unique function. We're passing a unique identifier as a function name
(which is a randomly generated), i.e:
This will cause the go tool to build
the test file and then try to run the test function. Because there is no
such test function, it'll silently quit with zero exit status. As a side
effect it'll compile the test file, so we're able to catch any build
errors (if any)
fixes #907