From: "Wu, Hao A" <hao.a.wu@intel.com>
To: "Kinney, Michael D" <michael.d.kinney@intel.com>,
"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: Sean Brogan <sean.brogan@microsoft.com>,
Bret Barkelew <Bret.Barkelew@microsoft.com>,
"Gao, Liming" <liming.gao@intel.com>
Subject: Re: [Patch 09/11] MdeModulePkg: Add DxeResetSystemLib unit test
Date: Fri, 7 Feb 2020 01:25:44 +0000 [thread overview]
Message-ID: <B80AF82E9BFB8E4FBD8C89DA810C6A093C9A4E5E@SHSMSX104.ccr.corp.intel.com> (raw)
In-Reply-To: <20200124021032.13808-10-michael.d.kinney@intel.com>
> -----Original Message-----
> From: Kinney, Michael D
> Sent: Friday, January 24, 2020 10:11 AM
> To: devel@edk2.groups.io
> Cc: Sean Brogan; Bret Barkelew; Gao, Liming; Wu, Hao A
> Subject: [Patch 09/11] MdeModulePkg: Add DxeResetSystemLib unit test
>
> * Add unit test of DxeResetSystemLib library
> instance that uses cmocka interfaces to mock the
> UEFI Runtime Services Table and its ResetSystem()
> service. When a unit test uses the cmocka
> interfaces, the unit test does not support being
> run from target environments.
>
> cmocka APIs: https://api.cmocka.org/index.html
>
> This example puts the unit test in a UnitTest
> directory below the library INF file and this location
> means the unit test is only designed to work this
> this one library instance.
>
> * Add Test/MdeModulePkgHostTest.dsc to build host
> based unit tests
Acked-by: Hao A Wu <hao.a.wu@intel.com>
Best Regards,
Hao Wu
>
> Cc: Sean Brogan <sean.brogan@microsoft.com>
> Cc: Bret Barkelew <Bret.Barkelew@microsoft.com>
> Cc: Liming Gao <liming.gao@intel.com>
> Cc: Hao A Wu <hao.a.wu@intel.com>
> Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
> ---
> .../UnitTest/DxeResetSystemLibUnitTest.c | 312 ++++++++++++++++++
> .../DxeResetSystemLibUnitTestHost.inf | 34 ++
> .../MockUefiRuntimeServicesTableLib.c | 13 +
> .../MockUefiRuntimeServicesTableLib.inf | 25 ++
> MdeModulePkg/MdeModulePkg.ci.yaml | 13 +-
> MdeModulePkg/Test/MdeModulePkgHostTest.dsc | 32 ++
> 6 files changed, 428 insertions(+), 1 deletion(-)
> create mode 100644
> MdeModulePkg/Library/DxeResetSystemLib/UnitTest/DxeResetSystemLibUn
> itTest.c
> create mode 100644
> MdeModulePkg/Library/DxeResetSystemLib/UnitTest/DxeResetSystemLibUn
> itTestHost.inf
> create mode 100644
> MdeModulePkg/Library/DxeResetSystemLib/UnitTest/MockUefiRuntimeServ
> icesTableLib.c
> create mode 100644
> MdeModulePkg/Library/DxeResetSystemLib/UnitTest/MockUefiRuntimeServ
> icesTableLib.inf
> create mode 100644 MdeModulePkg/Test/MdeModulePkgHostTest.dsc
>
> diff --git
> a/MdeModulePkg/Library/DxeResetSystemLib/UnitTest/DxeResetSystemLib
> UnitTest.c
> b/MdeModulePkg/Library/DxeResetSystemLib/UnitTest/DxeResetSystemLib
> UnitTest.c
> new file mode 100644
> index 0000000000..5f7cedb61b
> --- /dev/null
> +++
> b/MdeModulePkg/Library/DxeResetSystemLib/UnitTest/DxeResetSystemLib
> UnitTest.c
> @@ -0,0 +1,312 @@
> +/** @file
> + Unit tests of the DxeResetSystemLib instance of the ResetSystemLib class
> +
> + Copyright (C) Microsoft Corporation.
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +#include <stdio.h>
> +#include <string.h>
> +#include <stdarg.h>
> +#include <stddef.h>
> +#include <setjmp.h>
> +#include <cmocka.h>
> +
> +#include <Uefi.h>
> +#include <Library/BaseLib.h>
> +#include <Library/BaseMemoryLib.h>
> +#include <Library/DebugLib.h>
> +#include <Library/MemoryAllocationLib.h>
> +
> +#include <Library/UnitTestLib.h>
> +#include <Library/ResetSystemLib.h>
> +
> +#define UNIT_TEST_APP_NAME "DxeResetSystemLib Unit Tests"
> +#define UNIT_TEST_APP_VERSION "1.0"
> +
> +/**
> + Resets the entire platform.
> +
> + @param[in] ResetType The type of reset to perform.
> + @param[in] ResetStatus The status code for the reset.
> + @param[in] DataSize The size, in bytes, of ResetData.
> + @param[in] ResetData For a ResetType of EfiResetCold,
> EfiResetWarm, or
> + EfiResetShutdown the data buffer starts with a Null-
> terminated
> + string, optionally followed by additional binary data.
> + The string is a description that the caller may use to
> further
> + indicate the reason for the system reset.
> + For a ResetType of EfiResetPlatformSpecific the data
> buffer
> + also starts with a Null-terminated string that is followed
> + by an EFI_GUID that describes the specific type of reset to
> perform.
> +**/
> +STATIC
> +VOID
> +EFIAPI
> +MockResetSystem (
> + IN EFI_RESET_TYPE ResetType,
> + IN EFI_STATUS ResetStatus,
> + IN UINTN DataSize,
> + IN VOID *ResetData OPTIONAL
> + )
> +{
> + check_expected_ptr (ResetType);
> + check_expected_ptr (ResetStatus);
> +
> + //
> + // NOTE: Mocked functions can also return values, but that
> + // is for another demo.
> +}
> +
> +///
> +/// Mock version of the UEFI Runtime Services Table
> +///
> +EFI_RUNTIME_SERVICES MockRuntime = {
> + {
> + EFI_RUNTIME_SERVICES_SIGNATURE, // Signature
> + EFI_RUNTIME_SERVICES_REVISION, // Revision
> + sizeof (EFI_RUNTIME_SERVICES), // HeaderSize
> + 0, // CRC32
> + 0 // Reserved
> + },
> + NULL, // GetTime
> + NULL, // SetTime
> + NULL, // GetWakeupTime
> + NULL, // SetWakeupTime
> + NULL, // SetVirtualAddressMap
> + NULL, // ConvertPointer
> + NULL, // GetVariable
> + NULL, // GetNextVariableName
> + NULL, // SetVariable
> + NULL, // GetNextHighMonotonicCount
> + MockResetSystem, // ResetSystem
> + NULL, // UpdateCapsule
> + NULL, // QueryCapsuleCapabilities
> + NULL // QueryVariableInfo
> +};
> +
> +/**
> + Unit test for ColdReset () API of the ResetSystemLib.
> +
> + @param[in] Context [Optional] An optional paramter that enables:
> + 1) test-case reuse with varied parameters and
> + 2) test-case re-entry for Target tests that need a
> + reboot. This parameter is a VOID* and it is the
> + responsibility of the test author to ensure that the
> + contents are well understood by all test cases that may
> + consume it.
> +
> + @retval UNIT_TEST_PASSED The Unit test has completed and the
> test
> + case was successful.
> + @retval UNIT_TEST_ERROR_TEST_FAILED A test case assertion has failed.
> +**/
> +UNIT_TEST_STATUS
> +EFIAPI
> +ResetColdShouldIssueAColdReset (
> + IN UNIT_TEST_CONTEXT Context
> + )
> +{
> + expect_value (MockResetSystem, ResetType, EfiResetCold);
> + expect_value (MockResetSystem, ResetStatus, EFI_SUCCESS);
> +
> + ResetCold ();
> +
> + return UNIT_TEST_PASSED;
> +}
> +
> +/**
> + Unit test for WarmReset () API of the ResetSystemLib.
> +
> + @param[in] Context [Optional] An optional paramter that enables:
> + 1) test-case reuse with varied parameters and
> + 2) test-case re-entry for Target tests that need a
> + reboot. This parameter is a VOID* and it is the
> + responsibility of the test author to ensure that the
> + contents are well understood by all test cases that may
> + consume it.
> +
> + @retval UNIT_TEST_PASSED The Unit test has completed and the
> test
> + case was successful.
> + @retval UNIT_TEST_ERROR_TEST_FAILED A test case assertion has failed.
> +**/
> +UNIT_TEST_STATUS
> +EFIAPI
> +ResetWarmShouldIssueAWarmReset (
> + IN UNIT_TEST_CONTEXT Context
> + )
> +{
> + expect_value (MockResetSystem, ResetType, EfiResetWarm);
> + expect_value (MockResetSystem, ResetStatus, EFI_SUCCESS);
> +
> + ResetWarm ();
> +
> + return UNIT_TEST_PASSED;
> +}
> +
> +/**
> + Unit test for ResetShutdown () API of the ResetSystemLib.
> +
> + @param[in] Context [Optional] An optional paramter that enables:
> + 1) test-case reuse with varied parameters and
> + 2) test-case re-entry for Target tests that need a
> + reboot. This parameter is a VOID* and it is the
> + responsibility of the test author to ensure that the
> + contents are well understood by all test cases that may
> + consume it.
> +
> + @retval UNIT_TEST_PASSED The Unit test has completed and the
> test
> + case was successful.
> + @retval UNIT_TEST_ERROR_TEST_FAILED A test case assertion has failed.
> +**/
> +UNIT_TEST_STATUS
> +EFIAPI
> +ResetShutdownShouldIssueAShutdown (
> + IN UNIT_TEST_CONTEXT Context
> + )
> +{
> + expect_value (MockResetSystem, ResetType, EfiResetShutdown);
> + expect_value (MockResetSystem, ResetStatus, EFI_SUCCESS);
> +
> + ResetShutdown ();
> +
> + return UNIT_TEST_PASSED;
> +}
> +
> +/**
> + Unit test for ResetPlatformSpecific () API of the ResetSystemLib.
> +
> + @param[in] Context [Optional] An optional paramter that enables:
> + 1) test-case reuse with varied parameters and
> + 2) test-case re-entry for Target tests that need a
> + reboot. This parameter is a VOID* and it is the
> + responsibility of the test author to ensure that the
> + contents are well understood by all test cases that may
> + consume it.
> +
> + @retval UNIT_TEST_PASSED The Unit test has completed and the
> test
> + case was successful.
> + @retval UNIT_TEST_ERROR_TEST_FAILED A test case assertion has failed.
> +**/
> +UNIT_TEST_STATUS
> +EFIAPI
> +ResetPlatformSpecificShouldIssueAPlatformSpecificReset (
> + IN UNIT_TEST_CONTEXT Context
> + )
> +{
> + expect_value (MockResetSystem, ResetType, EfiResetPlatformSpecific);
> + expect_value (MockResetSystem, ResetStatus, EFI_SUCCESS);
> +
> + ResetPlatformSpecific (0, NULL);
> +
> + return UNIT_TEST_PASSED;
> +}
> +
> +/**
> + Unit test for ResetSystem () API of the ResetSystemLib.
> +
> + @param[in] Context [Optional] An optional paramter that enables:
> + 1) test-case reuse with varied parameters and
> + 2) test-case re-entry for Target tests that need a
> + reboot. This parameter is a VOID* and it is the
> + responsibility of the test author to ensure that the
> + contents are well understood by all test cases that may
> + consume it.
> +
> + @retval UNIT_TEST_PASSED The Unit test has completed and the
> test
> + case was successful.
> + @retval UNIT_TEST_ERROR_TEST_FAILED A test case assertion has failed.
> +**/
> +UNIT_TEST_STATUS
> +EFIAPI
> +ResetSystemShouldPassTheParametersThrough (
> + IN UNIT_TEST_CONTEXT Context
> + )
> +{
> + expect_value (MockResetSystem, ResetType, EfiResetCold);
> + expect_value (MockResetSystem, ResetStatus, EFI_SUCCESS);
> +
> + ResetSystem (EfiResetCold, EFI_SUCCESS, 0, NULL);
> +
> + expect_value (MockResetSystem, ResetType, EfiResetShutdown);
> + expect_value (MockResetSystem, ResetStatus, EFI_SUCCESS);
> +
> + ResetSystem (EfiResetShutdown, EFI_SUCCESS, 0, NULL);
> +
> + return UNIT_TEST_PASSED;
> +}
> +
> +/**
> + Initialze the unit test framework, suite, and unit tests for the
> + ResetSystemLib and run the ResetSystemLib unit test.
> +
> + @retval EFI_SUCCESS All test cases were dispached.
> + @retval EFI_OUT_OF_RESOURCES There are not enough resources
> available to
> + initialize the unit tests.
> +**/
> +STATIC
> +EFI_STATUS
> +EFIAPI
> +UnitTestingEntry (
> + VOID
> + )
> +{
> + EFI_STATUS Status;
> + UNIT_TEST_FRAMEWORK_HANDLE Framework;
> + UNIT_TEST_SUITE_HANDLE ResetTests;
> +
> + Framework = NULL;
> +
> + DEBUG(( DEBUG_INFO, "%a v%a\n", UNIT_TEST_APP_NAME,
> UNIT_TEST_APP_VERSION ));
> +
> + //
> + // Start setting up the test framework for running the tests.
> + //
> + Status = InitUnitTestFramework (&Framework, UNIT_TEST_APP_NAME,
> gEfiCallerBaseName, UNIT_TEST_APP_VERSION);
> + if (EFI_ERROR (Status)) {
> + DEBUG ((DEBUG_ERROR, "Failed in InitUnitTestFramework. Status
> = %r\n", Status));
> + goto EXIT;
> + }
> +
> + //
> + // Populate the ResetSytemLib Unit Test Suite.
> + //
> + Status = CreateUnitTestSuite (&ResetTests, Framework,
> "DxeResetSystemLib Reset Tests", "ResetSystemLib.Reset", NULL, NULL);
> + if (EFI_ERROR (Status)) {
> + DEBUG ((DEBUG_ERROR, "Failed in CreateUnitTestSuite for
> ResetTests\n"));
> + Status = EFI_OUT_OF_RESOURCES;
> + goto EXIT;
> + }
> +
> + //
> + // --------------Suite-----------Description--------------Name----------Function-
> -------Pre---Post-------------------Context-----------
> + //
> + AddTestCase (ResetTests, "ResetCold should issue a cold reset", "Cold",
> ResetColdShouldIssueAColdReset, NULL, NULL, NULL);
> + AddTestCase (ResetTests, "ResetWarm should issue a warm reset",
> "Warm", ResetWarmShouldIssueAWarmReset, NULL, NULL, NULL);
> + AddTestCase (ResetTests, "ResetShutdown should issue a shutdown",
> "Shutdown", ResetShutdownShouldIssueAShutdown, NULL, NULL, NULL);
> + AddTestCase (ResetTests, "ResetPlatformSpecific should issue a platform-
> specific reset", "Platform",
> ResetPlatformSpecificShouldIssueAPlatformSpecificReset, NULL, NULL,
> NULL);
> + AddTestCase (ResetTests, "ResetSystem should pass all parameters
> through", "Parameters", ResetSystemShouldPassTheParametersThrough,
> NULL, NULL, NULL);
> +
> + //
> + // Execute the tests.
> + //
> + Status = RunAllTestSuites (Framework);
> +
> +EXIT:
> + if (Framework) {
> + FreeUnitTestFramework (Framework);
> + }
> +
> + return Status;
> +}
> +
> +/**
> + Standard POSIX C entry point for host based unit test execution.
> +**/
> +int
> +main (
> + int argc,
> + char *argv[]
> + )
> +{
> + return UnitTestingEntry ();
> +}
> diff --git
> a/MdeModulePkg/Library/DxeResetSystemLib/UnitTest/DxeResetSystemLib
> UnitTestHost.inf
> b/MdeModulePkg/Library/DxeResetSystemLib/UnitTest/DxeResetSystemLib
> UnitTestHost.inf
> new file mode 100644
> index 0000000000..54f968e810
> --- /dev/null
> +++
> b/MdeModulePkg/Library/DxeResetSystemLib/UnitTest/DxeResetSystemLib
> UnitTestHost.inf
> @@ -0,0 +1,34 @@
> +## @file
> +# Unit tests of the DxeResetSystemLib instance of the ResetSystemLib class
> +#
> +# Copyright (C) Microsoft Corporation.
> +# SPDX-License-Identifier: BSD-2-Clause-Patent
> +##
> +
> +[Defines]
> + INF_VERSION = 0x00010006
> + BASE_NAME = DxeResetSystemLibUnitTestHost
> + FILE_GUID = 83E35653-B943-4C5F-BA08-9B2996AE9273
> + MODULE_TYPE = HOST_APPLICATION
> + VERSION_STRING = 1.0
> +
> +#
> +# The following information is for reference only and not required by the
> build tools.
> +#
> +# VALID_ARCHITECTURES = IA32 X64
> +#
> +
> +[Sources]
> + DxeResetSystemLibUnitTest.c
> +
> +[Packages]
> + MdePkg/MdePkg.dec
> + MdeModulePkg/MdeModulePkg.dec
> + UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec
> +
> +[LibraryClasses]
> + ResetSystemLib
> + BaseLib
> + BaseMemoryLib
> + DebugLib
> + UnitTestLib
> diff --git
> a/MdeModulePkg/Library/DxeResetSystemLib/UnitTest/MockUefiRuntimeSe
> rvicesTableLib.c
> b/MdeModulePkg/Library/DxeResetSystemLib/UnitTest/MockUefiRuntimeSe
> rvicesTableLib.c
> new file mode 100644
> index 0000000000..3540e1c039
> --- /dev/null
> +++
> b/MdeModulePkg/Library/DxeResetSystemLib/UnitTest/MockUefiRuntimeSe
> rvicesTableLib.c
> @@ -0,0 +1,13 @@
> +/** @file
> + Mock implementation of the UEFI Runtime Services Table Library.
> +
> + Copyright (C) Microsoft Corporation.
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +#include <Uefi.h>
> +
> +extern EFI_RUNTIME_SERVICES MockRuntime;
> +
> +EFI_RUNTIME_SERVICES *gRT = &MockRuntime;
> diff --git
> a/MdeModulePkg/Library/DxeResetSystemLib/UnitTest/MockUefiRuntimeSe
> rvicesTableLib.inf
> b/MdeModulePkg/Library/DxeResetSystemLib/UnitTest/MockUefiRuntimeSe
> rvicesTableLib.inf
> new file mode 100644
> index 0000000000..e716b855a3
> --- /dev/null
> +++
> b/MdeModulePkg/Library/DxeResetSystemLib/UnitTest/MockUefiRuntimeSe
> rvicesTableLib.inf
> @@ -0,0 +1,25 @@
> +## @file
> +# Mock implementation of the UEFI Runtime Services Table Library.
> +#
> +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>
> +# SPDX-License-Identifier: BSD-2-Clause-Patent
> +#
> +##
> +
> +[Defines]
> + INF_VERSION = 0x00010005
> + BASE_NAME = MockUefiRuntimeServicesTableLib
> + FILE_GUID = 4EA215EE-85C1-4A0A-847F-D2A8DE20805F
> + MODULE_TYPE = UEFI_DRIVER
> + VERSION_STRING = 1.0
> + LIBRARY_CLASS =
> UefiRuntimeServicesTableLib|HOST_APPLICATION
> +
> +#
> +# VALID_ARCHITECTURES = IA32 X64 EBC
> +#
> +
> +[Sources]
> + MockUefiRuntimeServicesTableLib.c
> +
> +[Packages]
> + MdePkg/MdePkg.dec
> diff --git a/MdeModulePkg/MdeModulePkg.ci.yaml
> b/MdeModulePkg/MdeModulePkg.ci.yaml
> index 0bf149f205..3b6e747075 100644
> --- a/MdeModulePkg/MdeModulePkg.ci.yaml
> +++ b/MdeModulePkg/MdeModulePkg.ci.yaml
> @@ -9,6 +9,10 @@
> "CompilerPlugin": {
> "DscPath": "MdeModulePkg.dsc"
> },
> + ## options defined ci/Plugin/HostUnitTestCompilerPlugin
> + "HostUnitTestCompilerPlugin": {
> + "DscPath": "Test/MdeModulePkgHostTest.dsc"
> + },
>
> ## options defined ci/Plugin/CharEncodingCheck
> "CharEncodingCheck": {
> @@ -24,7 +28,9 @@
> "ArmPkg/ArmPkg.dec" # this should be fixed by promoting an
> abstraction
> ],
> # For host based unit tests
> - "AcceptableDependencies-HOST_APPLICATION":[],
> + "AcceptableDependencies-HOST_APPLICATION":[
> + "UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec"
> + ],
> # For UEFI shell based apps
> "AcceptableDependencies-UEFI_APPLICATION":[],
> "IgnoreInf": []
> @@ -35,6 +41,11 @@
> "IgnoreInf": [],
> "DscPath": "MdeModulePkg.dsc"
> },
> + ## options defined ci/Plugin/HostUnitTestDscCompleteCheck
> + "HostUnitTestDscCompleteCheck": {
> + "IgnoreInf": [""],
> + "DscPath": "Test/MdeModulePkgHostTest.dsc"
> + },
>
> ## options defined ci/Plugin/GuidCheck
> "GuidCheck": {
> diff --git a/MdeModulePkg/Test/MdeModulePkgHostTest.dsc
> b/MdeModulePkg/Test/MdeModulePkgHostTest.dsc
> new file mode 100644
> index 0000000000..72a119db45
> --- /dev/null
> +++ b/MdeModulePkg/Test/MdeModulePkgHostTest.dsc
> @@ -0,0 +1,32 @@
> +## @file
> +# MdeModulePkg DSC file used to build host-based unit tests.
> +#
> +# Copyright (c) 2019 - 2020, Intel Corporation. All rights reserved.<BR>
> +# Copyright (C) Microsoft Corporation.
> +# SPDX-License-Identifier: BSD-2-Clause-Patent
> +#
> +##
> +
> +[Defines]
> + PLATFORM_NAME = MdeModulePkgHostTest
> + PLATFORM_GUID = F74AF7C6-698C-4EBA-BA49-FF6816916354
> + PLATFORM_VERSION = 0.1
> + DSC_SPECIFICATION = 0x00010005
> + OUTPUT_DIRECTORY = Build/MdeModulePkg/HostTest
> + SUPPORTED_ARCHITECTURES = IA32|X64
> + BUILD_TARGETS = NOOPT
> + SKUID_IDENTIFIER = DEFAULT
> +
> +!include UnitTestFrameworkPkg/UnitTestFrameworkPkgHost.dsc.inc
> +
> +[Components]
> +
> MdeModulePkg/Library/DxeResetSystemLib/UnitTest/MockUefiRuntimeServ
> icesTableLib.inf
> +
> + #
> + # Build MdeModulePkg HOST_APPLICATION Tests
> + #
> +
> MdeModulePkg/Library/DxeResetSystemLib/UnitTest/DxeResetSystemLibUn
> itTestHost.inf {
> + <LibraryClasses>
> +
> ResetSystemLib|MdeModulePkg/Library/DxeResetSystemLib/DxeResetSyste
> mLib.inf
> +
> UefiRuntimeServicesTableLib|MdeModulePkg/Library/DxeResetSystemLib/U
> nitTest/MockUefiRuntimeServicesTableLib.inf
> + }
> --
> 2.21.0.windows.1
next prev parent reply other threads:[~2020-02-07 1:25 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-24 2:10 [Patch 00/11] Add Unit Test Framework Michael D Kinney
2020-01-24 2:10 ` [Patch 01/11] .pytool: Add CI support for host based unit tests with results Michael D Kinney
2020-01-27 23:28 ` [edk2-devel] " brbarkel
2020-01-24 2:10 ` [Patch 02/11] BaseTools/Plugin: Add HostBasedUnitTestRunner plugin Michael D Kinney
2020-01-27 23:29 ` [edk2-devel] " brbarkel
2020-02-07 2:32 ` Bob Feng
2020-01-24 2:10 ` [Patch 03/11] MdePkg/Include/Library: Add UnitTestLib class Michael D Kinney
2020-01-27 23:42 ` [edk2-devel] " brbarkel
2020-02-07 0:49 ` Michael D Kinney
2020-02-07 1:22 ` Wu, Hao A
2020-02-07 5:43 ` Bret Barkelew
2020-01-24 2:10 ` [Patch 04/11] UnitTestFrameworkPkg: Add public and private interfaces Michael D Kinney
2020-01-27 23:42 ` [edk2-devel] " brbarkel
2020-01-24 2:10 ` [Patch 05/11] UnitTestFrameworkPkg/Library: Add library instances Michael D Kinney
2020-01-27 23:43 ` [edk2-devel] " brbarkel
2020-01-24 2:10 ` [Patch 06/11] UnitTestFrameworkPkg/Test: Add unit test samples Michael D Kinney
2020-01-27 23:43 ` [edk2-devel] " brbarkel
2020-01-24 2:10 ` [Patch 07/11] UnitTestFrameworkPkg: Add DSC, DSC INC, and YAML files Michael D Kinney
2020-01-27 23:43 ` [edk2-devel] " brbarkel
2020-01-24 2:10 ` [Patch 08/11] MdePkg/Test: Add SafeIntLib and BaseLib Base64 unit tests Michael D Kinney
2020-01-27 23:43 ` [edk2-devel] " brbarkel
2020-02-07 1:27 ` Wu, Hao A
2020-02-07 7:56 ` Liming Gao
2020-02-07 16:05 ` Michael D Kinney
2020-01-24 2:10 ` [Patch 09/11] MdeModulePkg: Add DxeResetSystemLib unit test Michael D Kinney
2020-01-27 23:43 ` [edk2-devel] " brbarkel
2020-02-07 1:25 ` Wu, Hao A [this message]
2020-01-24 2:10 ` [Patch 10/11] .azurepipelines: Enable CI for UnitTestFrameworkPkg and host tests Michael D Kinney
2020-01-27 23:44 ` [edk2-devel] " brbarkel
2020-01-24 2:10 ` [Patch 11/11] Maintainers.txt: Add UnitTestFrameworkPkg Michael D Kinney
2020-01-24 10:22 ` Laszlo Ersek
2020-01-27 23:44 ` [edk2-devel] " brbarkel
2020-01-27 23:28 ` [edk2-devel] [Patch 00/11] Add Unit Test Framework brbarkel
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=B80AF82E9BFB8E4FBD8C89DA810C6A093C9A4E5E@SHSMSX104.ccr.corp.intel.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