
On 2007-09-19, David Abrahams <dave@boost-consulting.com> wrote:
Given an explicit representation of library dependencies we can, based on the directories containing changed files, quickly compute all the libraries whose tests need to be run and avoid evaluating the Jamfiles of other libraries.
Could we possibly use some dependency scanner, e.g. like in scons, that dynamically finds dependencies rather than requiring that they be explicit? If I understand, the explicit dependency statements you're talking about are really already expressed in the header-inclusion tree. Since the tests also (I assume) include the headers of the things they test, determining which tests to run after you make some changes is really just a question of including the tests themselves in the dependency calculations. That is, make the running of the tests contingent upon their needing to be rebuilt (due to either dependency changes or actual test changes). The main benefit of this approach, of course, is that the decision to run a test is fully automated and (assuming the scanner is correct) thorough. There is no risk that the explicit dependency statements are over- or under-specified. The downsides are that the scanning may take time (though not much, in my experience) and that you have to write a (potentially quite) complex scanner. It would also, of course, complicate the build system to some degree. -- Austin Bingham