From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 1134474003C for ; Fri, 9 Feb 2024 20:33:04 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=NSpI6PK4ZekNxn/mXTqdjeHIhqZ1Hr1r8BWuO7fiP+k=; c=relaxed/simple; d=groups.io; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding; s=20140610; t=1707510783; v=1; b=QavUwKCXEwEia5OIlA8AMxrS0NmVJ0PhPPLhMPmHw0zlJTSJuif1BzcVNqpoTW6m4iB6aFPT oUcqMDzmisIMOY9ifXU6tPwL8r7neNlkhrurgqGq8lHYFbfv0sXro2x3OlWACmCM3M6B6abkB7T 3F6UqTdF936R13dQ2n2HRjz4= X-Received: by 127.0.0.2 with SMTP id s3xCYY7687511xcUoAyP3S40; Fri, 09 Feb 2024 12:33:03 -0800 X-Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.19]) by mx.groups.io with SMTP id smtpd.web11.23458.1707510780426267029 for ; Fri, 09 Feb 2024 12:33:01 -0800 X-IronPort-AV: E=McAfee;i="6600,9927,10979"; a="1392553" X-IronPort-AV: E=Sophos;i="6.05,257,1701158400"; d="scan'208";a="1392553" X-Received: from fmviesa005.fm.intel.com ([10.60.135.145]) by fmvoesa113.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Feb 2024 12:33:00 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.05,257,1701158400"; d="scan'208";a="6670658" X-Received: from mdkinney-mobl.amr.corp.intel.com ([10.209.59.192]) by fmviesa005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Feb 2024 12:33:00 -0800 From: "Michael D Kinney" To: devel@edk2.groups.io Cc: Michael Kubacki , Sean Brogan Subject: [edk2-devel] [edk2-stable202402][Patch V3 3/7] UnitTestFrameworkPkg: Expand host-based exception handling and gcov Date: Fri, 9 Feb 2024 12:32:49 -0800 Message-Id: <20240209203253.488-4-michael.d.kinney@intel.com> In-Reply-To: <20240209203253.488-1-michael.d.kinney@intel.com> References: <20240209203253.488-1-michael.d.kinney@intel.com> MIME-Version: 1.0 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,michael.d.kinney@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: 14BIObsT3Yi3GpMhye0SZMdnx7686176AA= Content-Transfer-Encoding: 8bit X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=QavUwKCX; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=intel.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io 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 Cc: Sean Brogan Signed-off-by: Michael D Kinney --- .../Include/Library/GoogleTestLib.h | 20 +++++++++++++++++++ .../Library/GoogleTestLib/GoogleTestLib.inf | 4 ++-- .../UnitTestFrameworkPkg.ci.yaml | 2 ++ .../UnitTestFrameworkPkgHost.dsc.inc | 7 ++++--- 4 files changed, 28 insertions(+), 5 deletions(-) diff --git a/UnitTestFrameworkPkg/Include/Library/GoogleTestLib.h b/UnitTestFrameworkPkg/Include/Library/GoogleTestLib.h index c723b5c23050..b8405cee8ee1 100644 --- a/UnitTestFrameworkPkg/Include/Library/GoogleTestLib.h +++ b/UnitTestFrameworkPkg/Include/Library/GoogleTestLib.h @@ -13,6 +13,26 @@ #include #include +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(HasSubstr (description)) \ + ) +#define ASSERT_THROW_MESSAGE(statement, description) \ + ASSERT_THAT ( \ + []() { statement; }, \ + ThrowsMessage(HasSubstr (description)) \ + ) + extern "C" { #include } diff --git a/UnitTestFrameworkPkg/Library/GoogleTestLib/GoogleTestLib.inf b/UnitTestFrameworkPkg/Library/GoogleTestLib/GoogleTestLib.inf index bdab98a54f0e..0c522832e9d8 100644 --- a/UnitTestFrameworkPkg/Library/GoogleTestLib/GoogleTestLib.inf +++ b/UnitTestFrameworkPkg/Library/GoogleTestLib/GoogleTestLib.inf @@ -29,5 +29,5 @@ [Packages] [BuildOptions] MSFT:*_*_*_CC_FLAGS == /c /EHs /Zi /Od /MT - GCC:*_*_IA32_CC_FLAGS == -g -c -fshort-wchar -O0 -m32 - GCC:*_*_X64_CC_FLAGS == -g -c -fshort-wchar -O0 -m64 + 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))" diff --git a/UnitTestFrameworkPkg/UnitTestFrameworkPkg.ci.yaml b/UnitTestFrameworkPkg/UnitTestFrameworkPkg.ci.yaml index 40a396dd9f71..b61a6a0b0717 100644 --- a/UnitTestFrameworkPkg/UnitTestFrameworkPkg.ci.yaml +++ b/UnitTestFrameworkPkg/UnitTestFrameworkPkg.ci.yaml @@ -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 diff --git a/UnitTestFrameworkPkg/UnitTestFrameworkPkgHost.dsc.inc b/UnitTestFrameworkPkg/UnitTestFrameworkPkgHost.dsc.inc index 00f8d9a895be..24a50a22106f 100644 --- a/UnitTestFrameworkPkg/UnitTestFrameworkPkgHost.dsc.inc +++ b/UnitTestFrameworkPkg/UnitTestFrameworkPkgHost.dsc.inc @@ -31,13 +31,14 @@ [BuildOptions] 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 -- 2.40.1.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#115326): https://edk2.groups.io/g/devel/message/115326 Mute This Topic: https://groups.io/mt/104267258/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=-