Skip to content

Commit fabbe77

Browse files
authored
Added MockShellCommandLib (#1264)
1 parent f54f113 commit fabbe77

File tree

4 files changed

+353
-1
lines changed

4 files changed

+353
-1
lines changed
Lines changed: 269 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,269 @@
1+
/** @file MockShellCommandLib.h
2+
Google Test mocks for ShellCommandLib
3+
4+
Copyright (c) Microsoft Corporation.
5+
SPDX-License-Identifier: BSD-2-Clause-Patent
6+
**/
7+
8+
#ifndef MOCK_SHELL_COMMAND_LIB_H_
9+
#define MOCK_SHELL_COMMAND_LIB_H_
10+
11+
#include <Library/GoogleTestLib.h>
12+
#include <Library/FunctionMockLib.h>
13+
extern "C" {
14+
#include <Uefi.h>
15+
#include <Library/ShellCommandLib.h>
16+
}
17+
18+
struct MockShellCommandLib {
19+
MOCK_INTERFACE_DECLARATION (MockShellCommandLib);
20+
21+
MOCK_FUNCTION_DECLARATION (
22+
RETURN_STATUS,
23+
ShellCommandRegisterCommandName,
24+
(IN CONST CHAR16 *CommandString,
25+
IN SHELL_RUN_COMMAND CommandHandler,
26+
IN SHELL_GET_MAN_FILENAME GetManFileName,
27+
IN UINT32 ShellMinSupportLevel,
28+
IN CONST CHAR16 *ProfileName,
29+
IN CONST BOOLEAN CanAffectLE,
30+
IN CONST EFI_HII_HANDLE HiiHandle,
31+
IN CONST EFI_STRING_ID ManFormatHelp)
32+
);
33+
34+
MOCK_FUNCTION_DECLARATION (
35+
RETURN_STATUS,
36+
ShellCommandRunCommandHandler,
37+
(IN CONST CHAR16 *CommandString,
38+
IN OUT SHELL_STATUS *RetVal,
39+
IN OUT BOOLEAN *CanAffectLE OPTIONAL)
40+
);
41+
42+
MOCK_FUNCTION_DECLARATION (
43+
CONST CHAR16 *,
44+
ShellCommandGetManFileNameHandler,
45+
(IN CONST CHAR16 *CommandString)
46+
);
47+
48+
MOCK_FUNCTION_DECLARATION (
49+
CONST COMMAND_LIST *,
50+
ShellCommandGetCommandList,
51+
(IN CONST BOOLEAN Sort)
52+
);
53+
54+
MOCK_FUNCTION_DECLARATION (
55+
RETURN_STATUS,
56+
ShellCommandRegisterAlias,
57+
(IN CONST CHAR16 *Command,
58+
IN CONST CHAR16 *Alias)
59+
);
60+
61+
MOCK_FUNCTION_DECLARATION (
62+
CONST ALIAS_LIST *,
63+
ShellCommandGetInitAliasList,
64+
()
65+
);
66+
67+
MOCK_FUNCTION_DECLARATION (
68+
BOOLEAN,
69+
ShellCommandIsOnAliasList,
70+
(IN CONST CHAR16 *Alias)
71+
);
72+
73+
MOCK_FUNCTION_DECLARATION (
74+
BOOLEAN,
75+
ShellCommandIsCommandOnList,
76+
(IN CONST CHAR16 *CommandString)
77+
);
78+
79+
MOCK_FUNCTION_DECLARATION (
80+
CHAR16 *,
81+
ShellCommandGetCommandHelp,
82+
(IN CONST CHAR16 *CommandString)
83+
);
84+
85+
MOCK_FUNCTION_DECLARATION (
86+
EFI_STATUS,
87+
CommandInit,
88+
()
89+
);
90+
91+
MOCK_FUNCTION_DECLARATION (
92+
BOOLEAN,
93+
ShellCommandGetEchoState,
94+
()
95+
);
96+
97+
MOCK_FUNCTION_DECLARATION (
98+
VOID,
99+
ShellCommandSetEchoState,
100+
(IN BOOLEAN State)
101+
);
102+
103+
MOCK_FUNCTION_DECLARATION (
104+
VOID,
105+
ShellCommandRegisterExit,
106+
(IN BOOLEAN ScriptOnly,
107+
IN CONST UINT64 ErrorCode)
108+
);
109+
110+
MOCK_FUNCTION_DECLARATION (
111+
UINT64,
112+
ShellCommandGetExitCode,
113+
()
114+
);
115+
116+
MOCK_FUNCTION_DECLARATION (
117+
BOOLEAN,
118+
ShellCommandGetExit,
119+
()
120+
);
121+
122+
MOCK_FUNCTION_DECLARATION (
123+
BOOLEAN,
124+
ShellCommandGetScriptExit,
125+
()
126+
);
127+
128+
MOCK_FUNCTION_DECLARATION (
129+
SCRIPT_FILE *,
130+
ShellCommandGetCurrentScriptFile,
131+
()
132+
);
133+
134+
MOCK_FUNCTION_DECLARATION (
135+
SCRIPT_FILE *,
136+
ShellCommandSetNewScript,
137+
(IN SCRIPT_FILE *Script OPTIONAL)
138+
);
139+
140+
MOCK_FUNCTION_DECLARATION (
141+
VOID,
142+
DeleteScriptFileStruct,
143+
(IN SCRIPT_FILE *Script)
144+
);
145+
146+
MOCK_FUNCTION_DECLARATION (
147+
CONST CHAR16 *,
148+
ShellCommandGetProfileList,
149+
()
150+
);
151+
152+
MOCK_FUNCTION_DECLARATION (
153+
CHAR16 *,
154+
ShellCommandCreateNewMappingName,
155+
(IN CONST SHELL_MAPPING_TYPE Type)
156+
);
157+
158+
MOCK_FUNCTION_DECLARATION (
159+
EFI_STATUS,
160+
ShellCommandConsistMappingInitialize,
161+
(EFI_DEVICE_PATH_PROTOCOL ***Table)
162+
);
163+
164+
MOCK_FUNCTION_DECLARATION (
165+
EFI_STATUS,
166+
ShellCommandConsistMappingUnInitialize,
167+
(EFI_DEVICE_PATH_PROTOCOL **Table)
168+
);
169+
170+
MOCK_FUNCTION_DECLARATION (
171+
CHAR16 *,
172+
ShellCommandConsistMappingGenMappingName,
173+
(IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,
174+
IN EFI_DEVICE_PATH_PROTOCOL **Table)
175+
);
176+
177+
MOCK_FUNCTION_DECLARATION (
178+
SHELL_MAP_LIST *,
179+
ShellCommandFindMapItem,
180+
(IN CONST CHAR16 *MapKey)
181+
);
182+
183+
MOCK_FUNCTION_DECLARATION (
184+
EFI_STATUS,
185+
ShellCommandAddMapItemAndUpdatePath,
186+
(IN CONST CHAR16 *Name,
187+
IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath,
188+
IN CONST UINT64 Flags,
189+
IN CONST BOOLEAN Path)
190+
);
191+
192+
MOCK_FUNCTION_DECLARATION (
193+
EFI_STATUS,
194+
ShellCommandCreateInitialMappingsAndPaths,
195+
()
196+
);
197+
198+
MOCK_FUNCTION_DECLARATION (
199+
EFI_STATUS,
200+
ShellCommandUpdateMapping,
201+
()
202+
);
203+
204+
MOCK_FUNCTION_DECLARATION (
205+
EFI_FILE_PROTOCOL *,
206+
ConvertShellHandleToEfiFileProtocol,
207+
(IN CONST SHELL_FILE_HANDLE Handle)
208+
);
209+
210+
MOCK_FUNCTION_DECLARATION (
211+
BOOLEAN,
212+
ShellFileHandleRemove,
213+
(IN CONST SHELL_FILE_HANDLE Handle)
214+
);
215+
216+
MOCK_FUNCTION_DECLARATION (
217+
SHELL_FILE_HANDLE,
218+
ConvertEfiFileProtocolToShellHandle,
219+
(IN CONST EFI_FILE_PROTOCOL *Handle,
220+
IN CONST CHAR16 *Path)
221+
);
222+
223+
MOCK_FUNCTION_DECLARATION (
224+
CONST CHAR16 *,
225+
ShellFileHandleGetPath,
226+
(IN CONST SHELL_FILE_HANDLE Handle)
227+
);
228+
229+
MOCK_FUNCTION_DECLARATION (
230+
BOOLEAN,
231+
ShellFileHandleEof,
232+
(IN SHELL_FILE_HANDLE Handle)
233+
);
234+
235+
MOCK_FUNCTION_DECLARATION (
236+
VOID,
237+
FreeBufferList,
238+
(IN BUFFER_LIST *List)
239+
);
240+
241+
MOCK_FUNCTION_DECLARATION (
242+
VOID,
243+
DumpHex,
244+
(IN UINTN Indent,
245+
IN UINTN Offset,
246+
IN UINTN DataSize,
247+
IN VOID *UserData)
248+
);
249+
250+
MOCK_FUNCTION_DECLARATION (
251+
CHAR16 *,
252+
CatSDumpHex,
253+
(IN CHAR16 *Buffer,
254+
IN UINTN Indent,
255+
IN UINTN Offset,
256+
IN UINTN DataSize,
257+
IN VOID *UserData)
258+
);
259+
260+
MOCK_FUNCTION_DECLARATION (
261+
EFI_STATUS,
262+
ShellSortFileList,
263+
(IN OUT EFI_SHELL_FILE_INFO **FileList,
264+
OUT EFI_SHELL_FILE_INFO **Duplicates OPTIONAL,
265+
IN SHELL_SORT_FILE_LIST Order)
266+
);
267+
};
268+
269+
#endif
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
/** @file MockShellCommandLib.cpp
2+
Google Test mocks for ShellCommandLib
3+
4+
Copyright (c) Microsoft Corporation.
5+
SPDX-License-Identifier: BSD-2-Clause-Patent
6+
**/
7+
8+
#include <GoogleTest/Library/MockShellCommandLib.h>
9+
10+
MOCK_INTERFACE_DEFINITION (MockShellCommandLib);
11+
12+
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandRegisterCommandName, 8, EFIAPI);
13+
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandRunCommandHandler, 3, EFIAPI);
14+
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandGetManFileNameHandler, 1, EFIAPI);
15+
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandGetCommandList, 1, EFIAPI);
16+
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandRegisterAlias, 2, EFIAPI);
17+
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandGetInitAliasList, 0, EFIAPI);
18+
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandIsOnAliasList, 1, EFIAPI);
19+
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandIsCommandOnList, 1, EFIAPI);
20+
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandGetCommandHelp, 1, EFIAPI);
21+
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, CommandInit, 0, EFIAPI);
22+
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandGetEchoState, 0, EFIAPI);
23+
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandSetEchoState, 1, EFIAPI);
24+
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandRegisterExit, 2, EFIAPI);
25+
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandGetExitCode, 0, EFIAPI);
26+
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandGetExit, 0, EFIAPI);
27+
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandGetScriptExit, 0, EFIAPI);
28+
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandGetCurrentScriptFile, 0, EFIAPI);
29+
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandSetNewScript, 1, EFIAPI);
30+
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, DeleteScriptFileStruct, 1, EFIAPI);
31+
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandGetProfileList, 0, EFIAPI);
32+
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandCreateNewMappingName, 1, EFIAPI);
33+
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandConsistMappingInitialize, 1, EFIAPI);
34+
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandConsistMappingUnInitialize, 1, EFIAPI);
35+
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandConsistMappingGenMappingName, 2, EFIAPI);
36+
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandFindMapItem, 1, EFIAPI);
37+
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandAddMapItemAndUpdatePath, 4, EFIAPI);
38+
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandCreateInitialMappingsAndPaths, 0, EFIAPI);
39+
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellCommandUpdateMapping, 0, EFIAPI);
40+
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ConvertShellHandleToEfiFileProtocol, 1, EFIAPI);
41+
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellFileHandleRemove, 1, EFIAPI);
42+
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ConvertEfiFileProtocolToShellHandle, 2, EFIAPI);
43+
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellFileHandleGetPath, 1, EFIAPI);
44+
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellFileHandleEof, 1, EFIAPI);
45+
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, FreeBufferList, 1, EFIAPI);
46+
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, DumpHex, 4, EFIAPI);
47+
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, CatSDumpHex, 5, EFIAPI);
48+
MOCK_FUNCTION_DEFINITION (MockShellCommandLib, ShellSortFileList, 3, EFIAPI);
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
## @file MockShellCommandLib.inf
2+
# Google Test mocks for ShellCommandLib
3+
#
4+
# Copyright (c) Microsoft Corporation.
5+
# SPDX-License-Identifier: BSD-2-Clause-Patent
6+
##
7+
8+
[Defines]
9+
INF_VERSION = 0x00010005
10+
BASE_NAME = MockShellCommandLib
11+
FILE_GUID = 390bea01-510b-51bb-861f-369caef02153
12+
MODULE_TYPE = HOST_APPLICATION
13+
VERSION_STRING = 1.0
14+
LIBRARY_CLASS = ShellCommandLib
15+
16+
#
17+
# The following information is for reference only and not required by the build tools.
18+
#
19+
# VALID_ARCHITECTURES = IA32 X64
20+
#
21+
22+
[Sources]
23+
MockShellCommandLib.cpp
24+
25+
[Packages]
26+
ShellPkg/ShellPkg.dec
27+
MdePkg/MdePkg.dec
28+
UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec
29+
30+
[LibraryClasses]
31+
GoogleTestLib
32+
33+
[BuildOptions]
34+
MSFT:*_*_*_CC_FLAGS = /EHs /bigobj

ShellPkg/Test/ShellPkgHostTest.dsc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,5 @@ SKUID_IDENTIFIER = DEFAULT
2828
#
2929
# Build HOST_APPLICATION Libraries With GoogleTest
3030
#
31-
ShellPkg/Test/Mock/Library/GoogleTest/MockShellLib/MockShellLib.inf
31+
ShellPkg/Test/Mock/Library/GoogleTest/MockShellLib/MockShellLib.inf
32+
ShellPkg/Test/Mock/Library/GoogleTest/MockShellCommandLib/MockShellCommandLib.inf

0 commit comments

Comments
 (0)