Do not use static initialization in CxxTest runner (#2293)
authorAndres Noetzli <andres.noetzli@gmail.com>
Fri, 10 Aug 2018 22:23:21 +0000 (15:23 -0700)
committerGitHub <noreply@github.com>
Fri, 10 Aug 2018 22:23:21 +0000 (15:23 -0700)
commitc9ad9015ac941f5fe5c99d7234fe74cbd40da030
treed74bce7b99fe02ade5dc05a98e530100adeae6e7
parent0a02fd2b69c0c0f454fc33d8028b24f4fcf431de
Do not use static initialization in CxxTest runner (#2293)

The static initialization in the CxxTest runner was causing problems
when having `std::unique_ptr`s in test classes. When the ExprManager's
deconstructor is called, we count on certain static objects to be around
(e.g.
https://github.com/CVC4/CVC4/blob/0a02fd2b69c0c0f454fc33d8028b24f4fcf431de/src/expr/attribute_internals.h#L508).
If the ExprManager is (indirectly) owned by a `std::unique_ptr` in a
static class, however, there are no such guarantees as the destruction
order of static objects is not defined. This commit adds a flag for
CxxTest to not use static initialization in the test runner, which
solves the issue.  Additionally, the commit fixes a warning about a
missing virtual deconstructor in ParserBlack that came up after using
the new flags.

This fixes an issue reported in the nightly builds.
test/unit/Makefile.am
test/unit/parser/parser_black.h