atf-c++ vs GoogleTest vs share/mk

Alan Somers asomers at
Wed Feb 27 18:05:48 UTC 2019

So it turns out to be impossible to use GoogleMock with atf-c++.  The
problem is that atf-c++'s only way to report a test failure is
ATF_FAIL, which immediately terminates the program on failure.  That
conflicts with the way that GoogleMock uses pthreads, which is to
report a failure while a pthread mutex is locked.  atf-c++ has many
other shortcomings, too.  It lacks the ATF_CHECK_* macros, and its
syntax is surprisingly inconsistent with atf-c's.

So I tried writing a C++ program that uses atf-c instead.  But the
Makefiles in share/mk make that a frustrating proposition.  They don't
want C++ programs to link to atf-c, and they don't want atf-c programs
to be built in C++ mode.

Googletest would probably work fine, but I would sorely miss ATF's
test case isolation features.

So what should I do?  Should I fix atf-c++?  That would entail
basically copying over everything from atf-c, which would be a lot of
work.  Or should I hack to allow C++ programs to use
atf-c?  That would be ugly, but easier.  Or should I just switch to
Googletest, and live with its fragile cleanup handlers?


More information about the freebsd-testing mailing list