-
-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathmetadata.ts
More file actions
79 lines (72 loc) · 2.59 KB
/
metadata.ts
File metadata and controls
79 lines (72 loc) · 2.59 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
import type { ITestRepository, TestItemMetadata, TestType } from '@vscode-wdio/types/test'
import type * as vscode from 'vscode'
export class MetadataRepository {
private static _testMetadataRepository = new WeakMap<vscode.TestItem, TestItemMetadata>()
public getMetadata(testItem: vscode.TestItem) {
const metadata = MetadataRepository._testMetadataRepository.get(testItem)
if (!metadata) {
throw new Error("The metadata for TestItem is not set. This is extension's bug.")
}
return metadata
}
public getRepository(testItem: vscode.TestItem) {
const metadata = this.getMetadata(testItem)
if (!metadata.repository) {
throw new Error("The metadata for TestItem is not set. This is extension's bug.")
}
return metadata.repository
}
protected setMetadata(testItem: vscode.TestItem, metadata: TestItemMetadata) {
MetadataRepository._testMetadataRepository.set(testItem, metadata)
}
public createTestMetadata(
testItem: vscode.TestItem,
options: { uri: vscode.Uri; repository: ITestRepository; testType: TestType }
) {
this.setMetadata(testItem, {
uri: options.uri,
isWorkspace: false,
isConfigFile: false,
isSpecFile: false,
isTestcase: true,
repository: options.repository,
type: options.testType,
})
}
public createSpecFileMetadata(
testItem: vscode.TestItem,
options: { repository: ITestRepository; uri: vscode.Uri }
) {
this.setMetadata(testItem, {
uri: options.uri,
isWorkspace: false,
isConfigFile: false,
isSpecFile: true,
isTestcase: false,
repository: options.repository,
})
}
public createWdioConfigFileMetadata(
testItem: vscode.TestItem,
options: { repository: ITestRepository; uri: vscode.Uri; runProfiles?: vscode.TestRunProfile[] }
) {
this.setMetadata(testItem, {
uri: options.uri,
isWorkspace: false,
isConfigFile: true,
isSpecFile: false,
isTestcase: false,
repository: options.repository,
runProfiles: options.runProfiles,
})
}
public createWorkspaceMetadata(testItem: vscode.TestItem, options: { uri: vscode.Uri }) {
this.setMetadata(testItem, {
uri: options.uri,
isWorkspace: true,
isConfigFile: false,
isSpecFile: false,
isTestcase: false,
})
}
}