On 10/11/2024 9:47 AM, Rebecca Cran wrote:
I don't know, but I saw a message from Mike recently saying that someone should use 'static' instead of 'STATIC' - so we need to make a clear decision one way or the other.



The problem here is for GoogleTest. In CMocka, if you want to unit test
a static function, regardless of STATIC vs static, you can include the C
file under test in the CMocka test file. Not necessarily the most
elegant solution, but it works.

In GoogleTest, you often cannot directly include the C file in the
GoogleTest file, because C++ complains about many Cisms, mostly
our use of casting. And I definitely don't think we should update
the entire codebase to support compiling under C++ :). Mike, Sean,
and I had a discussion on a Project Mu PR where I undef'd STATIC
while building GoogleTest modules so that static functions could
be unit tested there, too. Also not the most elegant of solutions.

If we switch to "static", we lose the ability to unit test static
functions under GoogleTest in many cases. I don't know if GoogleTest
has some other solution for this, but I don't think so. It may be we
say, yep, that's the limitation of GoogleTest, add it to the
UnitTestFrameworkPkg README, if you need to unit test a static
function, do it in CMocka. But that seems lame, also.

I do believe that unit testing static functions is critical. We should
be doing interface level testing, as well, where static functions are
hidden from us, but there is great value in ensuring each piece of your
code is working as intended from the inside.

Mike, do you have further thoughts here?

Thanks,
Oliver



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#120620): https://edk2.groups.io/g/devel/message/120620
Mute This Topic: https://groups.io/mt/108941574/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to