-
Notifications
You must be signed in to change notification settings - Fork 17
Description
I would propose a few changes to the test system:
-
Building tests creates new files in the repository.
Since building a
*.cpp.cmakefile results in copying the file to*.cppand inserting the types, it adds these files to the repo which doesn't seem to be a good style. Also changes to bits.hpp, uint128.hpp and structure_tree.hpp whenever including the library, make it confusing when working on library and committing code (but this is a separate issue). This could be fixed easily by only having one test suite (see my next point) and moving the types from*.typedefinto*.cppwhich would make*.cpp.cmakefiles obsolete.
Here is a short article on separating build directories from the source folder. -
There are currently two test suites (test-sdsl and test-full-sdsl)
I don't see a good reason for having a sparse test set. Changes in the library will in most cases be covered by a single typed test case (for debugging and local testing) and when a pull request is opened, the full test set should be run by CI anyway. I would propose to merge all types (and input files) into one test suite, include ccache for caching builds on TravisCI (which would reduce the build time further) and if necessary, ask TravisCI for an extension of the max. build time (last time we checked they did it for free for open source projects). We would then also include the SDSL in our Jenkins CI (for nightly builds and pull requests) which does not have a time limit.
-
Building and execution of tests is currently done in an interleaved fashion
When changes in the code somewhere results in a compiler error, it probably should be fixed first before one might start debugging runtime errors elsewhere.
-
One test execution failing prevents building (and executing the rest of the test suite)
Even if the tests wouldn't be interleaved anymore, it would be great if all tests were built and executed (even if some of them failed) to have a summary in the end which test cases are broken (in terms of compilation and runtime erorrs).
What are your views on this? I can prepare a pull request for this if you're interested/agree with these points. :-)