From: "Yao, Jiewen" <jiewen.yao@intel.com>
To: "Kinney, Michael D" <michael.d.kinney@intel.com>,
"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: "Johnson, Chris N" <chris.n.johnson@intel.com>,
"Wang, Jian J" <jian.j.wang@intel.com>
Subject: Re: [Patch 07/12] SecurityPkg: Add gmock example
Date: Sun, 26 Mar 2023 02:51:16 +0000 [thread overview]
Message-ID: <MW4PR11MB58729893B0B20D15CACAE6A68C8A9@MW4PR11MB5872.namprd11.prod.outlook.com> (raw)
In-Reply-To: <20230325184541.596-8-michael.d.kinney@intel.com>
Acked-by: Jiewen Yao
> -----Original Message-----
> From: Kinney, Michael D <michael.d.kinney@intel.com>
> Sent: Sunday, March 26, 2023 2:46 AM
> To: devel@edk2.groups.io
> Cc: Johnson, Chris N <chris.n.johnson@intel.com>; Yao, Jiewen
> <jiewen.yao@intel.com>; Wang, Jian J <jian.j.wang@intel.com>
> Subject: [Patch 07/12] SecurityPkg: Add gmock example
>
> From: Chris Johnson <chris.n.johnson@intel.com>
>
> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4389
>
> Cc: Jiewen Yao <jiewen.yao@intel.com>
> Cc: Jian J Wang <jian.j.wang@intel.com>
> Signed-off-by: Chris Johnson <chris.n.johnson@intel.com>
> ---
> .../SecureBootVariableLibGoogleTest.cpp | 156 ++++++++++++++++++
> .../SecureBootVariableLibGoogleTest.inf | 32 ++++
> .../UnitTest/MockPlatformPKProtectionLib.inf | 4 +-
> .../UnitTest/MockUefiLib.inf | 4 +-
> .../MockUefiRuntimeServicesTableLib.inf | 4 +-
> .../UnitTest/SecureBootVariableLibUnitTest.c | 2 +-
> SecurityPkg/SecurityPkg.dec | 1 +
> .../Library/MockPlatformPKProtectionLib.h | 28 ++++
> .../MockPlatformPKProtectionLib.cpp | 11 ++
> .../MockPlatformPKProtectionLib.inf | 34 ++++
> SecurityPkg/Test/SecurityPkgHostTest.dsc | 8 +
> 11 files changed, 277 insertions(+), 7 deletions(-)
> create mode 100644
> SecurityPkg/Library/SecureBootVariableLib/GoogleTest/SecureBootVariable
> LibGoogleTest.cpp
> create mode 100644
> SecurityPkg/Library/SecureBootVariableLib/GoogleTest/SecureBootVariable
> LibGoogleTest.inf
> create mode 100644
> SecurityPkg/Test/Mock/Include/GoogleTest/Library/MockPlatformPKProtect
> ionLib.h
> create mode 100644
> SecurityPkg/Test/Mock/Library/GoogleTest/MockPlatformPKProtectionLib/
> MockPlatformPKProtectionLib.cpp
> create mode 100644
> SecurityPkg/Test/Mock/Library/GoogleTest/MockPlatformPKProtectionLib/
> MockPlatformPKProtectionLib.inf
>
> diff --git
> a/SecurityPkg/Library/SecureBootVariableLib/GoogleTest/SecureBootVariab
> leLibGoogleTest.cpp
> b/SecurityPkg/Library/SecureBootVariableLib/GoogleTest/SecureBootVariab
> leLibGoogleTest.cpp
> new file mode 100644
> index 000000000000..f9a0ab35e4da
> --- /dev/null
> +++
> b/SecurityPkg/Library/SecureBootVariableLib/GoogleTest/SecureBootVariab
> leLibGoogleTest.cpp
> @@ -0,0 +1,156 @@
> +/** @file
> + Unit tests for the implementation of SecureBootVariableLib.
> +
> + Copyright (c) 2022, Intel Corporation. All rights reserved.
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +**/
> +#include <Library/GoogleTestLib.h>
> +#include <GoogleTest/Library/MockUefiLib.h>
> +#include <GoogleTest/Library/MockUefiRuntimeServicesTableLib.h>
> +
> +extern "C" {
> + #include <Uefi.h>
> + #include <UefiSecureBoot.h>
> + #include <Guid/AuthenticatedVariableFormat.h>
> + #include <Guid/ImageAuthentication.h>
> + #include <Library/SecureBootVariableLib.h>
> + #include <Library/MemoryAllocationLib.h>
> +}
> +
> +using namespace testing;
> +
> +//////////////////////////////////////////////////////////////////////////////
> +class SetSecureBootModeTest : public Test {
> + protected:
> + MockUefiRuntimeServicesTableLib RtServicesMock;
> + UINT8 SecureBootMode;
> + EFI_STATUS Status;
> +
> + void SetUp() override {
> + // Any random magic number can be used for these tests
> + SecureBootMode = 0xAB;
> + }
> +};
> +
> +TEST_F(SetSecureBootModeTest, SetVarError) {
> + EXPECT_CALL(RtServicesMock, gRT_SetVariable)
> + .WillOnce(Return(EFI_INVALID_PARAMETER));
> +
> + Status = SetSecureBootMode(SecureBootMode);
> + EXPECT_EQ(Status, EFI_INVALID_PARAMETER);
> +}
> +
> +TEST_F(SetSecureBootModeTest, PropogateModeToSetVar) {
> + EXPECT_CALL(RtServicesMock,
> + gRT_SetVariable(
> + Char16StrEq(EFI_CUSTOM_MODE_NAME),
> + BufferEq(&gEfiCustomModeEnableGuid, sizeof(EFI_GUID)),
> + EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS,
> + sizeof(SecureBootMode),
> + BufferEq(&SecureBootMode, sizeof(SecureBootMode))))
> + .WillOnce(Return(EFI_SUCCESS));
> +
> + Status = SetSecureBootMode(SecureBootMode);
> + EXPECT_EQ(Status, EFI_SUCCESS);
> +}
> +
> +//////////////////////////////////////////////////////////////////////////////
> +class GetSetupModeTest : public Test {
> + protected:
> + MockUefiRuntimeServicesTableLib RtServicesMock;
> + UINT8 SetupMode;
> + EFI_STATUS Status;
> + UINT8 ExpSetupMode;
> +
> + void SetUp() override {
> + // Any random magic number can be used for these tests
> + ExpSetupMode = 0xAB;
> + }
> +};
> +
> +TEST_F(GetSetupModeTest, GetVarError) {
> + EXPECT_CALL(RtServicesMock, gRT_GetVariable)
> + .WillOnce(Return(EFI_INVALID_PARAMETER));
> +
> + Status = GetSetupMode (&SetupMode);
> + EXPECT_EQ(Status, EFI_INVALID_PARAMETER);
> +}
> +
> +TEST_F(GetSetupModeTest, FetchModeFromGetVar) {
> + EXPECT_CALL(RtServicesMock,
> + gRT_GetVariable(
> + Char16StrEq(EFI_SETUP_MODE_NAME),
> + BufferEq(&gEfiGlobalVariableGuid, sizeof(EFI_GUID)),
> + _,
> + Pointee(Eq(sizeof(SetupMode))),
> + NotNull()))
> + .WillOnce(DoAll(
> + SetArgPointee<3>(sizeof(ExpSetupMode)),
> + SetArgBuffer<4>(&ExpSetupMode, sizeof(ExpSetupMode)),
> + Return(EFI_SUCCESS)));
> +
> + Status = GetSetupMode (&SetupMode);
> + ASSERT_EQ(Status, EFI_SUCCESS);
> + EXPECT_EQ(SetupMode, ExpSetupMode);
> +}
> +
> +//////////////////////////////////////////////////////////////////////////////
> +class IsSecureBootEnabledTest : public Test {
> + protected:
> + MockUefiLib UefiLibMock;
> + BOOLEAN Enabled;
> +};
> +
> +TEST_F(IsSecureBootEnabledTest, GetVarError) {
> + EXPECT_CALL(UefiLibMock, GetEfiGlobalVariable2)
> + .WillOnce(Return(EFI_ABORTED));
> +
> + Enabled = IsSecureBootEnabled ();
> + EXPECT_EQ(Enabled, FALSE);
> +}
> +
> +//////////////////////////////////////////////////////////////////////////////
> +class IsSecureBootEnabledAllocTest : public IsSecureBootEnabledTest {
> + protected:
> + UINT8 *BootEnabledBuffer;
> +
> + void SetUp() override {
> + BootEnabledBuffer = (UINT8*) AllocatePool(1);
> + ASSERT_NE(BootEnabledBuffer, nullptr);
> + }
> +};
> +
> +TEST_F(IsSecureBootEnabledAllocTest, IsEnabled) {
> + *BootEnabledBuffer = SECURE_BOOT_MODE_ENABLE;
> + EXPECT_CALL(UefiLibMock,
> + GetEfiGlobalVariable2(
> + Char16StrEq(EFI_SECURE_BOOT_MODE_NAME),
> + NotNull(),
> + _))
> + .WillOnce(DoAll(
> + SetArgBuffer<1>(&BootEnabledBuffer, sizeof(VOID*)),
> + Return(EFI_SUCCESS)));
> +
> + Enabled = IsSecureBootEnabled ();
> + EXPECT_EQ(Enabled, TRUE);
> +}
> +
> +TEST_F(IsSecureBootEnabledAllocTest, IsDisabled) {
> + *BootEnabledBuffer = SECURE_BOOT_MODE_DISABLE;
> + EXPECT_CALL(UefiLibMock,
> + GetEfiGlobalVariable2(
> + Char16StrEq(EFI_SECURE_BOOT_MODE_NAME),
> + NotNull(),
> + _))
> + .WillOnce(DoAll(
> + SetArgBuffer<1>(&BootEnabledBuffer, sizeof(VOID*)),
> + Return(EFI_SUCCESS)));
> +
> + Enabled = IsSecureBootEnabled ();
> + EXPECT_EQ(Enabled, FALSE);
> +}
> +
> +int main(int argc, char* argv[]) {
> + testing::InitGoogleTest(&argc, argv);
> + return RUN_ALL_TESTS();
> +}
> diff --git
> a/SecurityPkg/Library/SecureBootVariableLib/GoogleTest/SecureBootVariab
> leLibGoogleTest.inf
> b/SecurityPkg/Library/SecureBootVariableLib/GoogleTest/SecureBootVariab
> leLibGoogleTest.inf
> new file mode 100644
> index 000000000000..5503dcfa32d1
> --- /dev/null
> +++
> b/SecurityPkg/Library/SecureBootVariableLib/GoogleTest/SecureBootVariab
> leLibGoogleTest.inf
> @@ -0,0 +1,32 @@
> +## @file
> +# Unit test suite for the SecureBootVariableLib using Google Test
> +#
> +# Copyright (c) 2022, Intel Corporation. All rights reserved.
> +# SPDX-License-Identifier: BSD-2-Clause-Patent
> +##
> +
> +[Defines]
> + INF_VERSION = 0x00010017
> + BASE_NAME = SecureBootVariableLibGoogleTest
> + FILE_GUID = C88372AB-726B-4344-A250-6C7F826C874E
> + VERSION_STRING = 1.0
> + MODULE_TYPE = HOST_APPLICATION
> +
> +#
> +# The following information is for reference only and not required by the
> build tools.
> +#
> +# VALID_ARCHITECTURES = IA32 X64
> +#
> +
> +[Sources]
> + SecureBootVariableLibGoogleTest.cpp
> +
> +[Packages]
> + MdePkg/MdePkg.dec
> + MdeModulePkg/MdeModulePkg.dec
> + SecurityPkg/SecurityPkg.dec
> + UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec
> +
> +[LibraryClasses]
> + GoogleTestLib
> + SecureBootVariableLib
> diff --git
> a/SecurityPkg/Library/SecureBootVariableLib/UnitTest/MockPlatformPKProt
> ectionLib.inf
> b/SecurityPkg/Library/SecureBootVariableLib/UnitTest/MockPlatformPKProt
> ectionLib.inf
> index 1e19033c5a91..c927ef709958 100644
> ---
> a/SecurityPkg/Library/SecureBootVariableLib/UnitTest/MockPlatformPKProt
> ectionLib.inf
> +++
> b/SecurityPkg/Library/SecureBootVariableLib/UnitTest/MockPlatformPKProt
> ectionLib.inf
> @@ -10,9 +10,9 @@ [Defines]
> INF_VERSION = 0x00010005
> BASE_NAME = MockPlatformPKProtectionLib
> FILE_GUID = 5FCD74D3-3965-4D56-AB83-000B9B4806A0
> - MODULE_TYPE = DXE_DRIVER
> + MODULE_TYPE = HOST_APPLICATION
> VERSION_STRING = 1.0
> - LIBRARY_CLASS = PlatformPKProtectionLib|HOST_APPLICATION
> + LIBRARY_CLASS = PlatformPKProtectionLib
>
> #
> # The following information is for reference only and not required by the
> build tools.
> diff --git
> a/SecurityPkg/Library/SecureBootVariableLib/UnitTest/MockUefiLib.inf
> b/SecurityPkg/Library/SecureBootVariableLib/UnitTest/MockUefiLib.inf
> index a84242ac7205..fecf46841131 100644
> --- a/SecurityPkg/Library/SecureBootVariableLib/UnitTest/MockUefiLib.inf
> +++ b/SecurityPkg/Library/SecureBootVariableLib/UnitTest/MockUefiLib.inf
> @@ -18,9 +18,9 @@ [Defines]
> INF_VERSION = 0x00010005
> BASE_NAME = MockUefiLib
> FILE_GUID = E3B7AEF9-4E55-49AF-B035-ED776C928EC6
> - MODULE_TYPE = UEFI_DRIVER
> + MODULE_TYPE = HOST_APPLICATION
> VERSION_STRING = 1.0
> - LIBRARY_CLASS = UefiLib|HOST_APPLICATION
> + LIBRARY_CLASS = UefiLib
>
> #
> # VALID_ARCHITECTURES = IA32 X64 EBC
> diff --git
> a/SecurityPkg/Library/SecureBootVariableLib/UnitTest/MockUefiRuntimeSer
> vicesTableLib.inf
> b/SecurityPkg/Library/SecureBootVariableLib/UnitTest/MockUefiRuntimeSer
> vicesTableLib.inf
> index f832a93e2254..6fe04189606e 100644
> ---
> a/SecurityPkg/Library/SecureBootVariableLib/UnitTest/MockUefiRuntimeSer
> vicesTableLib.inf
> +++
> b/SecurityPkg/Library/SecureBootVariableLib/UnitTest/MockUefiRuntimeSer
> vicesTableLib.inf
> @@ -10,9 +10,9 @@ [Defines]
> INF_VERSION = 0x00010005
> BASE_NAME = MockUefiRuntimeServicesTableLib
> FILE_GUID = 84CE0021-ABEE-403C-9A1B-763CCF2D40F1
> - MODULE_TYPE = UEFI_DRIVER
> + MODULE_TYPE = HOST_APPLICATION
> VERSION_STRING = 1.0
> - LIBRARY_CLASS =
> UefiRuntimeServicesTableLib|HOST_APPLICATION
> + LIBRARY_CLASS = UefiRuntimeServicesTableLib
>
> #
> # VALID_ARCHITECTURES = IA32 X64 EBC
> diff --git
> a/SecurityPkg/Library/SecureBootVariableLib/UnitTest/SecureBootVariableLi
> bUnitTest.c
> b/SecurityPkg/Library/SecureBootVariableLib/UnitTest/SecureBootVariableLi
> bUnitTest.c
> index a23135dfb016..3a92d5d83457 100644
> ---
> a/SecurityPkg/Library/SecureBootVariableLib/UnitTest/SecureBootVariableLi
> bUnitTest.c
> +++
> b/SecurityPkg/Library/SecureBootVariableLib/UnitTest/SecureBootVariableLi
> bUnitTest.c
> @@ -163,7 +163,7 @@ MockGetVariable (
> return EFI_BUFFER_TOO_SMALL;
> } else {
> assert_non_null (Data);
> - CopyMem (Data, (VOID *)mock (), TargetSize);
> + CopyMem (Data, (VOID *)(UINTN)mock (), TargetSize);
> }
>
> return EFI_SUCCESS;
> diff --git a/SecurityPkg/SecurityPkg.dec b/SecurityPkg/SecurityPkg.dec
> index 0382090f4e75..0a8042d63fe1 100644
> --- a/SecurityPkg/SecurityPkg.dec
> +++ b/SecurityPkg/SecurityPkg.dec
> @@ -21,6 +21,7 @@ [Defines]
>
> [Includes]
> Include
> + Test/Mock/Include
>
> [LibraryClasses]
> ## @libraryclass Provides hash interfaces from different implementations.
> diff --git
> a/SecurityPkg/Test/Mock/Include/GoogleTest/Library/MockPlatformPKProt
> ectionLib.h
> b/SecurityPkg/Test/Mock/Include/GoogleTest/Library/MockPlatformPKProt
> ectionLib.h
> new file mode 100644
> index 000000000000..8024f4be2975
> --- /dev/null
> +++
> b/SecurityPkg/Test/Mock/Include/GoogleTest/Library/MockPlatformPKProt
> ectionLib.h
> @@ -0,0 +1,28 @@
> +/** @file
> + Google Test mocks for PlatformPKProtectionLib
> +
> + Copyright (c) 2022, Intel Corporation. All rights reserved.
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +**/
> +
> +#ifndef MOCK_PLATFORM_PK_PROTECTION_LIB_H_
> +#define MOCK_PLATFORM_PK_PROTECTION_LIB_H_
> +
> +#include <Library/GoogleTestLib.h>
> +#include <Library/FunctionMockLib.h>
> +extern "C" {
> +#include <Uefi.h>
> +#include <Library/PlatformPKProtectionLib.h>
> +}
> +
> +struct MockPlatformPKProtectionLib {
> + MOCK_INTERFACE_DECLARATION (MockPlatformPKProtectionLib);
> +
> + MOCK_FUNCTION_DECLARATION (
> + EFI_STATUS,
> + DisablePKProtection,
> + ()
> + );
> +};
> +
> +#endif
> diff --git
> a/SecurityPkg/Test/Mock/Library/GoogleTest/MockPlatformPKProtectionLib
> /MockPlatformPKProtectionLib.cpp
> b/SecurityPkg/Test/Mock/Library/GoogleTest/MockPlatformPKProtectionLib
> /MockPlatformPKProtectionLib.cpp
> new file mode 100644
> index 000000000000..5ea030f6dfcf
> --- /dev/null
> +++
> b/SecurityPkg/Test/Mock/Library/GoogleTest/MockPlatformPKProtectionLib
> /MockPlatformPKProtectionLib.cpp
> @@ -0,0 +1,11 @@
> +/** @file
> + Google Test mocks for PlatformPKProtectionLib
> +
> + Copyright (c) 2022, Intel Corporation. All rights reserved.
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +**/
> +#include <GoogleTest/Library/MockPlatformPKProtectionLib.h>
> +
> +MOCK_INTERFACE_DEFINITION(MockPlatformPKProtectionLib);
> +
> +MOCK_FUNCTION_DEFINITION(MockPlatformPKProtectionLib,
> DisablePKProtection, 0, EFIAPI);
> diff --git
> a/SecurityPkg/Test/Mock/Library/GoogleTest/MockPlatformPKProtectionLib
> /MockPlatformPKProtectionLib.inf
> b/SecurityPkg/Test/Mock/Library/GoogleTest/MockPlatformPKProtectionLib
> /MockPlatformPKProtectionLib.inf
> new file mode 100644
> index 000000000000..3ed638eaf74c
> --- /dev/null
> +++
> b/SecurityPkg/Test/Mock/Library/GoogleTest/MockPlatformPKProtectionLib
> /MockPlatformPKProtectionLib.inf
> @@ -0,0 +1,34 @@
> +## @file
> +# Google Test mocks for PlatformPKProtectionLib
> +#
> +# Copyright (c) 2022, Intel Corporation. All rights reserved.
> +# SPDX-License-Identifier: BSD-2-Clause-Patent
> +##
> +
> +[Defines]
> + INF_VERSION = 0x00010005
> + BASE_NAME = MockPlatformPKProtectionLib
> + FILE_GUID = C1383D85-E0ED-44E0-A0A6-125F1D78B6E9
> + MODULE_TYPE = HOST_APPLICATION
> + VERSION_STRING = 1.0
> + LIBRARY_CLASS = PlatformPKProtectionLib
> +
> +#
> +# The following information is for reference only and not required by the
> build tools.
> +#
> +# VALID_ARCHITECTURES = IA32 X64
> +#
> +
> +[Sources]
> + MockPlatformPKProtectionLib.cpp
> +
> +[Packages]
> + MdePkg/MdePkg.dec
> + SecurityPkg/SecurityPkg.dec
> + UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec
> +
> +[LibraryClasses]
> + GoogleTestLib
> +
> +[BuildOptions]
> + MSFT:*_*_*_CC_FLAGS = /EHsc
> diff --git a/SecurityPkg/Test/SecurityPkgHostTest.dsc
> b/SecurityPkg/Test/SecurityPkgHostTest.dsc
> index c4df01fe1b73..ad5b4fc350ea 100644
> --- a/SecurityPkg/Test/SecurityPkgHostTest.dsc
> +++ b/SecurityPkg/Test/SecurityPkgHostTest.dsc
> @@ -25,6 +25,7 @@ [Components]
>
> SecurityPkg/Library/SecureBootVariableLib/UnitTest/MockUefiRuntimeServi
> cesTableLib.inf
>
> SecurityPkg/Library/SecureBootVariableLib/UnitTest/MockPlatformPKProtec
> tionLib.inf
> SecurityPkg/Library/SecureBootVariableLib/UnitTest/MockUefiLib.inf
> +
> SecurityPkg/Test/Mock/Library/GoogleTest/MockPlatformPKProtectionLib/
> MockPlatformPKProtectionLib.inf
>
> #
> # Build SecurityPkg HOST_APPLICATION Tests
> @@ -36,3 +37,10 @@ [Components]
>
> PlatformPKProtectionLib|SecurityPkg/Library/SecureBootVariableLib/UnitTe
> st/MockPlatformPKProtectionLib.inf
>
> UefiLib|SecurityPkg/Library/SecureBootVariableLib/UnitTest/MockUefiLib.in
> f
> }
> +
> SecurityPkg/Library/SecureBootVariableLib/GoogleTest/SecureBootVariable
> LibGoogleTest.inf {
> + <LibraryClasses>
> +
> SecureBootVariableLib|SecurityPkg/Library/SecureBootVariableLib/SecureB
> ootVariableLib.inf
> +
> UefiRuntimeServicesTableLib|MdePkg/Test/Mock/Library/GoogleTest/Mock
> UefiRuntimeServicesTableLib/MockUefiRuntimeServicesTableLib.inf
> +
> PlatformPKProtectionLib|SecurityPkg/Test/Mock/Library/GoogleTest/MockP
> latformPKProtectionLib/MockPlatformPKProtectionLib.inf
> +
> UefiLib|MdePkg/Test/Mock/Library/GoogleTest/MockUefiLib/MockUefiLib.i
> nf
> + }
> --
> 2.39.1.windows.1
next prev parent reply other threads:[~2023-03-26 2:51 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-25 18:45 [Patch 00/12] Add gmock support for host-based unit testing Michael D Kinney
2023-03-25 18:45 ` [Patch 01/12] UnitTestFrameworkPkg: Add subhook submodule required for gmock Michael D Kinney
2023-03-25 18:45 ` [Patch 02/12] .pytool/CISettings.py: Add subhook submodule Michael D Kinney
2023-03-25 18:45 ` [Patch 03/12] UnitTestFrameworkPkg: Add gmock support to GoogleTestLib Michael D Kinney
2023-03-25 18:45 ` [Patch 04/12] UnitTestFrameworkPkg/ReadMe.md: Add gmock documentation Michael D Kinney
2023-03-28 18:23 ` Johnson, Chris N
2023-03-25 18:45 ` [Patch 05/12] MdePkg: Add gmock examples Michael D Kinney
2023-03-25 18:45 ` [Patch 06/12] MdeModulePkg/Library/UefiSortLib: Add GoogleTestLib example Michael D Kinney
2023-03-25 18:45 ` [Patch 07/12] SecurityPkg: Add gmock example Michael D Kinney
2023-03-26 2:51 ` Yao, Jiewen [this message]
2023-03-25 18:45 ` [Patch 08/12] SecurityPkg/Library/SecureBootVariableLib: Fix VS20xx 4122 errors Michael D Kinney
2023-03-26 2:50 ` Yao, Jiewen
2023-03-25 18:45 ` [Patch 09/12] SecurityPkg/Library/SecureBootVariableLib: HOST_APPLICATION IA32/X64 only Michael D Kinney
2023-03-26 2:50 ` Yao, Jiewen
2023-03-25 18:45 ` [Patch 10/12] MdePkg/Library/BaseLib: " Michael D Kinney
2023-03-25 18:45 ` [Patch 11/12] MdeModulePkg: " Michael D Kinney
2023-03-25 18:45 ` [Patch 12/12] PrmPkg/Library: " Michael D Kinney
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=MW4PR11MB58729893B0B20D15CACAE6A68C8A9@MW4PR11MB5872.namprd11.prod.outlook.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox