🚚 Home test helpers behind #test-utils/*
src/util/__tests__/ holds shared test helpers, reached from anywhere in the source tree as `#test-utils/<name>.ts` through package.json#imports. A bare `~/…` is not a valid imports key — Node requires `#` — and a direction-free specifier keeps import/no-relative-parent-imports from ever firing. The `__tests__` folder name is the pattern tsconfig.build.json already excludes, so helpers can never ship. Lint scoping: import/no-nodejs-modules off for the folder (the probe spawns a language server) and typescript/promise-function-async off to match its promise-returning style. The LSP probe moves in from scripts/; a smoke test pins the specifier's resolution and typing without starting a server.
This commit is contained in:
1 parent
ee146ce350
commit
9e5522c131
4 files changed
+398
-1
No files matched your search
@@ -0,0 +1,32 @@
|
||||
/* oxlint-disable typescript/no-floating-promises -- expectTypeOf() is a sync type-assertion library that the type-aware linter misidentifies as a promise */
|
||||
import { strict as assert } from "node:assert";
|
||||
import { test } from "node:test";
|
||||
|
||||
import { expectTypeOf } from "expect-type";
|
||||
|
||||
import {
|
||||
type CompletionResult,
|
||||
type CompletionTarget,
|
||||
LspSession,
|
||||
} from "#test-utils/lsp-completion.ts";
|
||||
|
||||
// The `#test-utils/*` self-reference (package.json#imports) is the one route
|
||||
// scattered test files take to reach test helpers; this pins that it resolves
|
||||
// and types without starting a language server
|
||||
// (development/testing.md § Test helpers).
|
||||
test("test-helper home: `#test-utils/…` resolves to the helper and types it", () => {
|
||||
// Arrange
|
||||
const target: CompletionTarget = {
|
||||
file: "src/util/__tests__/lsp-completion.ts",
|
||||
source: "",
|
||||
};
|
||||
|
||||
// Assert — no session is constructed: the constructor spawns `tsc --lsp`,
|
||||
// so only the resolved values and their types are checked here.
|
||||
expectTypeOf(LspSession).toBeConstructibleWith("repo-root");
|
||||
expectTypeOf<CompletionResult>().toMatchTypeOf<{
|
||||
labels: readonly string[];
|
||||
}>();
|
||||
assert.equal(typeof LspSession, "function");
|
||||
assert.equal(target.file, "src/util/__tests__/lsp-completion.ts");
|
||||
});
|
||||
Reference in new issue
Block a user