From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by mx.groups.io with SMTP id smtpd.web11.28284.1679769950911591616 for ; Sat, 25 Mar 2023 11:45:51 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=Rf3iyoob; spf=pass (domain: intel.com, ip: 192.55.52.136, 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=1679769950; x=1711305950; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=IdybJfjQ/z6Q5BhvzP6PMZdLrsKg9YpP+9j4iqmpQlo=; b=Rf3iyoob2RHTAe8AlkbKAiZE9xcRHl5Il5033BvUut7P62c7FTAxKBcJ zHxxnSxXv3RvEAB+aahAi8nx5F669SwXQcktOF64b7e8EwgDV+5ex5e+u lsyObX7tOLC74lL0SkruraQdI2tP/iS+aZoe1l9M4yKGSipj/O5ymfzKB xbpkUQXLV3L1cNbLGiRMrBdFHeqthcJdTlnHU8Y/s8ME6RZy+L8BeX/0w Fs/jFcC+uHnRlF0kixm0h7NQxbk5cFZeezbxs/mCEL8lya97YWWmPaKje 2nmNn37SsVJ0QmpESWvyX6ZX/s0V5QILVQ2MEtPC4rCJMTldCznTA7/6a w==; X-IronPort-AV: E=McAfee;i="6600,9927,10660"; a="319655057" X-IronPort-AV: E=Sophos;i="5.98,291,1673942400"; d="scan'208";a="319655057" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Mar 2023 11:45:50 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10660"; a="685541389" X-IronPort-AV: E=Sophos;i="5.98,291,1673942400"; d="scan'208";a="685541389" Received: from mdkinney-mobl2.amr.corp.intel.com ([10.212.254.125]) by fmsmga007-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Mar 2023 11:45:49 -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 00/12] Add gmock support for host-based unit testing Date: Sat, 25 Mar 2023 11:45:28 -0700 Message-Id: <20230325184541.596-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 * 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 | 57 + .../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 | 156 +++ .../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 | 6 +- .../Library/GoogleTestLib/GoogleTestLib.uni | 3 - .../SubhookLib.inf} | 16 +- .../Library/SubhookLib/SubhookLib.uni | 11 + .../Library/SubhookLib/subhook | 1 + UnitTestFrameworkPkg/ReadMe.md | 999 +++++++++++++++++- .../Test/UnitTestFrameworkPkgHostTest.dsc | 2 + .../UnitTestFrameworkPkg.ci.yaml | 7 +- UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec | 4 + .../UnitTestFrameworkPkgHost.dsc.inc | 2 + 47 files changed, 1960 insertions(+), 160 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 copy UnitTestFrameworkPkg/Library/{GoogleTestLib/GoogleTestLib.inf => SubhookLib/SubhookLib.inf} (53%) create mode 100644 UnitTestFrameworkPkg/Library/SubhookLib/SubhookLib.uni create mode 160000 UnitTestFrameworkPkg/Library/SubhookLib/subhook -- 2.39.1.windows.1