<feed xmlns='http://www.w3.org/2005/Atom'>
<title>Tianocore/edk2.git/UnitTestFrameworkPkg, branch trunk</title>
<subtitle>EDK II (mirror)</subtitle>
<id>https://git.radix-linux.su/Tianocore/edk2.git/atom?h=trunk</id>
<link rel='self' href='https://git.radix-linux.su/Tianocore/edk2.git/atom?h=trunk'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/'/>
<updated>2024-06-04T03:43:08+00:00</updated>
<entry>
<title>Renormalized end-of-lines from master@27b044605cd5f6b33a3d231576003850b3fe305b</title>
<updated>2024-06-04T03:43:08+00:00</updated>
<author>
<name>kx</name>
<email>kx@radix.pro</email>
</author>
<published>2024-06-04T03:43:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=7e2ccccace24636f29ddc210b94606abd4c7e42b'/>
<id>urn:sha1:7e2ccccace24636f29ddc210b94606abd4c7e42b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>UnitTestFrameworkPkg: Add DSC and host tests that always fail</title>
<updated>2024-02-14T02:37:16+00:00</updated>
<author>
<name>Michael D Kinney</name>
<email>michael.d.kinney@intel.com</email>
</author>
<published>2024-02-03T01:17:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=a1c426e8440b55ee12d92cefa7114fd6f7b599cb'/>
<id>urn:sha1:a1c426e8440b55ee12d92cefa7114fd6f7b599cb</id>
<content type='text'>
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4683

Add sample unit tests that always fail or generate unexpected
exceptions along with a new DSC file to build the unit tests
that always fail or generate unexpected exceptions. This can
be used to verify the log information on failures is accurate
and provides the correct information to determine the source
of the unit test failure.

Divide by zero is used to generate unexpected exceptions.  The
compiler warnings for divide by zero are disables for the unit
tests that generate divide by zero exceptions on purpose.

These tests are not added to CI because CI would always fail.

The UnitTestFrameworkPkg.ci.yaml file is updated to ignore the
INF files for host-based testing that always fail.

Cc: Michael Kubacki &lt;mikuback@linux.microsoft.com&gt;
Cc: Sean Brogan &lt;sean.brogan@microsoft.com&gt;
Signed-off-by: Michael D Kinney &lt;michael.d.kinney@intel.com&gt;
Reviewed-by: Michael Kubacki &lt;michael.kubacki@microsoft.com&gt;
</content>
</entry>
<entry>
<title>UnitTestFrameworkPkg/SampleGoogleTest: Use EXPECT_ANY_THROW()</title>
<updated>2024-02-14T02:37:16+00:00</updated>
<author>
<name>Michael D Kinney</name>
<email>michael.d.kinney@intel.com</email>
</author>
<published>2024-02-03T01:15:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=0a989069df1f00f9ca1b6968c91c5c9bc01a0198'/>
<id>urn:sha1:0a989069df1f00f9ca1b6968c91c5c9bc01a0198</id>
<content type='text'>
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4683

Update GoogleTest samples to use EXPECT_ANY_THROW() instead
of ASSERT_DEATH(). ASSERT_DEATH() is a very slow method to
detect an expected ASSERT() condition. Throwing an exception
from ASSERT() and using EXPECT_ANY_THROW() is several orders
of magnitude faster.

Update GoogleTest sample with example of using EXPECT_THROW()
and EXPECT_THAT() to check for more specific ASSERT() conditions
that allow unit test cases to test functions that contain
more than one ASSERT() statement and verify that the expected
ASSERT() is the one that was actually triggered.

Update library mappings so target-based unit tests use
UnitTestDebugAssertLib.inf and host-based unit tests use
UnitTestDebugAssertLibHost.inf

Cc: Michael Kubacki &lt;mikuback@linux.microsoft.com&gt;
Cc: Sean Brogan &lt;sean.brogan@microsoft.com&gt;
Signed-off-by: Michael D Kinney &lt;michael.d.kinney@intel.com&gt;
Reviewed-by: Michael Kubacki &lt;michael.kubacki@microsoft.com&gt;
</content>
</entry>
<entry>
<title>UnitTestFrameworkPkg/UnitTestDebugAssertLib: Add GoogleTest support</title>
<updated>2024-02-14T02:37:16+00:00</updated>
<author>
<name>Michael D Kinney</name>
<email>michael.d.kinney@intel.com</email>
</author>
<published>2024-02-05T22:59:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=2d144d7e147beddbba85cd04bd2093b544e5cf0a'/>
<id>urn:sha1:2d144d7e147beddbba85cd04bd2093b544e5cf0a</id>
<content type='text'>
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4683

Add an C++ implementation of UnitTestDebugAssert() API for
host-based environments. GoogleTest based environments throw
a C++ exception of type std::runtime_error when an ASSERT() is
triggered with a description that contains the filename, line
number, and the expression that triggered the ASSERT().

Cc: Michael Kubacki &lt;mikuback@linux.microsoft.com&gt;
Cc: Sean Brogan &lt;sean.brogan@microsoft.com&gt;
Signed-off-by: Michael D Kinney &lt;michael.d.kinney@intel.com&gt;
Reviewed-by: Michael Kubacki &lt;michael.kubacki@microsoft.com&gt;
</content>
</entry>
<entry>
<title>UnitTestFrameworkPkg/UnitTestLib: GetActiveFrameworkHandle() no ASSERT()</title>
<updated>2024-02-14T02:37:16+00:00</updated>
<author>
<name>Michael D Kinney</name>
<email>michael.d.kinney@intel.com</email>
</author>
<published>2024-02-06T22:43:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=312ccaf81b6343c9bcee1f8992086075353abeca'/>
<id>urn:sha1:312ccaf81b6343c9bcee1f8992086075353abeca</id>
<content type='text'>
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4683

Update GetActiveFrameworkHandle() to remove ASSERT() and require
caller to check for NULL.

This allows GetActiveFrameworkHandle() to be used to determine if the
current host-based test environment is framework/cmocka or gtest. In
the framework/cmocka host-based environment GetActiveFrameworkHandle()
returns non-NULL. In the gtest host-based environment
GetActiveFrameworkHandle() returns NULL.

Cc: Michael Kubacki &lt;mikuback@linux.microsoft.com&gt;
Cc: Sean Brogan &lt;sean.brogan@microsoft.com&gt;
Signed-off-by: Michael D Kinney &lt;michael.d.kinney@intel.com&gt;
Reviewed-by: Michael Kubacki &lt;michael.kubacki@microsoft.com&gt;
</content>
</entry>
<entry>
<title>UnitTestFrameworkPkg: Expand host-based exception handling and gcov</title>
<updated>2024-02-14T02:37:16+00:00</updated>
<author>
<name>Michael D Kinney</name>
<email>michael.d.kinney@intel.com</email>
</author>
<published>2024-02-03T01:28:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=81b69f306fe801546786186e1e5ae5f79a2fde97'/>
<id>urn:sha1:81b69f306fe801546786186e1e5ae5f79a2fde97</id>
<content type='text'>
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4683

Update MSFT CC_FLAGS for host-based unit tests to use /EHs
instead of /EHsc to support building C functions with SEH
(Structured Exception Handling) enabled.  This is required to
build UnitTestDebugAssertLibHost.inf.

Update GCC CC_FLAGS for host-based unit tests to use -fexceptions
to support catching exceptions.

Update GoogleTestLib.h to include Throws() APIs that enable
unit tests to use EXPECT_THAT() to check for expected ASSERT()
conditions for a specific ASSERT() expression.

Update GCC CC_FLAGS to add --coverage for host-based builds
for all GCC tool chains.

Cc: Michael Kubacki &lt;mikuback@linux.microsoft.com&gt;
Cc: Sean Brogan &lt;sean.brogan@microsoft.com&gt;
Signed-off-by: Michael D Kinney &lt;michael.d.kinney@intel.com&gt;
Reviewed-by: Michael Kubacki &lt;michael.kubacki@microsoft.com&gt;
</content>
</entry>
<entry>
<title>UnitTestFrameworkPkg: MSFT CC_FLAGS add /MT to for host builds</title>
<updated>2024-02-14T02:37:16+00:00</updated>
<author>
<name>Michael D Kinney</name>
<email>michael.d.kinney@intel.com</email>
</author>
<published>2024-02-03T01:04:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=46c6de57b0628567ed3e72a7c65d1e6c708312cc'/>
<id>urn:sha1:46c6de57b0628567ed3e72a7c65d1e6c708312cc</id>
<content type='text'>
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4683

Add /MT to MSFT CC_FLAGS to always use release libraries
when building host-based unit tests so any exceptions
generated during host-based test execution generate an
error message in stderr instead of a popup window.

Use /MTd when -D UNIT_TESTING_DEBUG is to use debug
libraries when building host-based unit tests so any
exceptions generated during host-based test execution
generate a popup window with option to attach a debugger.

Cc: Michael Kubacki &lt;mikuback@linux.microsoft.com&gt;
Cc: Sean Brogan &lt;sean.brogan@microsoft.com&gt;
Signed-off-by: Michael D Kinney &lt;michael.d.kinney@intel.com&gt;
Reviewed-by: Michael Kubacki &lt;michael.kubacki@microsoft.com&gt;
</content>
</entry>
<entry>
<title>UnitTestFrameworkPkg/Readme.md: Remove gtest main() limitation</title>
<updated>2023-12-03T02:37:26+00:00</updated>
<author>
<name>Pedro Falcato</name>
<email>pedro.falcato@gmail.com</email>
</author>
<published>2023-11-30T22:42:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=7182621edc67260a322fa0fb8bb4c8e398d9323e'/>
<id>urn:sha1:7182621edc67260a322fa0fb8bb4c8e398d9323e</id>
<content type='text'>
As of the previous commit, this limitation is no longer a thing.
You can now write gtest unit tests with multiple files and no need for
any hack such as #include.

Cc: Michael D Kinney &lt;michael.d.kinney@intel.com&gt;
Cc: Michael Kubacki &lt;mikuback@linux.microsoft.com&gt;
Cc: Sean Brogan &lt;sean.brogan@microsoft.com&gt;
Signed-off-by: Pedro Falcato &lt;pedro.falcato@gmail.com&gt;
Reviewed-by: Cc: Michael D Kinney &lt;michael.d.kinney@intel.com&gt;
</content>
</entry>
<entry>
<title>UnitTestFrameworkPkg: Fix Google Test components with multiple files</title>
<updated>2023-12-03T02:37:26+00:00</updated>
<author>
<name>Pedro Falcato</name>
<email>pedro.falcato@gmail.com</email>
</author>
<published>2023-11-30T22:42:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=c3769e392b9293d8fdd124665f12b08c704e5952'/>
<id>urn:sha1:c3769e392b9293d8fdd124665f12b08c704e5952</id>
<content type='text'>
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4610

Google Test hides test registration in global constructors on global
objects. Global constructors are traditionally implemented by placing
references to the global constructor's symbol in special sections
(traditionally named .ctors or .init_array). These sections are not
explicitly referenced by the linker, and libc only looks at special
start and end symbols (and calls them).

This works fine if you're linking a program manually using

    gcc a.o b.o c.o -o test_suite

but fails miserably when using static libraries (such as what EDK2
does), because traditional static archive symbol resolution rules don't
allow for object files to be pulled in to the link if there isn't an
undefined symbol reference to that .o elsewhere.

Fix it by passing --whole-archive (GCC) and /WHOLEARCHIVE (MSVC). These
options force the linker to pull in the entire static library, thus
including previously-unreferenced constructors and making sure
multi-file gtest EDK2 components work.

Cc: Michael D Kinney &lt;michael.d.kinney@intel.com&gt;
Cc: Michael Kubacki &lt;mikuback@linux.microsoft.com&gt;
Cc: Sean Brogan &lt;sean.brogan@microsoft.com&gt;
Signed-off-by: Pedro Falcato &lt;pedro.falcato@gmail.com&gt;
Reviewed-by: Cc: Michael D Kinney &lt;michael.d.kinney@intel.com&gt;
</content>
</entry>
<entry>
<title>UnitTestFrameworkPkg: Apply uncrustify formatting to relevant files</title>
<updated>2023-10-27T00:50:49+00:00</updated>
<author>
<name>Vivian Nowka-Keane</name>
<email>vnowkakeane@linux.microsoft.com</email>
</author>
<published>2023-08-16T21:15:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=1e27258a89647cdb79721062baad1903b29cd023'/>
<id>urn:sha1:1e27258a89647cdb79721062baad1903b29cd023</id>
<content type='text'>
Apply uncrustify formatting to GoogleTest cpp and header files.

Cc: Michael D Kinney &lt;michael.d.kinney@intel.com&gt;
Cc: Michael Kubacki &lt;mikuback@linux.microsoft.com&gt;
Cc: Sean Brogan &lt;sean.brogan@microsoft.com&gt;
Signed-off-by: Vivian Nowka-Keane &lt;vnowkakeane@linux.microsoft.com&gt;
Reviewed-by: Michael D Kinney &lt;michael.d.kinney@intel.com&gt;
Reviewed-by: Michael Kubacki &lt;michael.kubacki@microsoft.com&gt;
</content>
</entry>
</feed>
