forked from openclaw/openclaw
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathvitest.channel-paths.mjs
More file actions
76 lines (67 loc) · 2.84 KB
/
vitest.channel-paths.mjs
File metadata and controls
76 lines (67 loc) · 2.84 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
import path from "node:path";
import {
BUNDLED_PLUGIN_PATH_PREFIX,
bundledPluginRoot,
} from "./scripts/lib/bundled-plugin-paths.mjs";
const normalizeRepoPath = (value) => value.split(path.sep).join("/");
export const extensionRoutedChannelTestFiles = [];
const extensionRoutedChannelTestFileSet = new Set(extensionRoutedChannelTestFiles);
export const channelTestRoots = [
"src/channels",
bundledPluginRoot("discord"),
bundledPluginRoot("slack"),
bundledPluginRoot("signal"),
bundledPluginRoot("imessage"),
bundledPluginRoot("browser"),
bundledPluginRoot("line"),
];
export const extensionChannelTestRoots = channelTestRoots.filter((root) =>
root.startsWith(BUNDLED_PLUGIN_PATH_PREFIX),
);
export const coreChannelTestRoots = channelTestRoots.filter(
(root) => !root.startsWith(BUNDLED_PLUGIN_PATH_PREFIX),
);
export const channelTestPrefixes = channelTestRoots.map((root) => `${root}/`);
export const channelTestInclude = channelTestRoots.map((root) => `${root}/**/*.test.ts`);
export const extensionChannelTestInclude = extensionChannelTestRoots.map(
(root) => `${root}/**/*.test.ts`,
);
export const coreChannelTestInclude = coreChannelTestRoots.map((root) => `${root}/**/*.test.ts`);
export const channelTestExclude = channelTestRoots.map((root) => `${root}/**`);
const extensionChannelRootOverrideBasenames = new Map();
for (const file of extensionRoutedChannelTestFiles) {
if (!file.startsWith(BUNDLED_PLUGIN_PATH_PREFIX)) {
continue;
}
const relativeFile = file.slice(BUNDLED_PLUGIN_PATH_PREFIX.length);
const separator = relativeFile.indexOf("/");
if (separator === -1) {
continue;
}
const root = relativeFile.slice(0, separator);
const baseName = path.basename(relativeFile, ".test.ts");
const current = extensionChannelRootOverrideBasenames.get(root) ?? [];
current.push(baseName);
extensionChannelRootOverrideBasenames.set(root, current);
}
export const extensionExcludedChannelTestGlobs = channelTestRoots
.filter((root) => root.startsWith(BUNDLED_PLUGIN_PATH_PREFIX))
.map((root) => root.slice(BUNDLED_PLUGIN_PATH_PREFIX.length))
.map((relativeRoot) => {
const allowedBasenames = extensionChannelRootOverrideBasenames.get(relativeRoot) ?? [];
if (allowedBasenames.length === 0) {
return `${relativeRoot}/**`;
}
const alternation = allowedBasenames.join("|");
return `${relativeRoot}/**/!(${alternation}).test.ts`;
});
export const extensionChannelOverrideExcludeGlobs = extensionRoutedChannelTestFiles
.filter((file) => file.startsWith(BUNDLED_PLUGIN_PATH_PREFIX))
.map((file) => file.slice(BUNDLED_PLUGIN_PATH_PREFIX.length));
export function isChannelSurfaceTestFile(filePath) {
const normalizedFile = normalizeRepoPath(filePath);
return (
channelTestPrefixes.some((prefix) => normalizedFile.startsWith(prefix)) &&
!extensionRoutedChannelTestFileSet.has(normalizedFile)
);
}