mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-12 09:41:11 +00:00
test: keep conservative full-suite shards aggregated
This commit is contained in:
@@ -644,6 +644,9 @@ export function buildFullSuiteVitestRunPlans(args, cwd = process.cwd()) {
|
||||
}
|
||||
|
||||
export function shouldUseLocalFullSuiteParallelByDefault(env = process.env) {
|
||||
if (hasConservativeVitestWorkerBudget(env)) {
|
||||
return false;
|
||||
}
|
||||
return (
|
||||
env.OPENCLAW_TEST_PROJECTS_SERIAL !== "1" && env.CI !== "true" && env.GITHUB_ACTIONS !== "true"
|
||||
);
|
||||
@@ -654,6 +657,13 @@ function parsePositiveInt(value) {
|
||||
return Number.isFinite(parsed) && parsed > 0 ? parsed : null;
|
||||
}
|
||||
|
||||
function hasConservativeVitestWorkerBudget(env) {
|
||||
const workerBudget = parsePositiveInt(
|
||||
env.OPENCLAW_VITEST_MAX_WORKERS ?? env.OPENCLAW_TEST_WORKERS,
|
||||
);
|
||||
return workerBudget !== null && workerBudget <= 1;
|
||||
}
|
||||
|
||||
export function resolveParallelFullSuiteConcurrency(specCount, env = process.env) {
|
||||
const override = parsePositiveInt(env.OPENCLAW_TEST_PROJECTS_PARALLEL);
|
||||
if (override !== null) {
|
||||
@@ -665,10 +675,7 @@ export function resolveParallelFullSuiteConcurrency(specCount, env = process.env
|
||||
if (env.CI === "true" || env.GITHUB_ACTIONS === "true") {
|
||||
return 1;
|
||||
}
|
||||
const workerBudget = parsePositiveInt(
|
||||
env.OPENCLAW_VITEST_MAX_WORKERS ?? env.OPENCLAW_TEST_WORKERS,
|
||||
);
|
||||
if (workerBudget !== null && workerBudget <= 1) {
|
||||
if (hasConservativeVitestWorkerBudget(env)) {
|
||||
return 1;
|
||||
}
|
||||
if (
|
||||
|
||||
@@ -1,12 +1,22 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
|
||||
const {
|
||||
buildFullSuiteVitestRunPlans,
|
||||
buildVitestArgs,
|
||||
buildVitestRunPlans,
|
||||
createVitestRunSpecs,
|
||||
parseTestProjectsArgs,
|
||||
resolveParallelFullSuiteConcurrency,
|
||||
} = (await import("../../scripts/test-projects.test-support.mjs")) as unknown as {
|
||||
buildFullSuiteVitestRunPlans: (
|
||||
args: string[],
|
||||
cwd?: string,
|
||||
) => Array<{
|
||||
config: string;
|
||||
forwardedArgs: string[];
|
||||
includePatterns: string[] | null;
|
||||
watchMode: boolean;
|
||||
}>;
|
||||
buildVitestArgs: (args: string[], cwd?: string) => string[];
|
||||
buildVitestRunPlans: (
|
||||
args: string[],
|
||||
@@ -411,6 +421,45 @@ describe("test-projects args", () => {
|
||||
).toBe(1);
|
||||
});
|
||||
|
||||
it("keeps conservative full-suite runs on aggregate shards", () => {
|
||||
const originalVitestMaxWorkers = process.env.OPENCLAW_VITEST_MAX_WORKERS;
|
||||
const originalTestWorkers = process.env.OPENCLAW_TEST_WORKERS;
|
||||
const originalProjectParallel = process.env.OPENCLAW_TEST_PROJECTS_PARALLEL;
|
||||
const originalLeafShards = process.env.OPENCLAW_TEST_PROJECTS_LEAF_SHARDS;
|
||||
try {
|
||||
process.env.OPENCLAW_VITEST_MAX_WORKERS = "1";
|
||||
delete process.env.OPENCLAW_TEST_WORKERS;
|
||||
delete process.env.OPENCLAW_TEST_PROJECTS_PARALLEL;
|
||||
delete process.env.OPENCLAW_TEST_PROJECTS_LEAF_SHARDS;
|
||||
|
||||
const configs = buildFullSuiteVitestRunPlans([]).map((plan) => plan.config);
|
||||
|
||||
expect(configs).toContain("vitest.full-agentic.config.ts");
|
||||
expect(configs).not.toContain("vitest.plugins.config.ts");
|
||||
} finally {
|
||||
if (originalVitestMaxWorkers === undefined) {
|
||||
delete process.env.OPENCLAW_VITEST_MAX_WORKERS;
|
||||
} else {
|
||||
process.env.OPENCLAW_VITEST_MAX_WORKERS = originalVitestMaxWorkers;
|
||||
}
|
||||
if (originalTestWorkers === undefined) {
|
||||
delete process.env.OPENCLAW_TEST_WORKERS;
|
||||
} else {
|
||||
process.env.OPENCLAW_TEST_WORKERS = originalTestWorkers;
|
||||
}
|
||||
if (originalProjectParallel === undefined) {
|
||||
delete process.env.OPENCLAW_TEST_PROJECTS_PARALLEL;
|
||||
} else {
|
||||
process.env.OPENCLAW_TEST_PROJECTS_PARALLEL = originalProjectParallel;
|
||||
}
|
||||
if (originalLeafShards === undefined) {
|
||||
delete process.env.OPENCLAW_TEST_PROJECTS_LEAF_SHARDS;
|
||||
} else {
|
||||
process.env.OPENCLAW_TEST_PROJECTS_LEAF_SHARDS = originalLeafShards;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
it("keeps explicit project-level parallelism authoritative", () => {
|
||||
expect(
|
||||
resolveParallelFullSuiteConcurrency(58, {
|
||||
|
||||
Reference in New Issue
Block a user