diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..668199c --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,41 @@ +name: Test + +on: + pull_request: + branches: + - main + push: + branches: + - main + +permissions: + contents: read + +jobs: + test: + name: Test + strategy: + matrix: + node-version: + - 20.19.x + - 22.17.x + os: + - macos-latest + - ubuntu-latest + - windows-latest + runs-on: "${{ matrix.os }}" + steps: + - run: git config --global core.autocrlf input + - name: Checkout + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - name: Setup Node.js + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + with: + node-version: "${{ matrix.node-version }}" + cache: "yarn" + - name: Install dependencies + run: yarn install --frozen-lockfile + - name: Build + run: yarn build + - name: Test + run: yarn lint && yarn test diff --git a/.vscode/settings.json b/.vscode/settings.json index 42a20bc..14ac857 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -5,6 +5,6 @@ }, "eslint.validate": ["typescript"], "[typescript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" + "editor.defaultFormatter": "dbaeumer.vscode-eslint" } } diff --git a/package.json b/package.json index 8417f07..3771938 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "scripts": { "build": "yarn run build:code && yarn run build:schema", "build:code": "tsc", - "build:schema": "node --experimental-strip-types ./scripts/build-dxt-schema.js", + "build:schema": "node ./scripts/build-dxt-schema.js", "dev": "tsc --watch", "test": "jest", "test:watch": "jest --watch", diff --git a/scripts/build-dxt-schema.js b/scripts/build-dxt-schema.js index fd6604d..9c4efe7 100644 --- a/scripts/build-dxt-schema.js +++ b/scripts/build-dxt-schema.js @@ -1,4 +1,4 @@ -import { DxtManifestSchema, DxtSignatureInfoSchema } from "../src/schemas.ts"; +import { DxtManifestSchema, DxtSignatureInfoSchema } from "../dist/schemas.js"; import * as z from "zod/v4"; import fs from "node:fs/promises"; import path from "node:path"; diff --git a/test/dxtignore.test.ts b/test/dxtignore.test.ts index 6e33a50..c75be76 100644 --- a/test/dxtignore.test.ts +++ b/test/dxtignore.test.ts @@ -73,15 +73,10 @@ temp/`; }); it("should return empty array if file cannot be read", () => { - const content = "*.log"; - fs.writeFileSync(dxtIgnorePath, content); - fs.chmodSync(dxtIgnorePath, 0); // Make file unreadable + fs.mkdirSync(dxtIgnorePath); // Make a dir so readFile fails const patterns = readDxtIgnorePatterns(tempDir); expect(patterns).toEqual([]); - - // Restore permissions for cleanup - fs.chmodSync(dxtIgnorePath, 0o644); }); }); diff --git a/yarn.lock b/yarn.lock index c13b924..fa4ff4c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2359,7 +2359,7 @@ ignore@^5.2.0: ignore@^7.0.5: version "7.0.5" - resolved "https://artifactory.infra.ant.dev:443/artifactory/api/npm/npm-all/ignore/-/ignore-7.0.5.tgz#4cb5f6cd7d4c7ab0365738c7aea888baa6d7efd9" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-7.0.5.tgz#4cb5f6cd7d4c7ab0365738c7aea888baa6d7efd9" integrity sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg== import-fresh@^3.2.1: