From a1c53aeb5eda198a27e956c81f764151de7cb9dc Mon Sep 17 00:00:00 2001 From: David Ibia Date: Mon, 12 Jan 2026 13:45:44 +0100 Subject: [PATCH] Run tests in pre-commit --- .husky/pre-commit | 1 + package-lock.json | 21 +++++++++++++++++++-- package.json | 4 +++- src/test/pepper.test.ts | 29 +++++++++++++++++++++-------- 4 files changed, 44 insertions(+), 11 deletions(-) create mode 100644 .husky/pre-commit diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100644 index 0000000..72c4429 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1 @@ +npm test diff --git a/package-lock.json b/package-lock.json index fefe2f7..b2a09a7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,18 +1,19 @@ { "name": "envsitter", - "version": "0.1.0", + "version": "0.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "envsitter", - "version": "0.1.0", + "version": "0.0.1", "license": "MIT", "bin": { "envsitter": "dist/cli.js" }, "devDependencies": { "@types/node": "^22.10.2", + "husky": "^9.1.7", "typescript": "^5.7.3" } }, @@ -26,6 +27,22 @@ "undici-types": "~6.21.0" } }, + "node_modules/husky": { + "version": "9.1.7", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", + "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", + "dev": true, + "license": "MIT", + "bin": { + "husky": "bin.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, "node_modules/typescript": { "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", diff --git a/package.json b/package.json index 666f27e..7f72e36 100644 --- a/package.json +++ b/package.json @@ -20,10 +20,12 @@ "scripts": { "build": "tsc -p tsconfig.json", "typecheck": "tsc -p tsconfig.json --noEmit", - "test": "npm run build && node scripts/run-tests.mjs" + "test": "npm run build && node scripts/run-tests.mjs", + "prepare": "husky" }, "devDependencies": { "@types/node": "^22.10.2", + "husky": "^9.1.7", "typescript": "^5.7.3" } } diff --git a/src/test/pepper.test.ts b/src/test/pepper.test.ts index 4e95cc6..ef14316 100644 --- a/src/test/pepper.test.ts +++ b/src/test/pepper.test.ts @@ -20,14 +20,27 @@ test('resolvePepper reads from env when set', async () => { }); test('resolvePepper creates a pepper file when missing', async () => { - const dir = await mkdtemp(join(tmpdir(), 'envsitter-')); - const pepperPath = join(dir, 'pepper'); + const prevEnvSitterPepper = process.env.ENVSITTER_PEPPER; + const prevEnvSitterPepperAlt = process.env.ENV_SITTER_PEPPER; + delete process.env.ENVSITTER_PEPPER; + delete process.env.ENV_SITTER_PEPPER; - const pepper = await resolvePepper({ pepperFilePath: pepperPath }); - assert.equal(pepper.source, 'file'); - assert.equal(pepper.pepperFilePath, pepperPath); - assert.ok(pepper.pepperBytes.length >= 16); + try { + const dir = await mkdtemp(join(tmpdir(), 'envsitter-')); + const pepperPath = join(dir, 'pepper'); - const persisted = (await readFile(pepperPath, 'utf8')).trim(); - assert.ok(persisted.length > 0); + const pepper = await resolvePepper({ pepperFilePath: pepperPath }); + assert.equal(pepper.source, 'file'); + assert.equal(pepper.pepperFilePath, pepperPath); + assert.ok(pepper.pepperBytes.length >= 16); + + const persisted = (await readFile(pepperPath, 'utf8')).trim(); + assert.ok(persisted.length > 0); + } finally { + if (prevEnvSitterPepper === undefined) delete process.env.ENVSITTER_PEPPER; + else process.env.ENVSITTER_PEPPER = prevEnvSitterPepper; + + if (prevEnvSitterPepperAlt === undefined) delete process.env.ENV_SITTER_PEPPER; + else process.env.ENV_SITTER_PEPPER = prevEnvSitterPepperAlt; + } });