-
-
Notifications
You must be signed in to change notification settings - Fork 93
Expand file tree
/
Copy pathconstructTestHelpers.ts
More file actions
99 lines (93 loc) · 2.69 KB
/
constructTestHelpers.ts
File metadata and controls
99 lines (93 loc) · 2.69 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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import type * as vscode from "vscode";
import type {
ExcludableSnapshotField,
ExtraSnapshotField,
FakeCommandServerApi,
HatTokenMap,
IDE,
NormalizedIDE,
ScopeProvider,
SerializedMarks,
StoredTargetKey,
TargetPlainObject,
TestCaseSnapshot,
TextEditor,
} from "@cursorless/lib-common";
import type { StoredTargetMap } from "@cursorless/lib-engine";
import {
plainObjectToTarget,
scopeHandlerCache,
treeSitterQueryCache,
} from "@cursorless/lib-engine";
import { takeSnapshot } from "@cursorless/lib-test-case-recorder";
import type { VscodeTestHelpers } from "@cursorless/lib-vscode-common";
import { toVscodeEditor } from "./ide/vscode/toVscodeEditor";
import type { VscodeFileSystem } from "./ide/vscode/VscodeFileSystem";
import type { VscodeIDE } from "./ide/vscode/VscodeIDE";
import { vscodeApi } from "./vscodeApi";
import type { VscodeTutorial } from "./VscodeTutorial";
export function constructTestHelpers(
commandServerApi: FakeCommandServerApi,
storedTargets: StoredTargetMap,
hatTokenMap: HatTokenMap,
vscodeIDE: VscodeIDE,
normalizedIde: NormalizedIDE,
fileSystem: VscodeFileSystem,
scopeProvider: ScopeProvider,
vscodeTutorial: VscodeTutorial,
injectIde: (ide: IDE) => void,
loadLanguage: (languageId: string) => Promise<void>,
): VscodeTestHelpers | undefined {
return {
commandServerApi: commandServerApi!,
ide: normalizedIde,
injectIde,
loadLanguage,
scopeProvider,
toVscodeEditor,
fromVscodeEditor(editor: vscode.TextEditor): TextEditor {
return vscodeIDE.fromVscodeEditor(editor);
},
clearCache() {
scopeHandlerCache.clear();
treeSitterQueryCache.clear();
},
// FIXME: Remove this once we have a better way to get this function
// accessible from our tests
takeSnapshot(
excludeFields: ExcludableSnapshotField[],
extraFields: ExtraSnapshotField[],
editor: TextEditor,
ide: IDE,
marks: SerializedMarks | undefined,
): Promise<TestCaseSnapshot> {
return takeSnapshot(
storedTargets,
excludeFields,
extraFields,
editor,
ide,
marks,
undefined,
undefined,
);
},
cursorlessTalonStateJsonPath: fileSystem.cursorlessTalonStateJsonPath,
cursorlessCommandHistoryDirPath: fileSystem.cursorlessCommandHistoryDirPath,
setStoredTarget(
editor: TextEditor,
key: StoredTargetKey,
targets: TargetPlainObject[] | undefined,
): void {
storedTargets.set(
key,
targets?.map((target) => plainObjectToTarget(editor, target)),
);
},
hatTokenMap,
vscodeApi,
getTutorialWebviewEventLog() {
return vscodeTutorial.getEventLog();
},
};
}