mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-06 14:51:08 +00:00
68 lines
2.4 KiB
JavaScript
68 lines
2.4 KiB
JavaScript
import path from "node:path";
|
|
import {
|
|
BUNDLED_PLUGIN_PATH_PREFIX,
|
|
bundledPluginFile,
|
|
bundledPluginRoot,
|
|
} from "./scripts/lib/bundled-plugin-paths.mjs";
|
|
|
|
const normalizeRepoPath = (value) => value.split(path.sep).join("/");
|
|
|
|
export const extensionRoutedChannelTestFiles = [
|
|
bundledPluginFile("telegram", "src/bot/delivery.resolve-media-retry.test.ts"),
|
|
bundledPluginFile("telegram", "src/fetch.test.ts"),
|
|
];
|
|
|
|
const extensionRoutedChannelTestFileSet = new Set(extensionRoutedChannelTestFiles);
|
|
|
|
export const channelTestRoots = [
|
|
bundledPluginRoot("telegram"),
|
|
bundledPluginRoot("discord"),
|
|
bundledPluginRoot("whatsapp"),
|
|
bundledPluginRoot("slack"),
|
|
bundledPluginRoot("signal"),
|
|
bundledPluginRoot("imessage"),
|
|
"src/browser",
|
|
"src/line",
|
|
];
|
|
|
|
export const channelTestPrefixes = channelTestRoots.map((root) => `${root}/`);
|
|
export const channelTestInclude = channelTestRoots.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 function isChannelSurfaceTestFile(filePath) {
|
|
const normalizedFile = normalizeRepoPath(filePath);
|
|
return (
|
|
channelTestPrefixes.some((prefix) => normalizedFile.startsWith(prefix)) &&
|
|
!extensionRoutedChannelTestFileSet.has(normalizedFile)
|
|
);
|
|
}
|