forked from microsoft/rushstack
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCommandLineParser.test.ts
More file actions
63 lines (50 loc) · 1.67 KB
/
CommandLineParser.test.ts
File metadata and controls
63 lines (50 loc) · 1.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.
// See LICENSE in the project root for license information.
import { CommandLineAction } from '../CommandLineAction';
import { CommandLineParser } from '../CommandLineParser';
import { CommandLineFlagParameter } from '../CommandLineParameter';
class TestAction extends CommandLineAction {
public done: boolean = false;
private _flag: CommandLineFlagParameter;
public constructor() {
super({
actionName: 'do:the-job',
summary: 'does the job',
documentation: 'a longer description'
});
}
protected onExecute(): Promise<void> {
expect(this._flag.value).toEqual(true);
this.done = true;
return Promise.resolve();
}
protected onDefineParameters(): void {
this._flag = this.defineFlagParameter({
parameterLongName: '--flag',
description: 'The flag'
});
}
}
class TestCommandLine extends CommandLineParser {
public constructor() {
super({
toolFilename: 'example',
toolDescription: 'An example project'
});
this.addAction(new TestAction());
}
protected onDefineParameters(): void {
// no parameters
}
}
describe('CommandLineParser', () => {
it('executes an action', () => {
const commandLineParser: TestCommandLine = new TestCommandLine();
return commandLineParser.execute(['do:the-job', '--flag']).then(() => {
expect(commandLineParser.selectedAction).toBeDefined();
expect(commandLineParser.selectedAction!.actionName).toEqual('do:the-job');
const action: TestAction = commandLineParser.selectedAction as TestAction;
expect(action.done).toBe(true);
});
});
});