From 30d4dd5a19d7e9268d695fe1d25681a162e6d1c1 Mon Sep 17 00:00:00 2001 From: Vivian Nowka-Keane Date: Fri, 29 Sep 2023 09:43:36 -0700 Subject: [PATCH] MdePkg: Create Google mock for ReadOnlyVariable2 This patch creates a gmock for the ReadOnlyVariable2 function, which is used by CI testing. --- .../GoogleTest/Ppi/MockReadOnlyVariable2.h | 49 +++++++++++++++++++ .../GoogleTest/Ppi/MockReadOnlyVariable2.cpp | 23 +++++++++ 2 files changed, 72 insertions(+) create mode 100644 MdePkg/Test/Mock/Include/GoogleTest/Ppi/MockReadOnlyVariable2.h create mode 100644 MdePkg/Test/Mock/Library/GoogleTest/Ppi/MockReadOnlyVariable2.cpp diff --git a/MdePkg/Test/Mock/Include/GoogleTest/Ppi/MockReadOnlyVariable2.h b/MdePkg/Test/Mock/Include/GoogleTest/Ppi/MockReadOnlyVariable2.h new file mode 100644 index 0000000000..94a79c349c --- /dev/null +++ b/MdePkg/Test/Mock/Include/GoogleTest/Ppi/MockReadOnlyVariable2.h @@ -0,0 +1,49 @@ +/** @file MockReadOnlyVariable2.h + This file declares a mock of Read-only Variable Service2 PPI. + + This PPI permits read-only access to the UEFI variable store during the PEI phase. + + Copyright (c) Microsoft Corporation. + SPDX-License-Identifier: BSD-2-Clause-Patent +**/ + +#ifndef MOCK_PEI_READ_ONLY_VARIABLE2_PPI_H_ +#define MOCK_PEI_READ_ONLY_VARIABLE2_PPI_H_ + +#include +#include +extern "C" { + #include + #include + #include +} + +struct MockReadOnlyVariable2 { + MOCK_INTERFACE_DECLARATION (MockReadOnlyVariable2); + + MOCK_FUNCTION_DECLARATION ( + EFI_STATUS, + GetVariable, + (IN CONST EFI_PEI_READ_ONLY_VARIABLE2_PPI *This, + IN CONST CHAR16 *VariableName, + IN CONST EFI_GUID *VariableGuid, + OUT UINT32 *Attributes, + IN OUT UINTN *DataSize, + OUT VOID *Data OPTIONAL) + ); + + MOCK_FUNCTION_DECLARATION ( + EFI_STATUS, + NextVariableName, + (IN CONST EFI_PEI_READ_ONLY_VARIABLE2_PPI *This, + IN OUT UINTN *VariableNameSize, + IN OUT CHAR16 *VariableName, + IN OUT EFI_GUID *VariableGuid) + ); +}; + +extern "C" { + extern EFI_PEI_READ_ONLY_VARIABLE2_PPI *PpiReadOnlyVariableServices; +} + +#endif diff --git a/MdePkg/Test/Mock/Library/GoogleTest/Ppi/MockReadOnlyVariable2.cpp b/MdePkg/Test/Mock/Library/GoogleTest/Ppi/MockReadOnlyVariable2.cpp new file mode 100644 index 0000000000..d06466f039 --- /dev/null +++ b/MdePkg/Test/Mock/Library/GoogleTest/Ppi/MockReadOnlyVariable2.cpp @@ -0,0 +1,23 @@ +/** @file MockReadOnlyVariable2.cpp + Google Test mock for ReadOnlyVariable2 + + Copyright (c) Microsoft Corporation. + SPDX-License-Identifier: BSD-2-Clause-Patent +**/ + +#include + +MOCK_INTERFACE_DEFINITION (MockReadOnlyVariable2); +MOCK_FUNCTION_DEFINITION (MockReadOnlyVariable2, GetVariable, 6, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockReadOnlyVariable2, NextVariableName, 4, EFIAPI); + +// Normally PpiVariableServices is "found" +// This will be defined INSIDE the test, with its definition pointing to the mock function GetVariable +EFI_PEI_READ_ONLY_VARIABLE2_PPI PeiReadOnlyVariablePpi = { + GetVariable, // EFI_PEI_GET_VARIABLE2 + NextVariableName // EFI_PEI_GET_NEXT_VARIABLE_NAME2 +}; + +extern "C" { + EFI_PEI_READ_ONLY_VARIABLE2_PPI *PpiReadOnlyVariableServices = &PeiReadOnlyVariablePpi; +}