Hi, being able to iterate more rapidly on tests sounds great.
I am slightly unsure about the cost of (i) linking even more binaries, and (ii) the overhead of setting up the test environment for the invocations of test binaries (I believe this was O(100ms) per `main` at some point). I believe if one doesn't mind working with uncommitted changes one could already now get half-way to you spot you desire by removing `SOURCE` dependencies one doesn't care about from `mesos_tests`. At that point all one is left with is the test case, the file containing the test `main`, and infrastructure pieces. Since in the past we weren't super careful about cutting these parts into components, figuring out the infrastructure code one actually needs can be a bit tricky (and one would likely err on the side of pulling in more than needed). I think a slightly less disruptive and possibly incremental plan would be to (1) clearly separate on the source level always-required infrastructure functions and classes from more specific pieces, and (2) possibly moving related pieces to convenience libraries. With that it should be possible to quickly define new test programs with slimmed down dependencies while working on a feature. If we wanted we would still be able to add these to a single project-wide binary like we do now when actually committing. I think all work in this direction would be strictly cleanup, and could be done without requiring us to change the way we perform tests, but along the way lay the foundation for e.g., multiple test binaries, or allow us to expose parts of the test infrastructure to outside users (e.g., tests of modules). b.
