Files
ttstd-infinite-canvas/web/test/helpers/module-group-source.ts
ddcat666 b8d0b25e3c fix(ci): 质量检查 - 修复预演台重构后 Web 与后端检查失败
补回预演台模式切换、模式门控时间轴与非模态引导挂载,取景切换器使用激活态 token,模板场景补齐 environment 字段;E2E 改为验证新版 FloatingDock 与模式切换下的时间轴,工作流改用重命名后的 test:previs:e2e;修正 canvas_share.go 的 gofmt 格式,并按新布局与欢迎页外观行为校准合同测试。
2026-10-06 14:21:42 +08:00

40 lines
3.5 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 源码约束测试的读取辅助:大文件按职责拆分后,约束应覆盖原文件及其拆分出的同组模块。
//
// 用法:moduleGroupSource("pages/assets/index.tsx") 返回原文件与同组模块拼接后的文本。
// 只在「源码断言」类测试里使用;行为测试请直接 import 模块。
import { readFileSync } from "node:fs";
import { resolve } from "node:path";
/** 原文件(相对 src)到拆分出的同组模块。新增拆分时在这里登记。 */
export const SPLIT_MODULE_GROUPS: Record<string, readonly string[]> = {
"components/canvas/canvas-cloud-agent-panel.tsx": ["components/canvas/canvas-cloud-agent-panel-parts.tsx", "components/canvas/canvas-cloud-agent-events.ts"],
"components/canvas/canvas-cloud-agent-chat-ui.tsx": ["components/canvas/canvas-cloud-agent-composer.tsx", "components/canvas/canvas-cloud-agent-attachments.ts"],
"components/canvas/art-critique/ai-art-critique-modal.tsx": ["components/canvas/art-critique/ai-art-critique-report.tsx"],
"components/canvas/canvas-resource-mention-textarea.tsx": ["components/canvas/canvas-mention-chips.tsx", "components/canvas/canvas-mention-editable.ts", "components/canvas/canvas-mention-menu.tsx"],
"components/canvas/canvas-node-content.tsx": ["components/canvas/canvas-node-media-content.tsx", "components/canvas/canvas-node-status-content.tsx"],
"components/canvas/canvas-node-prompt-panel.tsx": ["components/canvas/canvas-node-prompt-config.ts", "components/canvas/canvas-node-prompt-references.tsx", "components/canvas/canvas-node-prompt-resize.tsx"],
"components/canvas/canvas-script-node.tsx": ["components/canvas/canvas-script-node-parts.tsx"],
"lib/art-critique/pipeline.ts": ["lib/art-critique/pipeline-messages.ts", "lib/art-critique/pipeline-parse.ts"],
"lib/model-capabilities.ts": ["lib/model-capabilities-workflow.ts"],
"pages/admin/components/admin-announcements-panel.tsx": ["pages/admin/components/admin-announcement-editor.tsx", "pages/admin/components/admin-announcement-results.ts"],
"pages/admin/components/redemption-codes-panel.tsx": ["pages/admin/components/redemption-codes-modals.tsx"],
"pages/admin/settings/appearance-settings-page.tsx": ["pages/admin/settings/appearance-settings-parts.tsx"],
"pages/admin/settings/storage-settings-page.tsx": ["pages/admin/settings/storage-settings-model.ts"],
"pages/assets/index.tsx": ["pages/assets/asset-library-cards.tsx", "pages/assets/asset-library-format.ts", "pages/assets/asset-library-panels.tsx"],
"components/canvas/previs/canvas-previs-workbench.tsx": ["components/canvas/previs/previs-inspectors.tsx"],
"pages/canvas/project.tsx": ["pages/canvas/canvas-clipboard.ts"],
"pages/create/creation-workspace.tsx": ["pages/create/creation-workspace-empty.tsx", "pages/create/creation-workspace-history.tsx", "pages/create/creation-workspace-messages.tsx"],
"services/user-data-sync.ts": ["services/user-data-sync-media.ts"],
"stores/use-config-store.ts": ["stores/config-model-options.ts", "stores/config-workflow-fields.ts"],
};
const srcRoot = resolve(import.meta.dir, "../../src");
/** 读取 src 下的文件;若它被拆分过,一并读取同组模块。 */
export function moduleGroupSource(relativePath: string): string {
const normalized = relativePath.replace(/^(\.\.\/)*src\//, "").replace(/^\.\//, "");
const files = [normalized, ...(SPLIT_MODULE_GROUPS[normalized] ?? [])];
return files.map((file) => readFileSync(resolve(srcRoot, file), "utf8")).join("\n");
}