Skip to content

Commit

Permalink
Added MockShellCommandLib (#1264)
Browse files Browse the repository at this point in the history
  • Loading branch information
v-bhavanisu authored Jan 29, 2025
1 parent f54f113 commit fabbe77
Show file tree
Hide file tree
Showing 4 changed files with 353 additions and 1 deletion.
269 changes: 269 additions & 0 deletions ShellPkg/Test/Mock/Include/GoogleTest/Library/MockShellCommandLib.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,269 @@
/** @file MockShellCommandLib.h
Google Test mocks for ShellCommandLib
Copyright (c) Microsoft Corporation.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/

#ifndef MOCK_SHELL_COMMAND_LIB_H_
#define MOCK_SHELL_COMMAND_LIB_H_

#include <Library/GoogleTestLib.h>
#include <Library/FunctionMockLib.h>
extern "C" {
#include <Uefi.h>
#include <Library/ShellCommandLib.h>
}

struct MockShellCommandLib {
MOCK_INTERFACE_DECLARATION (MockShellCommandLib);

MOCK_FUNCTION_DECLARATION (
RETURN_STATUS,
ShellCommandRegisterCommandName,
(IN CONST CHAR16 *CommandString,
IN SHELL_RUN_COMMAND CommandHandler,
IN SHELL_GET_MAN_FILENAME GetManFileName,
IN UINT32 ShellMinSupportLevel,
IN CONST CHAR16 *ProfileName,
IN CONST BOOLEAN CanAffectLE,
IN CONST EFI_HII_HANDLE HiiHandle,
IN CONST EFI_STRING_ID ManFormatHelp)
);

MOCK_FUNCTION_DECLARATION (
RETURN_STATUS,
ShellCommandRunCommandHandler,
(IN CONST CHAR16 *CommandString,
IN OUT SHELL_STATUS *RetVal,
IN OUT BOOLEAN *CanAffectLE OPTIONAL)
);

MOCK_FUNCTION_DECLARATION (
CONST CHAR16 *,
ShellCommandGetManFileNameHandler,
(IN CONST CHAR16 *CommandString)
);

MOCK_FUNCTION_DECLARATION (
CONST COMMAND_LIST *,
ShellCommandGetCommandList,
(IN CONST BOOLEAN Sort)
);

MOCK_FUNCTION_DECLARATION (
RETURN_STATUS,
ShellCommandRegisterAlias,
(IN CONST CHAR16 *Command,
IN CONST CHAR16 *Alias)
);

MOCK_FUNCTION_DECLARATION (
CONST ALIAS_LIST *,
ShellCommandGetInitAliasList,
()
);

MOCK_FUNCTION_DECLARATION (
BOOLEAN,
ShellCommandIsOnAliasList,
(IN CONST CHAR16 *Alias)
);

MOCK_FUNCTION_DECLARATION (
BOOLEAN,
ShellCommandIsCommandOnList,
(IN CONST CHAR16 *CommandString)
);

MOCK_FUNCTION_DECLARATION (
CHAR16 *,
ShellCommandGetCommandHelp,
(IN CONST CHAR16 *CommandString)
);

MOCK_FUNCTION_DECLARATION (
EFI_STATUS,
CommandInit,
()
);

MOCK_FUNCTION_DECLARATION (
BOOLEAN,
ShellCommandGetEchoState,
()
);

MOCK_FUNCTION_DECLARATION (
VOID,
ShellCommandSetEchoState,
(IN BOOLEAN State)
);

MOCK_FUNCTION_DECLARATION (
VOID,
ShellCommandRegisterExit,
(IN BOOLEAN ScriptOnly,
IN CONST UINT64 ErrorCode)
);

MOCK_FUNCTION_DECLARATION (
UINT64,
ShellCommandGetExitCode,
()
);

MOCK_FUNCTION_DECLARATION (
BOOLEAN,
ShellCommandGetExit,
()
);

MOCK_FUNCTION_DECLARATION (
BOOLEAN,
ShellCommandGetScriptExit,
()
);

MOCK_FUNCTION_DECLARATION (
SCRIPT_FILE *,
ShellCommandGetCurrentScriptFile,
()
);

MOCK_FUNCTION_DECLARATION (
SCRIPT_FILE *,
ShellCommandSetNewScript,
(IN SCRIPT_FILE *Script OPTIONAL)
);

MOCK_FUNCTION_DECLARATION (
VOID,
DeleteScriptFileStruct,
(IN SCRIPT_FILE *Script)
);

MOCK_FUNCTION_DECLARATION (
CONST CHAR16 *,
ShellCommandGetProfileList,
()
);

MOCK_FUNCTION_DECLARATION (
CHAR16 *,
ShellCommandCreateNewMappingName,
(IN CONST SHELL_MAPPING_TYPE Type)
);

MOCK_FUNCTION_DECLARATION (
EFI_STATUS,
ShellCommandConsistMappingInitialize,
(EFI_DEVICE_PATH_PROTOCOL ***Table)
);

MOCK_FUNCTION_DECLARATION (
EFI_STATUS,
ShellCommandConsistMappingUnInitialize,
(EFI_DEVICE_PATH_PROTOCOL **Table)
);

MOCK_FUNCTION_DECLARATION (
CHAR16 *,
ShellCommandConsistMappingGenMappingName,
(IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,
IN EFI_DEVICE_PATH_PROTOCOL **Table)
);

MOCK_FUNCTION_DECLARATION (
SHELL_MAP_LIST *,
ShellCommandFindMapItem,
(IN CONST CHAR16 *MapKey)
);

MOCK_FUNCTION_DECLARATION (
EFI_STATUS,
ShellCommandAddMapItemAndUpdatePath,
(IN CONST CHAR16 *Name,
IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath,
IN CONST UINT64 Flags,
IN CONST BOOLEAN Path)
);

MOCK_FUNCTION_DECLARATION (
EFI_STATUS,
ShellCommandCreateInitialMappingsAndPaths,
()
);

MOCK_FUNCTION_DECLARATION (
EFI_STATUS,
ShellCommandUpdateMapping,
()
);

MOCK_FUNCTION_DECLARATION (
EFI_FILE_PROTOCOL *,
ConvertShellHandleToEfiFileProtocol,
(IN CONST SHELL_FILE_HANDLE Handle)
);

MOCK_FUNCTION_DECLARATION (
BOOLEAN,
ShellFileHandleRemove,
(IN CONST SHELL_FILE_HANDLE Handle)
);

MOCK_FUNCTION_DECLARATION (
SHELL_FILE_HANDLE,
ConvertEfiFileProtocolToShellHandle,
(IN CONST EFI_FILE_PROTOCOL *Handle,
IN CONST CHAR16 *Path)
);

MOCK_FUNCTION_DECLARATION (
CONST CHAR16 *,
ShellFileHandleGetPath,
(IN CONST SHELL_FILE_HANDLE Handle)
);

MOCK_FUNCTION_DECLARATION (
BOOLEAN,
ShellFileHandleEof,
(IN SHELL_FILE_HANDLE Handle)
);

MOCK_FUNCTION_DECLARATION (
VOID,
FreeBufferList,
(IN BUFFER_LIST *List)
);

MOCK_FUNCTION_DECLARATION (
VOID,
DumpHex,
(IN UINTN Indent,
IN UINTN Offset,
IN UINTN DataSize,
IN VOID *UserData)
);

MOCK_FUNCTION_DECLARATION (
CHAR16 *,
CatSDumpHex,
(IN CHAR16 *Buffer,
IN UINTN Indent,
IN UINTN Offset,
IN UINTN DataSize,
IN VOID *UserData)
);

MOCK_FUNCTION_DECLARATION (
EFI_STATUS,
ShellSortFileList,
(IN OUT EFI_SHELL_FILE_INFO **FileList,
OUT EFI_SHELL_FILE_INFO **Duplicates OPTIONAL,
IN SHELL_SORT_FILE_LIST Order)
);
};

#endif
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
/** @file MockShellCommandLib.cpp
Google Test mocks for ShellCommandLib
Copyright (c) Microsoft Corporation.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/

#include <GoogleTest/Library/MockShellCommandLib.h>

MOCK_INTERFACE_DEFINITION (MockShellCommandLib);

MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandRegisterCommandName, 8, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandRunCommandHandler, 3, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandGetManFileNameHandler, 1, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandGetCommandList, 1, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandRegisterAlias, 2, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandGetInitAliasList, 0, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandIsOnAliasList, 1, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandIsCommandOnList, 1, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandGetCommandHelp, 1, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, CommandInit, 0, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandGetEchoState, 0, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandSetEchoState, 1, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandRegisterExit, 2, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandGetExitCode, 0, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandGetExit, 0, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandGetScriptExit, 0, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandGetCurrentScriptFile, 0, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandSetNewScript, 1, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, DeleteScriptFileStruct, 1, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandGetProfileList, 0, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandCreateNewMappingName, 1, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandConsistMappingInitialize, 1, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandConsistMappingUnInitialize, 1, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandConsistMappingGenMappingName, 2, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandFindMapItem, 1, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandAddMapItemAndUpdatePath, 4, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandCreateInitialMappingsAndPaths, 0, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandUpdateMapping, 0, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ConvertShellHandleToEfiFileProtocol, 1, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellFileHandleRemove, 1, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ConvertEfiFileProtocolToShellHandle, 2, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellFileHandleGetPath, 1, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellFileHandleEof, 1, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, FreeBufferList, 1, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, DumpHex, 4, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, CatSDumpHex, 5, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellSortFileList, 3, EFIAPI);
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
## @file MockShellCommandLib.inf
# Google Test mocks for ShellCommandLib
#
# Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: BSD-2-Clause-Patent
##

[Defines]
INF_VERSION = 0x00010005
BASE_NAME = MockShellCommandLib
FILE_GUID = 390bea01-510b-51bb-861f-369caef02153
MODULE_TYPE = HOST_APPLICATION
VERSION_STRING = 1.0
LIBRARY_CLASS = ShellCommandLib

#
# The following information is for reference only and not required by the build tools.
#
# VALID_ARCHITECTURES = IA32 X64
#

[Sources]
MockShellCommandLib.cpp

[Packages]
ShellPkg/ShellPkg.dec
MdePkg/MdePkg.dec
UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec

[LibraryClasses]
GoogleTestLib

[BuildOptions]
MSFT:*_*_*_CC_FLAGS = /EHs /bigobj
3 changes: 2 additions & 1 deletion ShellPkg/Test/ShellPkgHostTest.dsc
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,5 @@ SKUID_IDENTIFIER = DEFAULT
#
# Build HOST_APPLICATION Libraries With GoogleTest
#
ShellPkg/Test/Mock/Library/GoogleTest/MockShellLib/MockShellLib.inf
ShellPkg/Test/Mock/Library/GoogleTest/MockShellLib/MockShellLib.inf
ShellPkg/Test/Mock/Library/GoogleTest/MockShellCommandLib/MockShellCommandLib.inf

0 comments on commit fabbe77

Please sign in to comment.