The src/bsoncxx/test/new_tests.cpp file with main doesn't return the catch test result as the exit status. To the build system it will always appear to succeed even when bsoncxx tests are failing.
Here is an example from work-in-progress test-driven development:
$ ninja test [0/1] Running tests... Test project /Users/david/git/mongo/cxx-driver/build Start 1: bson 1/3 Test #1: bson ............................. Passed 0.12 sec Start 2: driver 2/3 Test #2: driver ........................... Passed 1.11 sec Start 3: instance 3/3 Test #3: instance ......................... Passed 0.02 sec 100% tests passed, 0 tests failed out of 3 Total Test time (real) = 1.24 sec $ ./src/bsoncxx/test/test_bson ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ test_bson is a Catch v1.0 b53 host application. Run with -? for options ------------------------------------------------------------------------------- [] can reach into mixed nested arrays and documents throws on invalid ------------------------------------------------------------------------------- ../src/bsoncxx/test/bson_get_values.cpp:129 ............................................................................... ../src/bsoncxx/test/bson_get_values.cpp:177: FAILED: REQUIRE_THROWS( doc["ints"]["badKey"]["anything"] ) because no exception was thrown where one was expected: =============================================================================== test cases: 59 | 58 passed | 1 failed assertions: 22543 | 22542 passed | 1 failed
The bsoncxx test CMakeLists.txt should be modified to match the mongocxx test CMakeLists.txt file which links the main.cpp file in the catch directory.