test: split unit-fast shard

This commit is contained in:
Peter Steinberger
2026-04-10 23:01:56 +01:00
parent 9f5bdde62f
commit de8f3fdf92
9 changed files with 77 additions and 42 deletions

View File

@@ -6,6 +6,9 @@ export default defineConfig({
test: {
...sharedVitestConfig.test,
runner: undefined,
projects: ["test/vitest/vitest.unit-fast.config.ts"],
projects: [
"test/vitest/vitest.unit-fast-a.config.ts",
"test/vitest/vitest.unit-fast-b.config.ts",
],
},
});

View File

@@ -266,6 +266,8 @@ export const sharedVitestConfig = {
"test/vitest/vitest.media.config.ts",
"test/vitest/vitest.media-understanding.config.ts",
"test/vitest/vitest.performance-config.ts",
"test/vitest/vitest.unit-fast-a.config.ts",
"test/vitest/vitest.unit-fast-b.config.ts",
"test/vitest/vitest.unit-fast.config.ts",
"test/vitest/vitest.unit-fast-paths.mjs",
"test/vitest/vitest.scoped-config.ts",

View File

@@ -10,7 +10,10 @@ export const fullSuiteVitestShards = [
{
config: "test/vitest/vitest.full-core-unit-fast.config.ts",
name: "core-unit-fast",
projects: ["test/vitest/vitest.unit-fast.config.ts"],
projects: [
"test/vitest/vitest.unit-fast-a.config.ts",
"test/vitest/vitest.unit-fast-b.config.ts",
],
},
{
config: "test/vitest/vitest.full-core-unit-src.config.ts",

View File

@@ -0,0 +1,7 @@
import { partitionUnitFastTestFiles } from "./vitest.unit-fast-paths.mjs";
import { createUnitFastVitestConfig } from "./vitest.unit-fast.config.ts";
export default createUnitFastVitestConfig(process.env, {
include: partitionUnitFastTestFiles(0, 2),
name: "unit-fast-a",
});

View File

@@ -0,0 +1,7 @@
import { partitionUnitFastTestFiles } from "./vitest.unit-fast-paths.mjs";
import { createUnitFastVitestConfig } from "./vitest.unit-fast.config.ts";
export default createUnitFastVitestConfig(process.env, {
include: partitionUnitFastTestFiles(1, 2),
name: "unit-fast-b",
});

View File

@@ -212,6 +212,19 @@ export const unitFastTestFiles = collectUnitFastTestFileAnalysis()
.filter((entry) => entry.unitFast)
.map((entry) => entry.file);
export function partitionUnitFastTestFiles(index, total) {
if (
!Number.isInteger(index) ||
!Number.isInteger(total) ||
total < 1 ||
index < 0 ||
index >= total
) {
throw new Error(`invalid unit-fast partition ${index}/${total}`);
}
return unitFastTestFiles.filter((_file, fileIndex) => fileIndex % total === index);
}
const unitFastTestFileSet = new Set(unitFastTestFiles);
const sourceToUnitFastTestFile = new Map(
[...pluginSdkLightSourceFiles, ...commandsLightSourceFiles].flatMap((sourceFile) => {

View File

@@ -5,7 +5,7 @@ import { unitFastTestFiles } from "./vitest.unit-fast-paths.mjs";
export function createUnitFastVitestConfig(
env: Record<string, string | undefined> = process.env,
options: { argv?: string[] } = {},
options: { argv?: string[]; include?: string[]; name?: string } = {},
) {
const sharedTest = sharedVitestConfig.test ?? {};
const includeFromEnv = loadPatternListFromEnv("OPENCLAW_VITEST_INCLUDE_FILE", env);
@@ -15,11 +15,11 @@ export function createUnitFastVitestConfig(
...sharedVitestConfig,
test: {
...sharedTest,
name: "unit-fast",
name: options.name ?? "unit-fast",
isolate: false,
runner: undefined,
setupFiles: [],
include: includeFromEnv ?? cliInclude ?? unitFastTestFiles,
include: includeFromEnv ?? cliInclude ?? options.include ?? unitFastTestFiles,
exclude: sharedTest.exclude ?? [],
passWithNoTests: true,
},