atf-c++ vs GoogleTest vs share/mk
Enji Cooper
yaneurabeya at gmail.com
Wed Feb 27 20:53:50 UTC 2019
> On Feb 27, 2019, at 12:42 PM, Alan Somers <asomers at freebsd.org> wrote:
>
> On Wed, Feb 27, 2019 at 12:46 PM Enji Cooper <yaneurabeya at gmail.com> wrote:
>>
>>
>>> On Feb 27, 2019, at 9:59 AM, Alan Somers <asomers at freebsd.org> wrote:
>>>
>>> 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.
>>
>> Yes, I’ve brought that up before in the past. This is part of the reason why I want to abandon/kill off atf-c++ in favor of something more functionally complete, i.e., googletest
>>
>>> 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.
>>
>> Well… yeah. This makes sense.
>>
>>> Googletest would probably work fine, but I would sorely miss ATF's
>>> test case isolation features.
>>
>> In what ways? Using plain tests builds in some level of isolation, but it’s not perfect, and this is the direction I’m taking Googletest for a first iteration.
>
> Having $PWD be a disposable tmpdir is convenient,
This is already handled via kyua, just like it is with plain tests (and ATF and TAP tests for that matter).
> but I'm even more concerned about what happens if a googletest segfaults. In that case,
> its cleanup routines won't run. That could potentially be
> catastrophic for the entire test run if the test program does
> something like alter network configuration. Or do you have a plan for
> this?
I will look into how Googletest currently handles segfaults, etc, and raise that as a point of concern with the upstream project if need be, as I don’t know how exactly this is handled in exceptional cases.
Cheers,
-Enji
More information about the freebsd-testing
mailing list