[edk2-devel] 回复: [Patch v2 05/12] MdePkg: Add gmock examples

gaoliming via groups.io gaoliming=byosoft.com.cn at groups.io
Thu Apr 6 01:15:47 UTC 2023


Acked-by: Liming Gao <gaoliming at byosoft.com.cn>

> -----邮件原件-----
> 发件人: Michael D Kinney <michael.d.kinney at intel.com>
> 发送时间: 2023年4月5日 2:22
> 收件人: devel at edk2.groups.io
> 抄送: Chris Johnson <chris.n.johnson at intel.com>; Liming Gao
> <gaoliming at byosoft.com.cn>; Zhiguang Liu <zhiguang.liu at intel.com>
> 主题: [Patch v2 05/12] MdePkg: Add gmock examples
> 
> From: Chris Johnson <chris.n.johnson at intel.com>
> 
> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4389
> 
> Cc: Michael D Kinney <michael.d.kinney at intel.com>
> Cc: Liming Gao <gaoliming at byosoft.com.cn>
> Cc: Zhiguang Liu <zhiguang.liu at intel.com>
> Signed-off-by: Chris Johnson <chris.n.johnson at intel.com>
> ---
>  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 +++++++++++++++
>  8 files changed, 202 insertions(+)
>  create mode 100644
> MdePkg/Test/Mock/Include/GoogleTest/Library/MockUefiLib.h
>  create mode 100644
> MdePkg/Test/Mock/Include/GoogleTest/Library/MockUefiRuntimeServicesTa
> bleLib.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
> 
> diff --git a/MdePkg/MdePkg.dec b/MdePkg/MdePkg.dec
> index 2d643bede1d7..2a1d7694aa18 100644
> --- a/MdePkg/MdePkg.dec
> +++ b/MdePkg/MdePkg.dec
> @@ -26,6 +26,7 @@ [Defines]
>  [Includes]
>    Include
>    Test/UnitTest/Include
> +  Test/Mock/Include
> 
>  [Includes.IA32]
>    Include/Ia32
> diff --git a/MdePkg/Test/MdePkgHostTest.dsc
> b/MdePkg/Test/MdePkgHostTest.dsc
> index b8b186dd8b17..35e3ef6d9729 100644
> --- a/MdePkg/Test/MdePkgHostTest.dsc
> +++ b/MdePkg/Test/MdePkgHostTest.dsc
> @@ -34,3 +34,5 @@ [Components]
>    # Build HOST_APPLICATION Libraries
>    #
>    MdePkg/Library/BaseLib/UnitTestHostBaseLib.inf
> +  MdePkg/Test/Mock/Library/GoogleTest/MockUefiLib/MockUefiLib.inf
> +
> MdePkg/Test/Mock/Library/GoogleTest/MockUefiRuntimeServicesTableLib/
> MockUefiRuntimeServicesTableLib.inf
> diff --git a/MdePkg/Test/Mock/Include/GoogleTest/Library/MockUefiLib.h
> b/MdePkg/Test/Mock/Include/GoogleTest/Library/MockUefiLib.h
> new file mode 100644
> index 000000000000..dec2c93e1b34
> --- /dev/null
> +++ b/MdePkg/Test/Mock/Include/GoogleTest/Library/MockUefiLib.h
> @@ -0,0 +1,39 @@
> +/** @file
> +  Google Test mocks for UefiLib
> +
> +  Copyright (c) 2022, Intel Corporation. All rights reserved.
> +  SPDX-License-Identifier: BSD-2-Clause-Patent
> +**/
> +
> +#ifndef MOCK_UEFI_LIB_H_
> +#define MOCK_UEFI_LIB_H_
> +
> +#include <Library/GoogleTestLib.h>
> +#include <Library/FunctionMockLib.h>
> +extern "C" {
> +#include <Uefi.h>
> +#include <Library/UefiLib.h>
> +}
> +
> +struct MockUefiLib {
> +  MOCK_INTERFACE_DECLARATION (MockUefiLib);
> +
> +  MOCK_FUNCTION_DECLARATION (
> +    EFI_STATUS,
> +    GetVariable2,
> +    (IN CONST CHAR16    *Name,
> +     IN CONST EFI_GUID  *Guid,
> +     OUT VOID           **Value,
> +     OUT UINTN          *Size OPTIONAL)
> +    );
> +
> +  MOCK_FUNCTION_DECLARATION (
> +    EFI_STATUS,
> +    GetEfiGlobalVariable2,
> +    (IN CONST CHAR16  *Name,
> +     OUT VOID         **Value,
> +     OUT UINTN        *Size OPTIONAL)
> +    );
> +};
> +
> +#endif
> diff --git
> a/MdePkg/Test/Mock/Include/GoogleTest/Library/MockUefiRuntimeServices
> TableLib.h
> b/MdePkg/Test/Mock/Include/GoogleTest/Library/MockUefiRuntimeServices
> TableLib.h
> new file mode 100644
> index 000000000000..afdfc6b85597
> --- /dev/null
> +++
> b/MdePkg/Test/Mock/Include/GoogleTest/Library/MockUefiRuntimeServices
> TableLib.h
> @@ -0,0 +1,42 @@
> +/** @file
> +  Google Test mocks for UefiRuntimeServicesTableLib
> +
> +  Copyright (c) 2022, Intel Corporation. All rights reserved.
> +  SPDX-License-Identifier: BSD-2-Clause-Patent
> +**/
> +
> +#ifndef MOCK_UEFI_RUNTIME_SERVICES_TABLE_LIB_H_
> +#define MOCK_UEFI_RUNTIME_SERVICES_TABLE_LIB_H_
> +
> +#include <Library/GoogleTestLib.h>
> +#include <Library/FunctionMockLib.h>
> +extern "C" {
> +#include <Uefi.h>
> +#include <Library/UefiRuntimeServicesTableLib.h>
> +}
> +
> +struct MockUefiRuntimeServicesTableLib {
> +  MOCK_INTERFACE_DECLARATION (MockUefiRuntimeServicesTableLib);
> +
> +  MOCK_FUNCTION_DECLARATION (
> +    EFI_STATUS,
> +    gRT_GetVariable,
> +    (IN      CHAR16    *VariableName,
> +     IN      EFI_GUID  *VendorGuid,
> +     OUT     UINT32    *Attributes OPTIONAL,
> +     IN OUT  UINTN     *DataSize,
> +     OUT     VOID      *Data)
> +    );
> +
> +  MOCK_FUNCTION_DECLARATION (
> +    EFI_STATUS,
> +    gRT_SetVariable,
> +    (IN CHAR16    *VariableName,
> +     IN EFI_GUID  *VendorGuid,
> +     IN UINT32    Attributes,
> +     IN UINTN     DataSize,
> +     IN VOID      *Data)
> +    );
> +};
> +
> +#endif
> diff --git
> a/MdePkg/Test/Mock/Library/GoogleTest/MockUefiLib/MockUefiLib.cpp
> b/MdePkg/Test/Mock/Library/GoogleTest/MockUefiLib/MockUefiLib.cpp
> new file mode 100644
> index 000000000000..5339d040c999
> --- /dev/null
> +++ b/MdePkg/Test/Mock/Library/GoogleTest/MockUefiLib/MockUefiLib.cpp
> @@ -0,0 +1,12 @@
> +/** @file
> +  Google Test mocks for UefiLib
> +
> +  Copyright (c) 2022, Intel Corporation. All rights reserved.
> +  SPDX-License-Identifier: BSD-2-Clause-Patent
> +**/
> +#include <GoogleTest/Library/MockUefiLib.h>
> +
> +MOCK_INTERFACE_DEFINITION(MockUefiLib);
> +
> +MOCK_FUNCTION_DEFINITION(MockUefiLib, GetVariable2, 4, EFIAPI);
> +MOCK_FUNCTION_DEFINITION(MockUefiLib, GetEfiGlobalVariable2, 3,
> EFIAPI);
> diff --git
> a/MdePkg/Test/Mock/Library/GoogleTest/MockUefiLib/MockUefiLib.inf
> b/MdePkg/Test/Mock/Library/GoogleTest/MockUefiLib/MockUefiLib.inf
> new file mode 100644
> index 000000000000..1a7461e44449
> --- /dev/null
> +++ b/MdePkg/Test/Mock/Library/GoogleTest/MockUefiLib/MockUefiLib.inf
> @@ -0,0 +1,33 @@
> +## @file
> +# Google Test mocks for UefiLib
> +#
> +# Copyright (c) 2022, Intel Corporation. All rights reserved.
> +# SPDX-License-Identifier: BSD-2-Clause-Patent
> +##
> +
> +[Defines]
> +  INF_VERSION                    = 0x00010005
> +  BASE_NAME                      = MockUefiLib
> +  FILE_GUID                      =
> 47211F7A-6D90-4DFB-BDF9-610B69197C2E
> +  MODULE_TYPE                    = HOST_APPLICATION
> +  VERSION_STRING                 = 1.0
> +  LIBRARY_CLASS                  = UefiLib
> +
> +#
> +# The following information is for reference only and not required by the
> build tools.
> +#
> +#  VALID_ARCHITECTURES           = IA32 X64
> +#
> +
> +[Sources]
> +  MockUefiLib.cpp
> +
> +[Packages]
> +  MdePkg/MdePkg.dec
> +  UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec
> +
> +[LibraryClasses]
> +  GoogleTestLib
> +
> +[BuildOptions]
> +  MSFT:*_*_*_CC_FLAGS = /EHsc
> diff --git
> a/MdePkg/Test/Mock/Library/GoogleTest/MockUefiRuntimeServicesTableLib
> /MockUefiRuntimeServicesTableLib.cpp
> b/MdePkg/Test/Mock/Library/GoogleTest/MockUefiRuntimeServicesTableLib
> /MockUefiRuntimeServicesTableLib.cpp
> new file mode 100644
> index 000000000000..ecd1ba82366c
> --- /dev/null
> +++
> b/MdePkg/Test/Mock/Library/GoogleTest/MockUefiRuntimeServicesTableLib
> /MockUefiRuntimeServicesTableLib.cpp
> @@ -0,0 +1,40 @@
> +/** @file
> +  Google Test mocks for UefiRuntimeServicesTableLib
> +
> +  Copyright (c) 2022, Intel Corporation. All rights reserved.
> +  SPDX-License-Identifier: BSD-2-Clause-Patent
> +**/
> +#include <GoogleTest/Library/MockUefiRuntimeServicesTableLib.h>
> +
> +MOCK_INTERFACE_DEFINITION(MockUefiRuntimeServicesTableLib);
> +
> +MOCK_FUNCTION_DEFINITION(MockUefiRuntimeServicesTableLib,
> gRT_GetVariable, 5, EFIAPI);
> +MOCK_FUNCTION_DEFINITION(MockUefiRuntimeServicesTableLib,
> gRT_SetVariable, 5, EFIAPI);
> +
> +static EFI_RUNTIME_SERVICES localRt = {
> +  {0},              // EFI_TABLE_HEADER
> +
> +  NULL,             // EFI_GET_TIME
> +  NULL,             // EFI_SET_TIME
> +  NULL,             // EFI_GET_WAKEUP_TIME
> +  NULL,             // EFI_SET_WAKEUP_TIME
> +
> +  NULL,             // EFI_SET_VIRTUAL_ADDRESS_MAP
> +  NULL,             // EFI_CONVERT_POINTER
> +
> +  gRT_GetVariable,  // EFI_GET_VARIABLE
> +  NULL,             // EFI_GET_NEXT_VARIABLE_NAME
> +  gRT_SetVariable,  // EFI_SET_VARIABLE
> +
> +  NULL,             // EFI_GET_NEXT_HIGH_MONO_COUNT
> +  NULL,             // EFI_RESET_SYSTEM
> +
> +  NULL,             // EFI_UPDATE_CAPSULE
> +  NULL,             // EFI_QUERY_CAPSULE_CAPABILITIES
> +
> +  NULL,             // EFI_QUERY_VARIABLE_INFO
> +};
> +
> +extern "C" {
> +  EFI_RUNTIME_SERVICES* gRT = &localRt;
> +}
> diff --git
> a/MdePkg/Test/Mock/Library/GoogleTest/MockUefiRuntimeServicesTableLib
> /MockUefiRuntimeServicesTableLib.inf
> b/MdePkg/Test/Mock/Library/GoogleTest/MockUefiRuntimeServicesTableLib
> /MockUefiRuntimeServicesTableLib.inf
> new file mode 100644
> index 000000000000..7ba74d93bfc2
> --- /dev/null
> +++
> b/MdePkg/Test/Mock/Library/GoogleTest/MockUefiRuntimeServicesTableLib
> /MockUefiRuntimeServicesTableLib.inf
> @@ -0,0 +1,33 @@
> +## @file
> +# Google Test mocks for UefiRuntimeServicesTableLib
> +#
> +# Copyright (c) 2022, Intel Corporation. All rights reserved.
> +# SPDX-License-Identifier: BSD-2-Clause-Patent
> +##
> +
> +[Defines]
> +  INF_VERSION                    = 0x00010005
> +  BASE_NAME                      =
> MockUefiRuntimeServicesTableLib
> +  FILE_GUID                      =
> 0A0E13C2-4176-4293-89C7-C2497AA31B92
> +  MODULE_TYPE                    = HOST_APPLICATION
> +  VERSION_STRING                 = 1.0
> +  LIBRARY_CLASS                  = UefiRuntimeServicesTableLib
> +
> +#
> +# The following information is for reference only and not required by the
> build tools.
> +#
> +#  VALID_ARCHITECTURES           = IA32 X64
> +#
> +
> +[Sources]
> +  MockUefiRuntimeServicesTableLib.cpp
> +
> +[Packages]
> +  MdePkg/MdePkg.dec
> +  UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec
> +
> +[LibraryClasses]
> +  GoogleTestLib
> +
> +[BuildOptions]
> +  MSFT:*_*_*_CC_FLAGS = /EHsc
> --
> 2.39.1.windows.1





-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#102581): https://edk2.groups.io/g/devel/message/102581
Mute This Topic: https://groups.io/mt/98096536/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-




More information about the edk2-devel-archive mailing list