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/MockPciSegmentLib/MockPciSegmentLib.inf
|
||||||
MdePkg/Test/Mock/Library/GoogleTest/MockReportStatusCodeLib/MockReportStatusCodeLib.inf
|
MdePkg/Test/Mock/Library/GoogleTest/MockReportStatusCodeLib/MockReportStatusCodeLib.inf
|
||||||
MdePkg/Test/Mock/Library/GoogleTest/MockSafeIntLib/MockSafeIntLib.inf
|
MdePkg/Test/Mock/Library/GoogleTest/MockSafeIntLib/MockSafeIntLib.inf
|
||||||
|
MdePkg/Test/Mock/Library/GoogleTest/MockDevicePathLib/MockDevicePathLib.inf
|
||||||
|
|
||||||
MdePkg/Library/StackCheckLibNull/StackCheckLibNullHostApplication.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,
|
IN CONST EFI_GUID *EventGroup OPTIONAL,
|
||||||
OUT EFI_EVENT *Event)
|
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_
|
#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_HandleProtocol, 3, EFIAPI);
|
||||||
MOCK_FUNCTION_DEFINITION (MockUefiBootServicesTableLib, gBS_LocateProtocol, 3, EFIAPI);
|
MOCK_FUNCTION_DEFINITION (MockUefiBootServicesTableLib, gBS_LocateProtocol, 3, EFIAPI);
|
||||||
MOCK_FUNCTION_DEFINITION (MockUefiBootServicesTableLib, gBS_CreateEventEx, 6, 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 = {
|
static EFI_BOOT_SERVICES LocalBs = {
|
||||||
{ 0, 0, 0, 0, 0 }, // EFI_TABLE_HEADER
|
{ 0, 0, 0, 0, 0 }, // EFI_TABLE_HEADER
|
||||||
@@ -36,7 +39,7 @@ static EFI_BOOT_SERVICES LocalBs = {
|
|||||||
NULL, // VOID
|
NULL, // VOID
|
||||||
NULL, // EFI_REGISTER_PROTOCOL_NOTIFY
|
NULL, // EFI_REGISTER_PROTOCOL_NOTIFY
|
||||||
NULL, // EFI_LOCATE_HANDLE
|
NULL, // EFI_LOCATE_HANDLE
|
||||||
NULL, // EFI_LOCATE_DEVICE_PATH
|
gBS_LocateDevicePath, // EFI_LOCATE_DEVICE_PATH
|
||||||
NULL, // EFI_INSTALL_CONFIGURATION_TABLE
|
NULL, // EFI_INSTALL_CONFIGURATION_TABLE
|
||||||
NULL, // EFI_IMAGE_LOAD
|
NULL, // EFI_IMAGE_LOAD
|
||||||
NULL, // EFI_IMAGE_START
|
NULL, // EFI_IMAGE_START
|
||||||
@@ -48,8 +51,8 @@ static EFI_BOOT_SERVICES LocalBs = {
|
|||||||
NULL, // EFI_SET_WATCHDOG_TIMER
|
NULL, // EFI_SET_WATCHDOG_TIMER
|
||||||
NULL, // EFI_CONNECT_CONTROLLER
|
NULL, // EFI_CONNECT_CONTROLLER
|
||||||
NULL, // EFI_DISCONNECT_CONTROLLER
|
NULL, // EFI_DISCONNECT_CONTROLLER
|
||||||
NULL, // EFI_OPEN_PROTOCOL
|
gBS_OpenProtocol, // EFI_OPEN_PROTOCOL
|
||||||
NULL, // EFI_CLOSE_PROTOCOL
|
gBS_CloseProtocol, // EFI_CLOSE_PROTOCOL
|
||||||
NULL, // EFI_OPEN_PROTOCOL_INFORMATION
|
NULL, // EFI_OPEN_PROTOCOL_INFORMATION
|
||||||
NULL, // EFI_PROTOCOLS_PER_HANDLE
|
NULL, // EFI_PROTOCOLS_PER_HANDLE
|
||||||
NULL, // EFI_LOCATE_HANDLE_BUFFER
|
NULL, // EFI_LOCATE_HANDLE_BUFFER
|
||||||
|
|||||||
Reference in New Issue
Block a user