From 294727600b97f44fc39a7f88e9f7224dfabd1aef Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 18 May 2025 11:26:59 +0300 Subject: [PATCH] feat(highlightjs): add test --- packages/highlightjs/README.md | 4 +++ .../src/syntax_highlighting.spec.ts | 14 ++++++++ packages/highlightjs/tsconfig.json | 3 ++ packages/highlightjs/tsconfig.lib.json | 16 ++++++++- packages/highlightjs/tsconfig.spec.json | 36 +++++++++++++++++++ packages/highlightjs/vite.config.ts | 4 +-- 6 files changed, 74 insertions(+), 3 deletions(-) create mode 100644 packages/highlightjs/src/syntax_highlighting.spec.ts create mode 100644 packages/highlightjs/tsconfig.spec.json diff --git a/packages/highlightjs/README.md b/packages/highlightjs/README.md index 706753a31..d3897f3f7 100644 --- a/packages/highlightjs/README.md +++ b/packages/highlightjs/README.md @@ -5,3 +5,7 @@ This library was generated with [Nx](https://nx.dev). ## Building Run `nx build highlightjs` to build the library. + +## Running unit tests + +Run `nx test highlightjs` to execute the unit tests via [Vitest](https://vitest.dev/). diff --git a/packages/highlightjs/src/syntax_highlighting.spec.ts b/packages/highlightjs/src/syntax_highlighting.spec.ts new file mode 100644 index 000000000..668bb796e --- /dev/null +++ b/packages/highlightjs/src/syntax_highlighting.spec.ts @@ -0,0 +1,14 @@ +import { describe, it } from "vitest"; +import definitions from "./syntax_highlighting.js"; + +describe("Syntax highlighting definitions", () => { + it("every entry is readable", async () => { + for (const [ mime, mapping ] of Object.entries(definitions)) { + if (mapping === null) { + continue; + } + + await mapping.loader; + } + }); +}); diff --git a/packages/highlightjs/tsconfig.json b/packages/highlightjs/tsconfig.json index c23e61c80..62ebbd946 100644 --- a/packages/highlightjs/tsconfig.json +++ b/packages/highlightjs/tsconfig.json @@ -5,6 +5,9 @@ "references": [ { "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" } ] } diff --git a/packages/highlightjs/tsconfig.lib.json b/packages/highlightjs/tsconfig.lib.json index 89ba670c3..f0a69a32c 100644 --- a/packages/highlightjs/tsconfig.lib.json +++ b/packages/highlightjs/tsconfig.lib.json @@ -17,5 +17,19 @@ "include": [ "src/**/*.ts" ], - "references": [] + "references": [], + "exclude": [ + "vite.config.ts", + "vite.config.mts", + "vitest.config.ts", + "vitest.config.mts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.test.tsx", + "src/**/*.spec.tsx", + "src/**/*.test.js", + "src/**/*.spec.js", + "src/**/*.test.jsx", + "src/**/*.spec.jsx" + ] } diff --git a/packages/highlightjs/tsconfig.spec.json b/packages/highlightjs/tsconfig.spec.json new file mode 100644 index 000000000..d5788402a --- /dev/null +++ b/packages/highlightjs/tsconfig.spec.json @@ -0,0 +1,36 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "outDir": "./out-tsc/vitest", + "types": [ + "vitest/globals", + "vitest/importMeta", + "vite/client", + "node", + "vitest" + ], + "forceConsistentCasingInFileNames": true, + "noImplicitOverride": true, + "noImplicitReturns": true + }, + "include": [ + "vite.config.ts", + "vite.config.mts", + "vitest.config.ts", + "vitest.config.mts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.test.tsx", + "src/**/*.spec.tsx", + "src/**/*.test.js", + "src/**/*.spec.js", + "src/**/*.test.jsx", + "src/**/*.spec.jsx", + "src/**/*.d.ts" + ], + "references": [ + { + "path": "./tsconfig.lib.json" + } + ] +} diff --git a/packages/highlightjs/vite.config.ts b/packages/highlightjs/vite.config.ts index 4ca8b8341..4bb602837 100644 --- a/packages/highlightjs/vite.config.ts +++ b/packages/highlightjs/vite.config.ts @@ -1,4 +1,4 @@ -/// + import { defineConfig } from 'vite'; import dts from 'vite-plugin-dts'; import * as path from 'path'; @@ -6,7 +6,7 @@ import * as path from 'path'; export default defineConfig(() => ({ root: __dirname, cacheDir: '../../node_modules/.vite/packages/highlightjs', - plugins: [dts({ entryRoot: 'src', tsconfigPath: path.join(__dirname, 'tsconfig.lib.json') })], + plugins: [dts({ entryRoot: 'src', tsconfigPath: path.join(__dirname, 'tsconfig.lib.json') }), ], // Uncomment this if you are using workers. // worker: { // plugins: [ nxViteTsPaths() ],