MdePkg: added mocks for DevicePathLib and OpenProtocol
Added Google Mock test support for DevicePathLib. Added OpenProtocol and CloseProtocol for UefiBootServicesTableLib mock library. Signed-off-by: Alexander Gryanko <xpahos@gmail.com>
This commit is contained in:
committed by
mergify[bot]
parent
1c3a22059b
commit
d55642f537
@@ -53,5 +53,6 @@
|
||||
MdePkg/Test/Mock/Library/GoogleTest/MockPciSegmentLib/MockPciSegmentLib.inf
|
||||
MdePkg/Test/Mock/Library/GoogleTest/MockReportStatusCodeLib/MockReportStatusCodeLib.inf
|
||||
MdePkg/Test/Mock/Library/GoogleTest/MockSafeIntLib/MockSafeIntLib.inf
|
||||
MdePkg/Test/Mock/Library/GoogleTest/MockDevicePathLib/MockDevicePathLib.inf
|
||||
|
||||
MdePkg/Library/StackCheckLibNull/StackCheckLibNullHostApplication.inf
|
||||
|
||||
179
MdePkg/Test/Mock/Include/GoogleTest/Library/MockDevicePathLib.h
Normal file
179
MdePkg/Test/Mock/Include/GoogleTest/Library/MockDevicePathLib.h
Normal file
@@ -0,0 +1,179 @@
|
||||
/** @file
|
||||
Google Test mocks for DevicePathLib
|
||||
|
||||
Copyright (c) 2025, Yandex. All rights reserved.
|
||||
SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
**/
|
||||
|
||||
#ifndef MOCK_DEVICE_PATH_LIB_LIB_H_
|
||||
#define MOCK_DEVICE_PATH_LIB_LIB_H_
|
||||
|
||||
#include <Library/GoogleTestLib.h>
|
||||
#include <Library/FunctionMockLib.h>
|
||||
extern "C" {
|
||||
#include <Uefi.h>
|
||||
#include <Library/DevicePathLib.h>
|
||||
}
|
||||
|
||||
struct MockDevicePathLib {
|
||||
MOCK_INTERFACE_DECLARATION (MockDevicePathLib);
|
||||
|
||||
MOCK_FUNCTION_DECLARATION (
|
||||
BOOLEAN,
|
||||
IsDevicePathValid,
|
||||
(IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath,
|
||||
IN UINTN MaxSize)
|
||||
);
|
||||
|
||||
MOCK_FUNCTION_DECLARATION (
|
||||
UINT8,
|
||||
DevicePathType,
|
||||
(IN CONST VOID *Node)
|
||||
);
|
||||
|
||||
MOCK_FUNCTION_DECLARATION (
|
||||
UINT8,
|
||||
DevicePathSubType,
|
||||
(IN CONST VOID *Node)
|
||||
);
|
||||
|
||||
MOCK_FUNCTION_DECLARATION (
|
||||
UINTN,
|
||||
DevicePathNodeLength,
|
||||
(IN CONST VOID *Node)
|
||||
);
|
||||
|
||||
MOCK_FUNCTION_DECLARATION (
|
||||
EFI_DEVICE_PATH_PROTOCOL *,
|
||||
NextDevicePathNode,
|
||||
(IN CONST VOID *Node)
|
||||
);
|
||||
|
||||
MOCK_FUNCTION_DECLARATION (
|
||||
BOOLEAN,
|
||||
IsDevicePathEndType,
|
||||
(IN CONST VOID *Node)
|
||||
);
|
||||
|
||||
MOCK_FUNCTION_DECLARATION (
|
||||
BOOLEAN,
|
||||
IsDevicePathEnd,
|
||||
(IN CONST VOID *Node)
|
||||
);
|
||||
|
||||
MOCK_FUNCTION_DECLARATION (
|
||||
BOOLEAN,
|
||||
IsDevicePathEndInstance,
|
||||
(IN CONST VOID *Node)
|
||||
);
|
||||
|
||||
MOCK_FUNCTION_DECLARATION (
|
||||
UINT16,
|
||||
SetDevicePathNodeLength,
|
||||
(IN OUT VOID *Node,
|
||||
IN UINTN Length)
|
||||
);
|
||||
|
||||
MOCK_FUNCTION_DECLARATION (
|
||||
VOID,
|
||||
SetDevicePathEndNode,
|
||||
(OUT VOID *Node)
|
||||
);
|
||||
|
||||
MOCK_FUNCTION_DECLARATION (
|
||||
UINTN,
|
||||
GetDevicePathSize,
|
||||
(IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath)
|
||||
);
|
||||
|
||||
MOCK_FUNCTION_DECLARATION (
|
||||
EFI_DEVICE_PATH_PROTOCOL *,
|
||||
DuplicateDevicePath,
|
||||
(IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath)
|
||||
);
|
||||
|
||||
MOCK_FUNCTION_DECLARATION (
|
||||
EFI_DEVICE_PATH_PROTOCOL *,
|
||||
AppendDevicePath,
|
||||
(IN CONST EFI_DEVICE_PATH_PROTOCOL *FirstDevicePath OPTIONAL,
|
||||
IN CONST EFI_DEVICE_PATH_PROTOCOL *SecondDevicePath OPTIONAL)
|
||||
);
|
||||
|
||||
MOCK_FUNCTION_DECLARATION (
|
||||
EFI_DEVICE_PATH_PROTOCOL *,
|
||||
AppendDevicePathNode,
|
||||
(IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath OPTIONAL,
|
||||
IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePathNode OPTIONAL)
|
||||
);
|
||||
|
||||
MOCK_FUNCTION_DECLARATION (
|
||||
EFI_DEVICE_PATH_PROTOCOL *,
|
||||
AppendDevicePathInstance,
|
||||
(IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath OPTIONAL,
|
||||
IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePathInstance OPTIONAL)
|
||||
);
|
||||
|
||||
MOCK_FUNCTION_DECLARATION (
|
||||
EFI_DEVICE_PATH_PROTOCOL *,
|
||||
GetNextDevicePathInstance,
|
||||
(IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath,
|
||||
OUT UINTN *Size)
|
||||
);
|
||||
|
||||
MOCK_FUNCTION_DECLARATION (
|
||||
EFI_DEVICE_PATH_PROTOCOL *,
|
||||
CreateDeviceNode,
|
||||
(IN UINT8 NodeType,
|
||||
IN UINT8 NodeSubType,
|
||||
IN UINT16 NodeLength)
|
||||
);
|
||||
|
||||
MOCK_FUNCTION_DECLARATION (
|
||||
BOOLEAN,
|
||||
IsDevicePathMultiInstance,
|
||||
(IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath)
|
||||
);
|
||||
|
||||
MOCK_FUNCTION_DECLARATION (
|
||||
EFI_DEVICE_PATH_PROTOCOL *,
|
||||
DevicePathFromHandle,
|
||||
(IN EFI_HANDLE Handle)
|
||||
);
|
||||
|
||||
MOCK_FUNCTION_DECLARATION (
|
||||
EFI_DEVICE_PATH_PROTOCOL *,
|
||||
FileDevicePath,
|
||||
(IN EFI_HANDLE Device OPTIONAL,
|
||||
IN CONST CHAR16 *FileName)
|
||||
);
|
||||
|
||||
MOCK_FUNCTION_DECLARATION (
|
||||
CHAR16 *,
|
||||
ConvertDevicePathToText,
|
||||
(IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath,
|
||||
IN BOOLEAN DisplayOnly,
|
||||
IN BOOLEAN AllowShortcuts)
|
||||
);
|
||||
|
||||
MOCK_FUNCTION_DECLARATION (
|
||||
CHAR16 *,
|
||||
ConvertDeviceNodeToText,
|
||||
(IN CONST EFI_DEVICE_PATH_PROTOCOL *DeviceNode,
|
||||
IN BOOLEAN DisplayOnly,
|
||||
IN BOOLEAN AllowShortcuts)
|
||||
);
|
||||
|
||||
MOCK_FUNCTION_DECLARATION (
|
||||
EFI_DEVICE_PATH_PROTOCOL *,
|
||||
ConvertTextToDeviceNode,
|
||||
(IN CONST CHAR16 *TextDeviceNode)
|
||||
);
|
||||
|
||||
MOCK_FUNCTION_DECLARATION (
|
||||
EFI_DEVICE_PATH_PROTOCOL *,
|
||||
ConvertTextToDevicePath,
|
||||
(IN CONST CHAR16 *TextDevicePath)
|
||||
);
|
||||
};
|
||||
|
||||
#endif // MOCK_DEVICE_PATH_LIB_H_
|
||||
@@ -73,6 +73,34 @@ struct MockUefiBootServicesTableLib {
|
||||
IN CONST EFI_GUID *EventGroup OPTIONAL,
|
||||
OUT EFI_EVENT *Event)
|
||||
);
|
||||
|
||||
MOCK_FUNCTION_DECLARATION (
|
||||
EFI_STATUS,
|
||||
gBS_LocateDevicePath,
|
||||
(IN EFI_GUID *Protocol,
|
||||
IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath,
|
||||
OUT EFI_HANDLE *Device)
|
||||
);
|
||||
|
||||
MOCK_FUNCTION_DECLARATION (
|
||||
EFI_STATUS,
|
||||
gBS_OpenProtocol,
|
||||
(IN EFI_HANDLE UserHandle,
|
||||
IN EFI_GUID *Protocol,
|
||||
OUT VOID **Interface OPTIONAL,
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN UINT32 Attributes)
|
||||
);
|
||||
|
||||
MOCK_FUNCTION_DECLARATION (
|
||||
EFI_STATUS,
|
||||
gBS_CloseProtocol,
|
||||
(IN EFI_HANDLE UserHandle,
|
||||
IN EFI_GUID *Protocol,
|
||||
IN EFI_HANDLE AgentHandle,
|
||||
IN EFI_HANDLE ControllerHandle)
|
||||
);
|
||||
};
|
||||
|
||||
#endif // MOCK_UEFI_BOOT_SERVICES_TABLE_LIB_H_
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
/** @file
|
||||
Google Test mocks for DevicePathLib
|
||||
|
||||
Copyright (c) 2025, Yandex. All rights reserved.
|
||||
SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
**/
|
||||
|
||||
#include <GoogleTest/Library/MockDevicePathLib.h>
|
||||
|
||||
MOCK_INTERFACE_DEFINITION (MockDevicePathLib);
|
||||
|
||||
MOCK_FUNCTION_DEFINITION (MockDevicePathLib, IsDevicePathValid, 2, EFIAPI);
|
||||
MOCK_FUNCTION_DEFINITION (MockDevicePathLib, DevicePathType, 1, EFIAPI);
|
||||
MOCK_FUNCTION_DEFINITION (MockDevicePathLib, DevicePathSubType, 1, EFIAPI);
|
||||
MOCK_FUNCTION_DEFINITION (MockDevicePathLib, DevicePathNodeLength, 1, EFIAPI);
|
||||
MOCK_FUNCTION_DEFINITION (MockDevicePathLib, NextDevicePathNode, 1, EFIAPI);
|
||||
MOCK_FUNCTION_DEFINITION (MockDevicePathLib, IsDevicePathEndType, 1, EFIAPI);
|
||||
MOCK_FUNCTION_DEFINITION (MockDevicePathLib, IsDevicePathEnd, 1, EFIAPI);
|
||||
MOCK_FUNCTION_DEFINITION (MockDevicePathLib, IsDevicePathEndInstance, 1, EFIAPI);
|
||||
MOCK_FUNCTION_DEFINITION (MockDevicePathLib, SetDevicePathNodeLength, 2, EFIAPI);
|
||||
MOCK_FUNCTION_DEFINITION (MockDevicePathLib, SetDevicePathEndNode, 1, EFIAPI);
|
||||
MOCK_FUNCTION_DEFINITION (MockDevicePathLib, GetDevicePathSize, 1, EFIAPI);
|
||||
MOCK_FUNCTION_DEFINITION (MockDevicePathLib, DuplicateDevicePath, 1, EFIAPI);
|
||||
MOCK_FUNCTION_DEFINITION (MockDevicePathLib, AppendDevicePath, 2, EFIAPI);
|
||||
MOCK_FUNCTION_DEFINITION (MockDevicePathLib, AppendDevicePathNode, 2, EFIAPI);
|
||||
MOCK_FUNCTION_DEFINITION (MockDevicePathLib, AppendDevicePathInstance, 2, EFIAPI);
|
||||
MOCK_FUNCTION_DEFINITION (MockDevicePathLib, GetNextDevicePathInstance, 2, EFIAPI);
|
||||
MOCK_FUNCTION_DEFINITION (MockDevicePathLib, CreateDeviceNode, 3, EFIAPI);
|
||||
MOCK_FUNCTION_DEFINITION (MockDevicePathLib, IsDevicePathMultiInstance, 1, EFIAPI);
|
||||
MOCK_FUNCTION_DEFINITION (MockDevicePathLib, DevicePathFromHandle, 1, EFIAPI);
|
||||
MOCK_FUNCTION_DEFINITION (MockDevicePathLib, FileDevicePath, 2, EFIAPI);
|
||||
MOCK_FUNCTION_DEFINITION (MockDevicePathLib, ConvertDevicePathToText, 3, EFIAPI);
|
||||
MOCK_FUNCTION_DEFINITION (MockDevicePathLib, ConvertDeviceNodeToText, 3, EFIAPI);
|
||||
MOCK_FUNCTION_DEFINITION (MockDevicePathLib, ConvertTextToDeviceNode, 1, EFIAPI);
|
||||
MOCK_FUNCTION_DEFINITION (MockDevicePathLib, ConvertTextToDevicePath, 1, EFIAPI);
|
||||
@@ -0,0 +1,33 @@
|
||||
## @file
|
||||
# Google Test mocks for DevicePathLib
|
||||
#
|
||||
# Copyright (c) 2025, Yandex. All rights reserved.
|
||||
# SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
##
|
||||
|
||||
[Defines]
|
||||
INF_VERSION = 0x00010005
|
||||
BASE_NAME = MockDevicePathLib
|
||||
FILE_GUID = 56A63D54-644B-4769-88BC-AB2DCDADE351
|
||||
MODULE_TYPE = HOST_APPLICATION
|
||||
VERSION_STRING = 1.0
|
||||
LIBRARY_CLASS = DevicePathLib
|
||||
|
||||
#
|
||||
# The following information is for reference only and not required by the build tools.
|
||||
#
|
||||
# VALID_ARCHITECTURES = IA32 X64
|
||||
#
|
||||
|
||||
[Sources]
|
||||
MockDevicePathLib.cpp
|
||||
|
||||
[Packages]
|
||||
MdePkg/MdePkg.dec
|
||||
UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec
|
||||
|
||||
[LibraryClasses]
|
||||
GoogleTestLib
|
||||
|
||||
[BuildOptions]
|
||||
MSFT:*_*_*_CC_FLAGS = /EHsc
|
||||
@@ -13,6 +13,9 @@ MOCK_FUNCTION_DEFINITION (MockUefiBootServicesTableLib, gBS_CloseEvent, 1, EFIAP
|
||||
MOCK_FUNCTION_DEFINITION (MockUefiBootServicesTableLib, gBS_HandleProtocol, 3, EFIAPI);
|
||||
MOCK_FUNCTION_DEFINITION (MockUefiBootServicesTableLib, gBS_LocateProtocol, 3, EFIAPI);
|
||||
MOCK_FUNCTION_DEFINITION (MockUefiBootServicesTableLib, gBS_CreateEventEx, 6, EFIAPI);
|
||||
MOCK_FUNCTION_DEFINITION (MockUefiBootServicesTableLib, gBS_LocateDevicePath, 3, EFIAPI);
|
||||
MOCK_FUNCTION_DEFINITION (MockUefiBootServicesTableLib, gBS_OpenProtocol, 6, EFIAPI);
|
||||
MOCK_FUNCTION_DEFINITION (MockUefiBootServicesTableLib, gBS_CloseProtocol, 4, EFIAPI);
|
||||
|
||||
static EFI_BOOT_SERVICES LocalBs = {
|
||||
{ 0, 0, 0, 0, 0 }, // EFI_TABLE_HEADER
|
||||
@@ -36,7 +39,7 @@ static EFI_BOOT_SERVICES LocalBs = {
|
||||
NULL, // VOID
|
||||
NULL, // EFI_REGISTER_PROTOCOL_NOTIFY
|
||||
NULL, // EFI_LOCATE_HANDLE
|
||||
NULL, // EFI_LOCATE_DEVICE_PATH
|
||||
gBS_LocateDevicePath, // EFI_LOCATE_DEVICE_PATH
|
||||
NULL, // EFI_INSTALL_CONFIGURATION_TABLE
|
||||
NULL, // EFI_IMAGE_LOAD
|
||||
NULL, // EFI_IMAGE_START
|
||||
@@ -48,8 +51,8 @@ static EFI_BOOT_SERVICES LocalBs = {
|
||||
NULL, // EFI_SET_WATCHDOG_TIMER
|
||||
NULL, // EFI_CONNECT_CONTROLLER
|
||||
NULL, // EFI_DISCONNECT_CONTROLLER
|
||||
NULL, // EFI_OPEN_PROTOCOL
|
||||
NULL, // EFI_CLOSE_PROTOCOL
|
||||
gBS_OpenProtocol, // EFI_OPEN_PROTOCOL
|
||||
gBS_CloseProtocol, // EFI_CLOSE_PROTOCOL
|
||||
NULL, // EFI_OPEN_PROTOCOL_INFORMATION
|
||||
NULL, // EFI_PROTOCOLS_PER_HANDLE
|
||||
NULL, // EFI_LOCATE_HANDLE_BUFFER
|
||||
|
||||
Reference in New Issue
Block a user