From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mx.groups.io with SMTP id smtpd.web10.2854.1680906059556530823 for ; Fri, 07 Apr 2023 15:20:59 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=lWeIELpB; spf=pass (domain: intel.com, ip: 192.55.52.115, mailfrom: michael.d.kinney@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1680906059; x=1712442059; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=M1ffgiq9zn2sbBfV+CaW71V/GdJ6HRESR0fwypHGl7Q=; b=lWeIELpB3LP+IGOgQeqsaB3VcMIA7LaMf16iqey35VNZm2qaS0k3hO2f O2Tcr6xXSMwcNxkFU8cgwKNq/Tgd9q+nesPKtCBIXbYpH3PP0Ugm730hu inn5YxvNy6h1aeR+Ff29UL5HxRbjBYeQVsi0UeoDZSJuX0chtGQeVzLvT U+1l9t9WEO+y4D2JYG25KJzxioN6vq7ya/IxhfdzfkrV7+1GhEqF4fpEe gCm84daXj4MuZaLQDeQ4GR8BUC7R/TV0E4z9YAMYsPyRJwmYLaAR37hTO oB6E49NH0OT6G6Vw65PvgQoBhCIu/J/rlW1k6dqkpuoNHnZReHPq2p66G w==; X-IronPort-AV: E=McAfee;i="6600,9927,10673"; a="343085627" X-IronPort-AV: E=Sophos;i="5.98,328,1673942400"; d="scan'208";a="343085627" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Apr 2023 15:20:58 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10673"; a="690177452" X-IronPort-AV: E=Sophos;i="5.98,328,1673942400"; d="scan'208";a="690177452" Received: from mdkinney-mobl2.amr.corp.intel.com ([10.209.18.108]) by fmsmga007-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Apr 2023 15:20:58 -0700 From: "Michael D Kinney" To: devel@edk2.groups.io Cc: Michael Kubacki , Nate DeSimone , Jian J Wang , Liming Gao , Zhiguang Liu , Jiewen Yao , Sean Brogan , Andrew Fish , Leif Lindholm , Chris Johnson Subject: [Patch v3 00/12] Add gmock support for host-based unit testing Date: Fri, 7 Apr 2023 15:20:38 -0700 Message-Id: <20230407222051.1095-1-michael.d.kinney@intel.com> X-Mailer: git-send-email 2.39.1.windows.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4389 PR: https://github.com/tianocore/edk2/pull/4180 Branch: https://github.com/mdkinney/edk2/tree/Bug_4389_UnitTestFrameworkPkg_AddGoogleMockSupport New in v3 ========== * Expand commit messages for HOST_APPLICATION only supports IA32/X64 * Update UnitTestFrameworkPkgHostTest.dsc to list libraries alphabetically * Update GoogleTestLib.inf, SubhookLib.inf, and FunctionMockLib.inf to be module type HOST_APLICATION and re-organize [BuildOptions] to make them easier to read. New in v2 ========== * SecurityPkg: Add unit test descriptions to SecureBootVariableLibGoogleTest * MdeModulePkg: Add unit test descriptions to UefiSortLibGoogleTest * UnitTestFrameworkPkg: Update ReadMe.md based on review findings * Fix FunctionMockLib example of the MockUefiLib declaration to align with the design code. * Fix FunctionMockLib Mocks header file location paths in the tables. * Fix FunctionMockLib Mocks example (and description) of the MockUefiLib declaration to align with the design code. * Fix FunctionMockLib Mocks example (and description) of the MockUefiLib INF file to align with the design file. * Fix typos in new Code Coverage section. V1 === * Add subhook submodule that is required to hook internal functions when using gmock. * Add gmock support to GoogleTestLib * Add FunctionMockLib library class and library instance * Add GoogleTest extension to GoogleTestLib.h for CHAR16 type * Add GoogleTest extension to GoogleTestLib.h for buffer types * Add gmock documentation * Add gmock examples * Fix VS20xx 4122 errors in SecurityPkg unit test * HOST_APPLICATION only supports IA32/X64 Cc: Michael Kubacki Cc: Nate DeSimone Cc: Jian J Wang Cc: Liming Gao Cc: Zhiguang Liu Cc: Jiewen Yao Cc: Michael D Kinney Cc: Sean Brogan Cc: Michael Kubacki Cc: Andrew Fish Cc: Leif Lindholm Signed-off-by: Chris Johnson Chris Johnson (7): UnitTestFrameworkPkg: Add subhook submodule required for gmock .pytool/CISettings.py: Add subhook submodule UnitTestFrameworkPkg: Add gmock support to GoogleTestLib UnitTestFrameworkPkg/ReadMe.md: Add gmock documentation MdePkg: Add gmock examples MdeModulePkg/Library/UefiSortLib: Add GoogleTestLib example SecurityPkg: Add gmock example Michael D Kinney (5): SecurityPkg/Library/SecureBootVariableLib: Fix VS20xx 4122 errors SecurityPkg/Library/SecureBootVariableLib: HOST_APPLICATION IA32/X64 only MdePkg/Library/BaseLib: HOST_APPLICATION IA32/X64 only MdeModulePkg: HOST_APPLICATION IA32/X64 only PrmPkg/Library: HOST_APPLICATION IA32/X64 only .gitmodules | 3 + .pytool/CISettings.py | 2 + .../MockUefiRuntimeServicesTableLib.inf | 6 +- .../GoogleTest/UefiSortLibGoogleTest.cpp | 61 + .../GoogleTest/UefiSortLibGoogleTest.inf | 31 + MdeModulePkg/Test/MdeModulePkgHostTest.dsc | 6 + .../VariableLockRequestToLockUnitTest.inf | 2 +- .../Library/BaseLib/UnitTestHostBaseLib.inf | 2 +- MdePkg/MdePkg.dec | 1 + MdePkg/Test/MdePkgHostTest.dsc | 2 + .../Include/GoogleTest/Library/MockUefiLib.h | 39 + .../Library/MockUefiRuntimeServicesTableLib.h | 42 + .../GoogleTest/MockUefiLib/MockUefiLib.cpp | 12 + .../GoogleTest/MockUefiLib/MockUefiLib.inf | 33 + .../MockUefiRuntimeServicesTableLib.cpp | 40 + .../MockUefiRuntimeServicesTableLib.inf | 33 + .../DxePrmContextBufferLibUnitTestHost.inf | 2 +- .../DxePrmModuleDiscoveryLibUnitTestHost.inf | 2 +- ReadMe.rst | 1 + .../SecureBootVariableLibGoogleTest.cpp | 174 +++ .../SecureBootVariableLibGoogleTest.inf | 32 + .../UnitTest/MockPlatformPKProtectionLib.inf | 6 +- .../UnitTest/MockUefiLib.inf | 6 +- .../MockUefiRuntimeServicesTableLib.inf | 6 +- .../UnitTest/SecureBootVariableLibUnitTest.c | 172 ++- SecurityPkg/SecurityPkg.dec | 1 + .../Library/MockPlatformPKProtectionLib.h | 28 + .../MockPlatformPKProtectionLib.cpp | 11 + .../MockPlatformPKProtectionLib.inf | 34 + SecurityPkg/Test/SecurityPkgHostTest.dsc | 8 + .../Include/Library/FunctionMockLib.h | 131 +++ .../Include/Library/GoogleTestLib.h | 96 ++ .../Include/Library/SubhookLib.h | 15 + .../Library/CmockaLib/CmockaLib.inf | 2 +- .../Library/FunctionMockLib/FunctionMockLib.c | 7 + .../FunctionMockLib/FunctionMockLib.inf | 31 + .../FunctionMockLib/FunctionMockLib.uni | 11 + .../Library/GoogleTestLib/GoogleTestLib.inf | 21 +- .../Library/GoogleTestLib/GoogleTestLib.uni | 3 - .../Library/SubhookLib/SubhookLib.inf | 31 + .../Library/SubhookLib/SubhookLib.uni | 11 + .../Library/SubhookLib/subhook | 1 + UnitTestFrameworkPkg/ReadMe.md | 1013 ++++++++++++++++- .../Test/UnitTestFrameworkPkgHostTest.dsc | 2 + .../UnitTestFrameworkPkg.ci.yaml | 7 +- UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec | 4 + .../UnitTestFrameworkPkgHost.dsc.inc | 2 + 47 files changed, 2022 insertions(+), 164 deletions(-) create mode 100644 MdeModulePkg/Library/UefiSortLib/GoogleTest/UefiSortLibGoogleTest.cpp create mode 100644 MdeModulePkg/Library/UefiSortLib/GoogleTest/UefiSortLibGoogleTest.inf create mode 100644 MdePkg/Test/Mock/Include/GoogleTest/Library/MockUefiLib.h create mode 100644 MdePkg/Test/Mock/Include/GoogleTest/Library/MockUefiRuntimeServicesTableLib.h create mode 100644 MdePkg/Test/Mock/Library/GoogleTest/MockUefiLib/MockUefiLib.cpp create mode 100644 MdePkg/Test/Mock/Library/GoogleTest/MockUefiLib/MockUefiLib.inf create mode 100644 MdePkg/Test/Mock/Library/GoogleTest/MockUefiRuntimeServicesTableLib/MockUefiRuntimeServicesTableLib.cpp create mode 100644 MdePkg/Test/Mock/Library/GoogleTest/MockUefiRuntimeServicesTableLib/MockUefiRuntimeServicesTableLib.inf create mode 100644 SecurityPkg/Library/SecureBootVariableLib/GoogleTest/SecureBootVariableLibGoogleTest.cpp create mode 100644 SecurityPkg/Library/SecureBootVariableLib/GoogleTest/SecureBootVariableLibGoogleTest.inf create mode 100644 SecurityPkg/Test/Mock/Include/GoogleTest/Library/MockPlatformPKProtectionLib.h create mode 100644 SecurityPkg/Test/Mock/Library/GoogleTest/MockPlatformPKProtectionLib/MockPlatformPKProtectionLib.cpp create mode 100644 SecurityPkg/Test/Mock/Library/GoogleTest/MockPlatformPKProtectionLib/MockPlatformPKProtectionLib.inf create mode 100644 UnitTestFrameworkPkg/Include/Library/FunctionMockLib.h create mode 100644 UnitTestFrameworkPkg/Include/Library/SubhookLib.h create mode 100644 UnitTestFrameworkPkg/Library/FunctionMockLib/FunctionMockLib.c create mode 100644 UnitTestFrameworkPkg/Library/FunctionMockLib/FunctionMockLib.inf create mode 100644 UnitTestFrameworkPkg/Library/FunctionMockLib/FunctionMockLib.uni create mode 100644 UnitTestFrameworkPkg/Library/SubhookLib/SubhookLib.inf create mode 100644 UnitTestFrameworkPkg/Library/SubhookLib/SubhookLib.uni create mode 160000 UnitTestFrameworkPkg/Library/SubhookLib/subhook -- 2.39.1.windows.1