public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [Patch V2 0/7] Add GoogleTest to UnitTestFrameworkPkg
@ 2022-11-04 20:25 Michael D Kinney
  2022-11-04 20:25 ` [Patch V2 1/7] MdePkg/Include: Update Base.h to improve C++ compatibility Michael D Kinney
                   ` (6 more replies)
  0 siblings, 7 replies; 13+ messages in thread
From: Michael D Kinney @ 2022-11-04 20:25 UTC (permalink / raw)
  To: devel
  Cc: Liming Gao, Zhiguang Liu, Bob Feng, Yuwei Chen, Sean Brogan,
	Michael Kubacki

REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4134

PR: https://github.com/tianocore/edk2/pull/3595
Branch: https://github.com/mdkinney/edk2/tree/Bug_4134_AddGoogleTest_V2

Add GoogleTest support to UnitTestFrameworkPkg to provide an
additional host-based unit test framework to developers.

Code: https://github.com/google/googletest
Docs: https://google.github.io/googletest

GoogleTest is implemented in C++, but does support implementing
unit tests for C code.  This patch series makes a few updates for C++
compatibility and build issues related to multiple definitions of _ASSERT().
The GoogleTest git submodule is added to the UnitTestFrameworkPkg
and .pytools/CISettings.py file along with an update to the host-based
test runner plugin to set the GTEST_OUTPUT environment variable to 
specify the XML output file format and location.

A port of the unit tests for the the MdePkg BaseSafeIntLib are included
to provide an example that is in both the current unit test style and the
GoogleTest style.

New in V2
---------
* Update maintainers/reviewers
* Add feature table to Readme.md and fix typos

Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Zhiguang Liu <zhiguang.liu@intel.com>
Cc: Bob Feng <bob.c.feng@intel.com>
Cc: Yuwei Chen <yuwei.chen@intel.com>
Cc: Sean Brogan <sean.brogan@microsoft.com>
Cc: Michael Kubacki <mikuback@linux.microsoft.com>
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>

Michael D Kinney (7):
  MdePkg/Include: Update Base.h to improve C++ compatibility
  MdePkg/Include/Library: Undefine _ASSERT() if already defined
  UnitTestFrameworkPkg: Add googletest submodule and GoogleTestLib
  UnitTestFrameworkPkg/Library/CmockaLib: Enable symbol files.
  .pytool: Add googletest submodule to CISettings.py
  BaseTools/Plugin/HostBaseUnitTestRunner: Enable gtest xml output
  MdePkg/Test: Add port of BaseSafeIntLib unit tests to GoogleTest

 .gitmodules                                   |    3 +
 .pytool/CISettings.py                         |    2 +
 .../HostBasedUnitTestRunner.py                |    7 +-
 MdePkg/Include/Base.h                         |   12 +-
 MdePkg/Include/Library/DebugLib.h             |    3 +
 .../GoogleTestBaseSafeIntLib.inf              |   37 +
 .../GoogleTestBaseSafeIntLib.uni              |   13 +
 .../SafeIntLibUintnIntnUnitTests32.cpp        |  425 +++
 .../SafeIntLibUintnIntnUnitTests64.cpp        |  429 ++++
 .../BaseSafeIntLib/TestBaseSafeIntLib.cpp     | 2274 +++++++++++++++++
 MdePkg/Test/MdePkgHostTest.dsc                |    1 +
 .../Include/Library/GoogleTestLib.h           |   14 +
 .../Library/CmockaLib/CmockaLib.inf           |    2 +-
 .../Library/GoogleTestLib/GoogleTestLib.inf   |   36 +
 .../Library/GoogleTestLib/GoogleTestLib.uni   |   14 +
 .../Library/GoogleTestLib/googletest          |    1 +
 UnitTestFrameworkPkg/ReadMe.md                |  255 +-
 .../SampleGoogleTest/SampleGoogleTest.cpp     |  263 ++
 .../SampleGoogleTest/SampleGoogleTestHost.inf |   35 +
 .../Test/UnitTestFrameworkPkgHostTest.dsc     |    4 +-
 .../UnitTestFrameworkPkg.ci.yaml              |    4 +-
 UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec |    8 +
 .../UnitTestFrameworkPkgHost.dsc.inc          |    4 +-
 23 files changed, 3810 insertions(+), 36 deletions(-)
 create mode 100644 MdePkg/Test/GoogleTest/Library/BaseSafeIntLib/GoogleTestBaseSafeIntLib.inf
 create mode 100644 MdePkg/Test/GoogleTest/Library/BaseSafeIntLib/GoogleTestBaseSafeIntLib.uni
 create mode 100644 MdePkg/Test/GoogleTest/Library/BaseSafeIntLib/SafeIntLibUintnIntnUnitTests32.cpp
 create mode 100644 MdePkg/Test/GoogleTest/Library/BaseSafeIntLib/SafeIntLibUintnIntnUnitTests64.cpp
 create mode 100644 MdePkg/Test/GoogleTest/Library/BaseSafeIntLib/TestBaseSafeIntLib.cpp
 create mode 100644 UnitTestFrameworkPkg/Include/Library/GoogleTestLib.h
 create mode 100644 UnitTestFrameworkPkg/Library/GoogleTestLib/GoogleTestLib.inf
 create mode 100644 UnitTestFrameworkPkg/Library/GoogleTestLib/GoogleTestLib.uni
 create mode 160000 UnitTestFrameworkPkg/Library/GoogleTestLib/googletest
 create mode 100644 UnitTestFrameworkPkg/Test/GoogleTest/Sample/SampleGoogleTest/SampleGoogleTest.cpp
 create mode 100644 UnitTestFrameworkPkg/Test/GoogleTest/Sample/SampleGoogleTest/SampleGoogleTestHost.inf

-- 
2.37.1.windows.1


^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2022-11-08 23:03 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-11-04 20:25 [Patch V2 0/7] Add GoogleTest to UnitTestFrameworkPkg Michael D Kinney
2022-11-04 20:25 ` [Patch V2 1/7] MdePkg/Include: Update Base.h to improve C++ compatibility Michael D Kinney
2022-11-08  6:59   ` 回复: " gaoliming
2022-11-04 20:25 ` [Patch V2 2/7] MdePkg/Include/Library: Undefine _ASSERT() if already defined Michael D Kinney
2022-11-08  6:59   ` 回复: " gaoliming
2022-11-04 20:25 ` [Patch V2 3/7] UnitTestFrameworkPkg: Add googletest submodule and GoogleTestLib Michael D Kinney
2022-11-08  7:47   ` 回复: [edk2-devel] " gaoliming
2022-11-08 23:03     ` Michael D Kinney
2022-11-04 20:25 ` [Patch V2 4/7] UnitTestFrameworkPkg/Library/CmockaLib: Enable symbol files Michael D Kinney
2022-11-04 20:25 ` [Patch V2 5/7] .pytool: Add googletest submodule to CISettings.py Michael D Kinney
2022-11-04 20:25 ` [Patch V2 6/7] BaseTools/Plugin/HostBaseUnitTestRunner: Enable gtest xml output Michael D Kinney
2022-11-04 20:25 ` [Patch V2 7/7] MdePkg/Test: Add port of BaseSafeIntLib unit tests to GoogleTest Michael D Kinney
2022-11-08  6:59   ` 回复: [edk2-devel] " gaoliming

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox