feat: restore gateway HMR and add WRN formatting
This commit is contained in:
@@ -2,6 +2,7 @@ import { expect, test } from "bun:test";
|
||||
import { existsSync, mkdtempSync, readFileSync, rmSync } from "node:fs";
|
||||
import { tmpdir } from "node:os";
|
||||
import { join } from "node:path";
|
||||
import { format } from "prettier";
|
||||
import { scaffoldApp } from "../src/create.ts";
|
||||
import { currentCliVersion } from "../src/update-notifier.ts";
|
||||
|
||||
@@ -69,6 +70,15 @@ test("scaffoldApp pins the current framework and exposes llms.txt publicly", ()
|
||||
expect(existsSync(join(root, "public", "llms.txt"))).toBe(true);
|
||||
expect(existsSync(join(root, "llms.txt"))).toBe(false);
|
||||
expect(readFileSync(join(root, ".prettierignore"), "utf8")).toContain("CLAUDE.md");
|
||||
expect(readFileSync(join(root, ".vscode", "settings.json"), "utf8")).toContain(
|
||||
'"editor.formatOnSave": true',
|
||||
);
|
||||
expect(readFileSync(join(root, ".vscode", "settings.json"), "utf8")).toContain(
|
||||
'"editor.defaultFormatter": "wrnexus.wrnexus"',
|
||||
);
|
||||
expect(readFileSync(join(root, ".vscode", "extensions.json"), "utf8")).toContain(
|
||||
"wrnexus.wrnexus",
|
||||
);
|
||||
expect(readFileSync(join(root, "app", "pages", "index.wrn"), "utf8")).toContain(
|
||||
'href="/api/hello"',
|
||||
);
|
||||
@@ -77,3 +87,34 @@ test("scaffoldApp pins the current framework and exposes llms.txt publicly", ()
|
||||
rmSync(parent, { recursive: true, force: true });
|
||||
}
|
||||
});
|
||||
|
||||
test("scaffoldApp emits Prettier-compliant editor and framework files", async () => {
|
||||
const parent = mkdtempSync(join(tmpdir(), "wrnexus-create-"));
|
||||
const root = join(parent, "formatted-app");
|
||||
|
||||
try {
|
||||
scaffoldApp(root, "formatted-app");
|
||||
for (const relative of [
|
||||
"app/styles/global.css",
|
||||
"eslint.config.js",
|
||||
".vscode/settings.json",
|
||||
".vscode/extensions.json",
|
||||
]) {
|
||||
const file = join(root, relative);
|
||||
const source = readFileSync(file, "utf8");
|
||||
const formatted = await format(source, {
|
||||
filepath: file,
|
||||
printWidth: 100,
|
||||
tabWidth: 2,
|
||||
useTabs: false,
|
||||
semi: true,
|
||||
singleQuote: false,
|
||||
trailingComma: "all",
|
||||
endOfLine: "lf",
|
||||
});
|
||||
expect(formatted).toBe(source);
|
||||
}
|
||||
} finally {
|
||||
rmSync(parent, { recursive: true, force: true });
|
||||
}
|
||||
});
|
||||
|
||||
@@ -61,3 +61,35 @@ test("0.2.18 migration adds helpers to existing apps and is idempotent", () => {
|
||||
rmSync(root, { recursive: true, force: true });
|
||||
}
|
||||
});
|
||||
|
||||
test("0.2.19 migration adds VS Code formatting defaults without overwriting settings", () => {
|
||||
const root = mkdtempSync(join(tmpdir(), "wrnexus-update-"));
|
||||
mkdirSync(join(root, "app", "pages"), { recursive: true });
|
||||
mkdirSync(join(root, ".vscode"), { recursive: true });
|
||||
writeFileSync(
|
||||
join(root, "package.json"),
|
||||
JSON.stringify({ name: "editor-app", wrnexus: { version: "0.2.18" } }),
|
||||
);
|
||||
writeFileSync(join(root, ".gitignore"), ".vscode/\n");
|
||||
writeFileSync(join(root, ".prettierignore"), "node_modules/\n");
|
||||
writeFileSync(join(root, ".vscode", "settings.json"), '{"editor.tabSize":4}\n');
|
||||
|
||||
try {
|
||||
updateApp(root, "0.2.19", false);
|
||||
updateApp(root, "0.2.19", false);
|
||||
|
||||
expect(readFileSync(join(root, ".vscode", "settings.json"), "utf8")).toBe(
|
||||
'{"editor.tabSize":4}\n',
|
||||
);
|
||||
expect(readFileSync(join(root, ".vscode", "extensions.json"), "utf8")).toContain(
|
||||
"wrnexus.wrnexus",
|
||||
);
|
||||
expect(readFileSync(join(root, ".prettierignore"), "utf8")).toBe("node_modules/\nCLAUDE.md\n");
|
||||
const gitignore = readFileSync(join(root, ".gitignore"), "utf8");
|
||||
expect(gitignore).not.toContain(".vscode/\n");
|
||||
expect(gitignore).toContain("!.vscode/settings.json");
|
||||
expect(gitignore).toContain("!.vscode/extensions.json");
|
||||
} finally {
|
||||
rmSync(root, { recursive: true, force: true });
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user