Add interface to get run and test deps #98
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.
Since tests are identified as a single command, dependencies for tests and run are implicitly assumed to be the same as for the Build step, including the target binary. This is, however not correct because it doesn't account for the fact that we may want to use a different test runner or some additional target that must be compiled before testing, but not necessarily in the build step of the target.
With this purpose this change introduces an extendedTestInterface and extendedRunInteface where the user may also specify a TestDeps() or RunDeps() function to get the dependencies of the test/run step.
I have made the decision of creating a new interface rather than extending the exiting one because:
a) Not all targets may have additional dependencies.
b) By creating a breaking change in the interface we could potentially miss some run/test targets that now don't satisfy the new interface and therefore it is silently ignored. I find this is a bit of a design issue in rules (or in golang, actually) that does not allow us to say:
I want this target to implement interface X
, and rather relies on the methods existing.