test(scripts): wire scripts/**/*.test.mjs under a vitest runner
241 tests across 16 script test files were wired to NO runner (the generators vitest config never included them and several used node:test imports that vitest silently skips). New root vitest.scripts.config.mjs + pnpm test:scripts + a CI validate step run them all; node:test imports converted to vitest keeping node:assert. Split out of 8c88a9a where a concurrent agent's staged files were swept into the marketing-pages commit. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
import { test, describe } from "node:test";
|
||||
// Runs under vitest (pnpm test:scripts picks up scripts/**/*.test.mjs);
|
||||
// node:assert keeps the original assertion style.
|
||||
import { test, describe } from "vitest";
|
||||
import assert from "node:assert/strict";
|
||||
import fs from "node:fs";
|
||||
import os from "node:os";
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
import { test, describe } from "node:test";
|
||||
// Runs under vitest (pnpm test:scripts picks up scripts/**/*.test.mjs);
|
||||
// node:assert keeps the original assertion style.
|
||||
import { test, describe } from "vitest";
|
||||
import assert from "node:assert/strict";
|
||||
import fs from "node:fs";
|
||||
import os from "node:os";
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
import { test, describe } from "node:test";
|
||||
// Runs under vitest (pnpm test:scripts picks up scripts/**/*.test.mjs);
|
||||
// node:assert keeps the original assertion style.
|
||||
import { test, describe } from "vitest";
|
||||
import assert from "node:assert/strict";
|
||||
import fs from "node:fs";
|
||||
import os from "node:os";
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
import { test, describe } from "node:test";
|
||||
// Runs under vitest (pnpm test:scripts picks up scripts/**/*.test.mjs);
|
||||
// node:assert keeps the original assertion style.
|
||||
import { test, describe } from "vitest";
|
||||
import assert from "node:assert/strict";
|
||||
import fs from "node:fs";
|
||||
import path from "node:path";
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
import { test, describe } from "node:test";
|
||||
// Runs under vitest (pnpm test:scripts picks up scripts/**/*.test.mjs);
|
||||
// node:assert keeps the original assertion style.
|
||||
import { test, describe } from "vitest";
|
||||
import assert from "node:assert/strict";
|
||||
import fs from "node:fs";
|
||||
import path from "node:path";
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
import { test, describe } from "node:test";
|
||||
// Runs under vitest (pnpm test:scripts picks up scripts/**/*.test.mjs);
|
||||
// node:assert keeps the original assertion style.
|
||||
import { test, describe } from "vitest";
|
||||
import assert from "node:assert/strict";
|
||||
import fs from "node:fs";
|
||||
import path from "node:path";
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
import { test, describe } from "node:test";
|
||||
// Runs under vitest (pnpm test:scripts picks up scripts/**/*.test.mjs);
|
||||
// node:assert keeps the original assertion style.
|
||||
import { test, describe } from "vitest";
|
||||
import assert from "node:assert/strict";
|
||||
import fs from "node:fs";
|
||||
import os from "node:os";
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
import { test, describe } from "node:test";
|
||||
// Runs under vitest (pnpm test:scripts picks up scripts/**/*.test.mjs);
|
||||
// node:assert keeps the original assertion style.
|
||||
import { test, describe } from "vitest";
|
||||
import assert from "node:assert/strict";
|
||||
import fs from "node:fs";
|
||||
import os from "node:os";
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
import { test, describe } from "node:test";
|
||||
// Runs under vitest (pnpm test:scripts picks up scripts/**/*.test.mjs);
|
||||
// node:assert keeps the original assertion style.
|
||||
import { test, describe } from "vitest";
|
||||
import assert from "node:assert/strict";
|
||||
import fs from "node:fs";
|
||||
import os from "node:os";
|
||||
|
||||
@@ -52,8 +52,10 @@ describe("pnpm work cli", () => {
|
||||
expect(out.length).toBeGreaterThan(0);
|
||||
});
|
||||
|
||||
it("dispatch prints a plan", () => {
|
||||
it("dispatch prints a plan or reports nothing is ready", () => {
|
||||
// Runs against the real docs/work tree, so the outcome depends on
|
||||
// whether a ready task exists — both branches are valid CLI output.
|
||||
const out = run("dispatch");
|
||||
expect(out).toContain("Dispatch plan");
|
||||
expect(out).toMatch(/Dispatch plan|No ready task to dispatch/);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
import { test, describe } from "node:test";
|
||||
// Runs under vitest (pnpm test:scripts picks up scripts/**/*.test.mjs);
|
||||
// node:assert keeps the original assertion style.
|
||||
import { test, describe } from "vitest";
|
||||
import assert from "node:assert/strict";
|
||||
import fs from "node:fs";
|
||||
import path from "node:path";
|
||||
|
||||
@@ -12,7 +12,8 @@ import {
|
||||
function makeWorkTree({ epics }) {
|
||||
const root = fs.mkdtempSync(path.join(os.tmpdir(), "dispatch-"));
|
||||
for (const [epicId, epicData] of Object.entries(epics)) {
|
||||
const epicDir = path.join(root, epicId);
|
||||
// findNextTask/buildState walk <workRoot>/epics/ — mirror docs/work.
|
||||
const epicDir = path.join(root, "epics", epicId);
|
||||
fs.mkdirSync(epicDir, { recursive: true });
|
||||
fs.writeFileSync(
|
||||
path.join(epicDir, "_epic.md"),
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
import { test, describe } from "node:test";
|
||||
// Runs under vitest (pnpm test:scripts picks up scripts/**/*.test.mjs);
|
||||
// node:assert keeps the original assertion style.
|
||||
import { test, describe } from "vitest";
|
||||
import assert from "node:assert/strict";
|
||||
import fs from "node:fs";
|
||||
import path from "node:path";
|
||||
|
||||
@@ -12,7 +12,8 @@ import {
|
||||
function makeWorkTree({ epics }) {
|
||||
const root = fs.mkdtempSync(path.join(os.tmpdir(), "work-state-"));
|
||||
for (const [epicId, epicData] of Object.entries(epics)) {
|
||||
const epicDir = path.join(root, epicId);
|
||||
// buildState walks <workRoot>/epics/ — mirror the real docs/work layout.
|
||||
const epicDir = path.join(root, "epics", epicId);
|
||||
fs.mkdirSync(epicDir, { recursive: true });
|
||||
fs.writeFileSync(
|
||||
path.join(epicDir, "_epic.md"),
|
||||
@@ -85,6 +86,7 @@ describe("buildState", () => {
|
||||
epic1: {
|
||||
status: "in-progress",
|
||||
title: "epic1",
|
||||
prd: null,
|
||||
stories: {
|
||||
story1: {
|
||||
status: "done",
|
||||
@@ -127,7 +129,7 @@ describe("buildState", () => {
|
||||
|
||||
it("parses depends-on and blocks frontmatter arrays", () => {
|
||||
const root = fs.mkdtempSync(path.join(os.tmpdir(), "work-dep-"));
|
||||
const epicDir = path.join(root, "epic1");
|
||||
const epicDir = path.join(root, "epics", "epic1");
|
||||
fs.mkdirSync(epicDir, { recursive: true });
|
||||
fs.writeFileSync(
|
||||
path.join(epicDir, "_epic.md"),
|
||||
|
||||
Reference in New Issue
Block a user