✨ Compile doc code fences into tests
Every `ts`-tagged fence in README.md / CONTRIBUTING.md now becomes an executed `node:test` case in a gitignored generated file, so a documented example cannot drift from the API. The generator hoists and merges the leading imports, rewrites the library specifier to the `#test-tiny-pattern-ts` alias, and rejects a fence with no describing paragraph or one that re-imports a prelude module. CI regenerates via `pretest:ci`; `create:doc-tests` runs the generator, formats, then typechecks the output against a scoped tsconfig that relaxes `noUnusedLocals`. c8's default excludes already omit the generated `*.test.ts`, so `test:ci` is unchanged.
This commit is contained in:
1 parent
d1963b0329
commit
30d97a9209
15 files changed
+1180
-8
No files matched your search
+6
-2
@@ -28,7 +28,8 @@
|
||||
"type": "module",
|
||||
"sideEffects": false,
|
||||
"imports": {
|
||||
"#test-utils/*": "./src/util/__tests__/*"
|
||||
"#test-utils/*": "./src/util/__tests__/*",
|
||||
"#test-tiny-pattern-ts": "./src/index.ts"
|
||||
},
|
||||
"exports": {
|
||||
".": {
|
||||
@@ -47,7 +48,8 @@
|
||||
"check:oxfmt": "oxfmt --check ${LEFTHOOK_FILES:-.}",
|
||||
"check:oxlint": "oxlint ${LEFTHOOK_FILES:-src scripts}",
|
||||
"check:tsc": "tsc",
|
||||
"clean": "rm -rf dist coverage",
|
||||
"clean": "rm -rf dist coverage src/doc-test/__generated__/*.test.ts",
|
||||
"create:doc-tests": "node --strip-types scripts/create-doc-tests.ts && sh -c 'oxfmt src/doc-test/__generated__/*.test.ts' && tsc -p src/doc-test/tsconfig.json",
|
||||
"fix": "npm run fix:oxlint && npm run fix:oxfmt",
|
||||
"fix:oxfmt": "oxfmt ${LEFTHOOK_FILES:-.}",
|
||||
"fix:oxlint": "oxlint --fix src scripts",
|
||||
@@ -58,6 +60,7 @@
|
||||
"maintain:knip": "knip --include dependencies,exports,files",
|
||||
"maintain:outdated": "check-outdated --ignore-pre-releases --ignore-packages @types/node",
|
||||
"test": "npm run check:tsc && node --test --strip-types \"src/**/*.test.ts\"",
|
||||
"pretest:ci": "npm run create:doc-tests",
|
||||
"test:ci": "c8 --all --include \"src/**/*.ts\" --reporter=text --reporter=lcov --reporter=html --100 node --test --strip-types \"src/**/*.test.ts\"",
|
||||
"test:unit": "node --test --strip-types \"src/**/*.test.ts\"",
|
||||
"verify": "npm run check && npm run test:unit",
|
||||
@@ -83,6 +86,7 @@
|
||||
"expect-type": "1.4.0",
|
||||
"knip": "^6.34.0",
|
||||
"lefthook": "^2.1.12",
|
||||
"mdast-util-from-markdown": "^2.0.3",
|
||||
"oxfmt": "^0.70.0",
|
||||
"oxlint": "^1.83.0",
|
||||
"oxlint-tsgolint": "^7.0.2001",
|
||||
|
||||
Reference in new issue
Block a user