These tests pass consistently with make check but fail ninja check consistently with the following setup:
gcc 8.1.0 clang 7.0.1 boost 1.58.0
The failure occurs at step i = 9, where registerPoll() is called, setting inflight to 10
and then immediately after, the call to shouldPoll() returns false.
Based on reading of the test, it seems clear that shouldPoll() should be evaluated before registerPoll() is called, but apparently compiler differences evaluate the BOOST_CHECK_EQUAL macro differently.
Before writing this diff, I attempted to write the test in such a way as to evaluate registerPoll() and shouldPoll(), in that order, in intermediate variables, as this is the expected order of evaluation when reading the BOOST_CHECK_EQUAL call. This test fails for ninja and make as expected:
- BOOST_CHECK_EQUAL(vrinflight.registerPoll(), vrinflight.shouldPoll()); + bool rp = vrinflight.registerPoll(); + bool sp = vrinflight.shouldPoll(); + BOOST_CHECK_EQUAL(rp, sp);