-
Notifications
You must be signed in to change notification settings - Fork 132
/
Copy pathfixtures.ts
68 lines (59 loc) · 2.38 KB
/
fixtures.ts
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
import * as fs from 'fs'
import * as path from 'path'
import { TextDocument } from 'vscode-languageserver-textdocument'
export const FIXTURE_FOLDER = path.join(__dirname, './fixtures/')
function getDocument(uri: string) {
return TextDocument.create(
uri,
'shellscript',
0,
fs.readFileSync(uri.replace('file://', ''), 'utf8'),
)
}
type FIXTURE_KEY = keyof typeof FIXTURE_URI
export const FIXTURE_URI = {
COMMENT_DOC: `file://${path.join(FIXTURE_FOLDER, 'comment-doc-on-hover.sh')}`,
INSTALL: `file://${path.join(FIXTURE_FOLDER, 'install.sh')}`,
ISSUE101: `file://${path.join(FIXTURE_FOLDER, 'issue101.sh')}`,
ISSUE206: `file://${path.join(FIXTURE_FOLDER, 'issue206.sh')}`,
MISSING_EXTENSION: `file://${path.join(FIXTURE_FOLDER, 'extension')}`,
EXTENSION_INC: `file://${path.join(FIXTURE_FOLDER, 'extension.inc')}`,
MISSING_NODE: `file://${path.join(FIXTURE_FOLDER, 'missing-node.sh')}`,
MISSING_NODE2: `file://${path.join(FIXTURE_FOLDER, 'missing-node2.sh')}`,
OPTIONS: `file://${path.join(FIXTURE_FOLDER, 'options.sh')}`,
OVERRIDE_SYMBOL: `file://${path.join(FIXTURE_FOLDER, 'override-executable-symbol.sh')}`,
PARSE_PROBLEMS: `file://${path.join(FIXTURE_FOLDER, 'parse-problems.sh')}`,
SCOPE: `file://${path.join(FIXTURE_FOLDER, 'scope.sh')}`,
SHELLCHECK_SOURCE: `file://${path.join(FIXTURE_FOLDER, 'shellcheck', 'source.sh')}`,
SOURCING: `file://${path.join(FIXTURE_FOLDER, 'sourcing.sh')}`,
}
export const FIXTURE_DOCUMENT: Record<FIXTURE_KEY, TextDocument> = (
Object.keys(FIXTURE_URI) as Array<FIXTURE_KEY>
).reduce((acc, cur: FIXTURE_KEY) => {
acc[cur] = getDocument(FIXTURE_URI[cur])
return acc
}, {} as any)
export const REPO_ROOT_FOLDER = path.resolve(path.join(FIXTURE_FOLDER, '../..'))
export function updateSnapshotUris<
T extends Record<string, any> | Array<any> | null | undefined,
>(data: T): T {
if (data != null) {
if (Array.isArray(data)) {
data.forEach((el) => updateSnapshotUris(el))
return data
}
if (typeof data === 'object') {
if (data.uri) {
data.uri = data.uri.replace(REPO_ROOT_FOLDER, '__REPO_ROOT_FOLDER__')
}
Object.values(data).forEach((child) => {
if (Array.isArray(child)) {
child.forEach((el) => updateSnapshotUris(el))
} else if (typeof child === 'object' && child != null) {
updateSnapshotUris(child)
}
})
}
}
return data
}