mirror of https://github.com/acidanthera/audk.git
UnitTestFrameworkPkg: Expand host-based exception handling and gcov
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 <mikuback@linux.microsoft.com> Cc: Sean Brogan <sean.brogan@microsoft.com> Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Michael Kubacki <michael.kubacki@microsoft.com>
This commit is contained in:
parent
46c6de57b0
commit
81b69f306f
|
@ -13,6 +13,26 @@
|
|||
#include <gmock/gmock.h>
|
||||
#include <cstring>
|
||||
|
||||
using ::testing::Throws;
|
||||
using ::testing::ThrowsMessage;
|
||||
using ::testing::HasSubstr;
|
||||
|
||||
//
|
||||
// Extended macros for testing exceptions with a specific description string
|
||||
// in the exception message. Typically used to check that the expression
|
||||
// that generates an ASSERT() matches the expected expression.
|
||||
//
|
||||
#define EXPECT_THROW_MESSAGE(statement, description) \
|
||||
EXPECT_THAT ( \
|
||||
[]() { statement; }, \
|
||||
ThrowsMessage<std::runtime_error>(HasSubstr (description)) \
|
||||
)
|
||||
#define ASSERT_THROW_MESSAGE(statement, description) \
|
||||
ASSERT_THAT ( \
|
||||
[]() { statement; }, \
|
||||
ThrowsMessage<std::runtime_error>(HasSubstr (description)) \
|
||||
)
|
||||
|
||||
extern "C" {
|
||||
#include <Uefi.h>
|
||||
}
|
||||
|
|
|
@ -28,6 +28,6 @@
|
|||
UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec
|
||||
|
||||
[BuildOptions]
|
||||
MSFT:*_*_*_CC_FLAGS == /c /EHsc /Zi /Od /MT
|
||||
GCC:*_*_IA32_CC_FLAGS == -g -c -fshort-wchar -O0 -m32
|
||||
GCC:*_*_X64_CC_FLAGS == -g -c -fshort-wchar -O0 -m64
|
||||
MSFT:*_*_*_CC_FLAGS == /c /EHs /Zi /Od /MT
|
||||
GCC:*_*_IA32_CC_FLAGS == -g -c -fshort-wchar -fexceptions -O0 -m32 -malign-double -fno-pie
|
||||
GCC:*_*_X64_CC_FLAGS == -g -c -fshort-wchar -fexceptions -O0 -m64 -fno-pie "-DEFIAPI=__attribute__((ms_abi))"
|
||||
|
|
|
@ -102,6 +102,8 @@
|
|||
"cobertura",
|
||||
"DHAVE", # build flag for cmocka in the INF
|
||||
"gtest", # file name in GoogleTestLib.inf
|
||||
"defiapi", # build flag for gtest
|
||||
"fexceptions", # build flag for gtest
|
||||
"corthon", # Contact GitHub account in Readme
|
||||
"mdkinney", # Contact GitHub account in Readme
|
||||
"spbrogan" # Contact GitHub account in Readme
|
||||
|
|
|
@ -31,13 +31,14 @@
|
|||
GCC:*_*_*_CC_FLAGS = -D UNIT_TESTING_DEBUG=1
|
||||
XCODE:*_*_*_CC_FLAGS = -D UNIT_TESTING_DEBUG=1
|
||||
!endif
|
||||
GCC:*_GCC5_*_CC_FLAGS = --coverage
|
||||
GCC:*_GCC5_*_DLINK_FLAGS = --coverage
|
||||
GCC:*_*_*_CC_FLAGS = -fexceptions
|
||||
GCC:*_*_*_CC_FLAGS = --coverage
|
||||
GCC:*_*_*_DLINK_FLAGS = --coverage
|
||||
[BuildOptions.common.EDKII.HOST_APPLICATION]
|
||||
#
|
||||
# MSFT
|
||||
#
|
||||
MSFT:*_*_*_CC_FLAGS = /EHsc
|
||||
MSFT:*_*_*_CC_FLAGS = /EHs
|
||||
MSFT:*_*_*_DLINK_FLAGS == /out:"$(BIN_DIR)\$(MODULE_NAME_GUID).exe" /pdb:"$(BIN_DIR)\$(MODULE_NAME_GUID).pdb" /IGNORE:4001 /NOLOGO /SUBSYSTEM:CONSOLE /DEBUG /STACK:0x40000,0x40000 /WHOLEARCHIVE
|
||||
MSFT:*_*_IA32_DLINK_FLAGS = /MACHINE:I386
|
||||
MSFT:*_*_X64_DLINK_FLAGS = /MACHINE:AMD64
|
||||
|
|
Loading…
Reference in New Issue