From 31173299b8c42cfeb49e31dbd6a4a1f431ca46fc Mon Sep 17 00:00:00 2001 From: William Killerud Date: Fri, 15 Nov 2024 14:54:34 +0100 Subject: [PATCH 1/9] fix: update dependencies BREAKING CHANGE: Requires Node >=20.5.0. --- .github/workflows/publish.yml | 2 +- .github/workflows/test.yml | 2 +- package.json | 25 ++++++++++++++----------- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 0a15f421..18a51c77 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -22,7 +22,7 @@ jobs: - uses: actions/setup-node@v4 with: - node-version: 20 + node-version: 22 - run: npm install diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index fcb4327d..6eab2ea7 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -13,7 +13,7 @@ jobs: strategy: matrix: os: [ubuntu-latest, macOS-latest, windows-latest] - node-version: [20] + node-version: [20, 22] runs-on: ${{ matrix.os }} diff --git a/package.json b/package.json index 620ead82..5318b186 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,9 @@ "bin": { "eik": "index.js" }, + "engines": { + "node": ">=20.5.0" + }, "files": [ "CHANGELOG.md", "package.json", @@ -38,39 +41,39 @@ "author": "", "license": "MIT", "dependencies": { - "@eik/common": "4.1.1", + "@eik/common": "5.0.0", "abslog": "2.4.4", "bytes": "3.1.2", "chalk": "5.3.0", - "date-fns": "3.6.0", + "date-fns": "4.1.0", "form-data": "4.0.1", "gzip-size": "7.0.0", "make-dir": "5.0.0", "ora": "8.1.1", "rimraf": "6.0.1", "semver": "7.6.3", - "ssri": "10.0.6", + "ssri": "12.0.0", "tar": "7.4.3", "yargs": "17.7.2", "yargs-parser": "21.1.1" }, "devDependencies": { - "@eik/eslint-config": "1.0.4", + "@eik/eslint-config": "1.0.5", "@eik/prettier-config": "1.0.1", "@eik/semantic-release-config": "1.0.0", - "@eik/service": "2.3.2", - "@eik/sink-memory": "1.1.2", + "@eik/service": "5.0.0", + "@eik/sink-memory": "2.0.0", "@eik/typescript-config": "1.0.0", "@types/yargs": "17.0.33", "cross-env": "7.0.3", - "eslint": "9.11.1", - "fastify": "4.28.1", + "eslint": "9.14.0", + "fastify": "5.1.0", "fs-extra": "11.2.0", - "npm-run-all2": "5.0.2", + "npm-run-all2": "7.0.1", "prettier": "3.3.3", - "semantic-release": "24.0.0", + "semantic-release": "24.2.0", "semantic-release-slack-bot": "4.0.2", "tap": "21.0.1", - "typescript": "5.5.4" + "typescript": "5.6.3" } } From d19ef6f96af48a25788c30b3eb07150e948b0a4e Mon Sep 17 00:00:00 2001 From: William Killerud Date: Fri, 15 Nov 2024 15:32:52 +0100 Subject: [PATCH 2/9] test: await when registering the plugin --- test/alias.test.mjs | 4 ++-- test/integration/alias-legacy.test.mjs | 4 ++-- test/integration/alias.test.mjs | 6 +++--- test/integration/integrity.test.mjs | 4 ++-- test/integration/login.test.mjs | 4 ++-- test/integration/map.test.mjs | 4 ++-- test/integration/meta.test.mjs | 4 ++-- test/integration/package.test.mjs | 4 ++-- test/integration/version.test.mjs | 4 ++-- test/integrity.test.mjs | 4 ++-- test/login.test.mjs | 4 ++-- test/meta.test.mjs | 4 ++-- test/publish-files-definitions.test.mjs | 4 ++-- test/publish.map.test.mjs | 4 ++-- test/publish.package.test.mjs | 4 ++-- test/version.test.mjs | 4 ++-- 16 files changed, 33 insertions(+), 33 deletions(-) diff --git a/test/alias.test.mjs b/test/alias.test.mjs index c443764e..85ccf5b9 100644 --- a/test/alias.test.mjs +++ b/test/alias.test.mjs @@ -14,10 +14,10 @@ const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); beforeEach(async (t) => { - const server = fastify({ logger: false }); + const server = fastify(); const memSink = new Sink(); const service = new EikService({ customSink: memSink }); - server.register(service.api()); + await server.register(service.api()); const address = await server.listen({ host: "127.0.0.1", port: 0, diff --git a/test/integration/alias-legacy.test.mjs b/test/integration/alias-legacy.test.mjs index 90fecd77..ec9ab864 100644 --- a/test/integration/alias-legacy.test.mjs +++ b/test/integration/alias-legacy.test.mjs @@ -22,10 +22,10 @@ function exec(cmd) { } beforeEach(async (t) => { - const server = fastify({ logger: false }); + const server = fastify(); const memSink = new Sink(); const service = new EikService({ customSink: memSink }); - server.register(service.api()); + await server.register(service.api()); const address = await server.listen({ host: "127.0.0.1", port: 0, diff --git a/test/integration/alias.test.mjs b/test/integration/alias.test.mjs index 67766db6..196ed70f 100644 --- a/test/integration/alias.test.mjs +++ b/test/integration/alias.test.mjs @@ -1,6 +1,6 @@ import fastify from "fastify"; import { promises as fs } from "node:fs"; -import os, { type } from "node:os"; +import os from "node:os"; import { exec as execCallback } from "child_process"; import { join, basename } from "node:path"; import { test, beforeEach, afterEach } from "tap"; @@ -22,10 +22,10 @@ function exec(cmd) { } beforeEach(async (t) => { - const server = fastify({ logger: false }); + const server = fastify(); const memSink = new Sink(); const service = new EikService({ customSink: memSink }); - server.register(service.api()); + await server.register(service.api()); const address = await server.listen({ host: "127.0.0.1", port: 0, diff --git a/test/integration/integrity.test.mjs b/test/integration/integrity.test.mjs index cea8d894..f38a7f46 100644 --- a/test/integration/integrity.test.mjs +++ b/test/integration/integrity.test.mjs @@ -23,9 +23,9 @@ function exec(cmd) { beforeEach(async (t) => { const memSink = new Sink(); - const server = fastify({ logger: false }); + const server = fastify(); const service = new EikService({ customSink: memSink }); - server.register(service.api()); + await server.register(service.api()); const address = await server.listen({ host: "127.0.0.1", port: 0, diff --git a/test/integration/login.test.mjs b/test/integration/login.test.mjs index 6610f8fa..e46b41fe 100644 --- a/test/integration/login.test.mjs +++ b/test/integration/login.test.mjs @@ -22,9 +22,9 @@ function exec(cmd) { beforeEach(async (t) => { const memSink = new Sink(); - const server = fastify({ logger: false }); + const server = fastify(); const service = new EikService({ customSink: memSink }); - server.register(service.api()); + await server.register(service.api()); const address = await server.listen({ host: "127.0.0.1", port: 0, diff --git a/test/integration/map.test.mjs b/test/integration/map.test.mjs index dda48d60..d31d2592 100644 --- a/test/integration/map.test.mjs +++ b/test/integration/map.test.mjs @@ -23,9 +23,9 @@ function exec(cmd) { beforeEach(async (t) => { const memSink = new Sink(); - const server = fastify({ logger: false }); + const server = fastify(); const service = new EikService({ customSink: memSink }); - server.register(service.api()); + await server.register(service.api()); const address = await server.listen({ host: "127.0.0.1", port: 0, diff --git a/test/integration/meta.test.mjs b/test/integration/meta.test.mjs index abc72002..ed6335ff 100644 --- a/test/integration/meta.test.mjs +++ b/test/integration/meta.test.mjs @@ -23,9 +23,9 @@ function exec(cmd) { beforeEach(async (t) => { const memSink = new Sink(); - const server = fastify({ logger: false }); + const server = fastify(); const service = new EikService({ customSink: memSink }); - server.register(service.api()); + await server.register(service.api()); const address = await server.listen({ host: "127.0.0.1", port: 0, diff --git a/test/integration/package.test.mjs b/test/integration/package.test.mjs index aed69fda..8bd3dc29 100644 --- a/test/integration/package.test.mjs +++ b/test/integration/package.test.mjs @@ -23,9 +23,9 @@ function exec(cmd) { beforeEach(async (t) => { const memSink = new Sink(); - const server = fastify({ logger: false }); + const server = fastify(); const service = new EikService({ customSink: memSink }); - server.register(service.api()); + await server.register(service.api()); const address = await server.listen({ host: "127.0.0.1", port: 0, diff --git a/test/integration/version.test.mjs b/test/integration/version.test.mjs index 9af4e892..961d7c58 100644 --- a/test/integration/version.test.mjs +++ b/test/integration/version.test.mjs @@ -29,9 +29,9 @@ function exec(cmd, opts = {}) { beforeEach(async (t) => { const memSink = new Sink(); - const server = fastify({ logger: false }); + const server = fastify(); const service = new EikService({ customSink: memSink }); - server.register(service.api()); + await server.register(service.api()); const address = await server.listen({ host: "127.0.0.1", port: 0, diff --git a/test/integrity.test.mjs b/test/integrity.test.mjs index fda02840..079a754e 100644 --- a/test/integrity.test.mjs +++ b/test/integrity.test.mjs @@ -14,10 +14,10 @@ const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); beforeEach(async (t) => { - const server = fastify({ logger: false }); + const server = fastify(); const memSink = new Sink(); const service = new EikService({ customSink: memSink }); - server.register(service.api()); + await server.register(service.api()); const address = await server.listen({ host: "127.0.0.1", port: 0, diff --git a/test/login.test.mjs b/test/login.test.mjs index 67641462..d0a4354e 100644 --- a/test/login.test.mjs +++ b/test/login.test.mjs @@ -15,9 +15,9 @@ const __dirname = dirname(__filename); beforeEach(async (t) => { const memSink = new Sink(); - const server = fastify({ logger: false }); + const server = fastify(); const service = new EikService({ customSink: memSink }); - server.register(service.api()); + await server.register(service.api()); const address = await server.listen({ host: "127.0.0.1", port: 0, diff --git a/test/meta.test.mjs b/test/meta.test.mjs index e336a7b5..780f102f 100644 --- a/test/meta.test.mjs +++ b/test/meta.test.mjs @@ -14,10 +14,10 @@ const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); beforeEach(async (t) => { - const server = fastify({ logger: false }); + const server = fastify(); const memSink = new Sink(); const service = new EikService({ customSink: memSink }); - server.register(service.api()); + await server.register(service.api()); const address = await server.listen({ host: "127.0.0.1", port: 0, diff --git a/test/publish-files-definitions.test.mjs b/test/publish-files-definitions.test.mjs index ebedc0a6..fb05ea6a 100644 --- a/test/publish-files-definitions.test.mjs +++ b/test/publish-files-definitions.test.mjs @@ -26,9 +26,9 @@ const config = (files, server, token, cwd) => ({ beforeEach(async (t) => { const memSink = new Sink(); - const server = fastify({ logger: false }); + const server = fastify(); const service = new EikService({ customSink: memSink }); - server.register(service.api()); + await server.register(service.api()); const address = await server.listen({ host: "127.0.0.1", port: 0, diff --git a/test/publish.map.test.mjs b/test/publish.map.test.mjs index 2818b78f..d952dfb5 100644 --- a/test/publish.map.test.mjs +++ b/test/publish.map.test.mjs @@ -15,9 +15,9 @@ const __dirname = dirname(__filename); beforeEach(async (t) => { const memSink = new Sink(); - const server = fastify({ logger: false }); + const server = fastify(); const service = new EikService({ customSink: memSink }); - server.register(service.api()); + await server.register(service.api()); const address = await server.listen({ host: "127.0.0.1", port: 0, diff --git a/test/publish.package.test.mjs b/test/publish.package.test.mjs index 91bdd974..84dfafce 100644 --- a/test/publish.package.test.mjs +++ b/test/publish.package.test.mjs @@ -15,9 +15,9 @@ const __dirname = dirname(__filename); beforeEach(async (t) => { const memSink = new Sink(); - const server = fastify({ logger: false }); + const server = fastify(); const service = new EikService({ customSink: memSink }); - server.register(service.api()); + await server.register(service.api()); const address = await server.listen({ host: "127.0.0.1", port: 0, diff --git a/test/version.test.mjs b/test/version.test.mjs index 1b078564..0e831136 100644 --- a/test/version.test.mjs +++ b/test/version.test.mjs @@ -14,9 +14,9 @@ const __dirname = dirname(__filename); beforeEach(async (t) => { const memSink = new Sink(); - const server = fastify({ logger: false }); + const server = fastify(); const service = new EikService({ customSink: memSink }); - server.register(service.api()); + await server.register(service.api()); const address = await server.listen({ host: "127.0.0.1", port: 0, From b6303f98d560d291c669390dbe224afdbe82b43f Mon Sep 17 00:00:00 2001 From: William Killerud Date: Fri, 15 Nov 2024 15:36:11 +0100 Subject: [PATCH 3/9] test: fix deprecation warning --- test/alias.test.mjs | 2 +- test/integration/alias-legacy.test.mjs | 2 +- test/integration/alias.test.mjs | 2 +- test/integration/integrity.test.mjs | 2 +- test/integration/login.test.mjs | 2 +- test/integration/map.test.mjs | 2 +- test/integration/meta.test.mjs | 2 +- test/integration/package.test.mjs | 2 +- test/integration/version.test.mjs | 2 +- test/integrity.test.mjs | 2 +- test/login.test.mjs | 2 +- test/meta.test.mjs | 2 +- test/publish-files-definitions.test.mjs | 2 +- test/publish.map.test.mjs | 2 +- test/publish.package.test.mjs | 2 +- test/version.test.mjs | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/test/alias.test.mjs b/test/alias.test.mjs index 85ccf5b9..9c8a070e 100644 --- a/test/alias.test.mjs +++ b/test/alias.test.mjs @@ -16,7 +16,7 @@ const __dirname = dirname(__filename); beforeEach(async (t) => { const server = fastify(); const memSink = new Sink(); - const service = new EikService({ customSink: memSink }); + const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ host: "127.0.0.1", diff --git a/test/integration/alias-legacy.test.mjs b/test/integration/alias-legacy.test.mjs index ec9ab864..0804a20a 100644 --- a/test/integration/alias-legacy.test.mjs +++ b/test/integration/alias-legacy.test.mjs @@ -24,7 +24,7 @@ function exec(cmd) { beforeEach(async (t) => { const server = fastify(); const memSink = new Sink(); - const service = new EikService({ customSink: memSink }); + const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ host: "127.0.0.1", diff --git a/test/integration/alias.test.mjs b/test/integration/alias.test.mjs index 196ed70f..21d0c314 100644 --- a/test/integration/alias.test.mjs +++ b/test/integration/alias.test.mjs @@ -24,7 +24,7 @@ function exec(cmd) { beforeEach(async (t) => { const server = fastify(); const memSink = new Sink(); - const service = new EikService({ customSink: memSink }); + const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ host: "127.0.0.1", diff --git a/test/integration/integrity.test.mjs b/test/integration/integrity.test.mjs index f38a7f46..dd2c4519 100644 --- a/test/integration/integrity.test.mjs +++ b/test/integration/integrity.test.mjs @@ -24,7 +24,7 @@ function exec(cmd) { beforeEach(async (t) => { const memSink = new Sink(); const server = fastify(); - const service = new EikService({ customSink: memSink }); + const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ host: "127.0.0.1", diff --git a/test/integration/login.test.mjs b/test/integration/login.test.mjs index e46b41fe..1fbbd5fe 100644 --- a/test/integration/login.test.mjs +++ b/test/integration/login.test.mjs @@ -23,7 +23,7 @@ function exec(cmd) { beforeEach(async (t) => { const memSink = new Sink(); const server = fastify(); - const service = new EikService({ customSink: memSink }); + const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ host: "127.0.0.1", diff --git a/test/integration/map.test.mjs b/test/integration/map.test.mjs index d31d2592..0bb9e0e0 100644 --- a/test/integration/map.test.mjs +++ b/test/integration/map.test.mjs @@ -24,7 +24,7 @@ function exec(cmd) { beforeEach(async (t) => { const memSink = new Sink(); const server = fastify(); - const service = new EikService({ customSink: memSink }); + const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ host: "127.0.0.1", diff --git a/test/integration/meta.test.mjs b/test/integration/meta.test.mjs index ed6335ff..17840751 100644 --- a/test/integration/meta.test.mjs +++ b/test/integration/meta.test.mjs @@ -24,7 +24,7 @@ function exec(cmd) { beforeEach(async (t) => { const memSink = new Sink(); const server = fastify(); - const service = new EikService({ customSink: memSink }); + const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ host: "127.0.0.1", diff --git a/test/integration/package.test.mjs b/test/integration/package.test.mjs index 8bd3dc29..8f93ef10 100644 --- a/test/integration/package.test.mjs +++ b/test/integration/package.test.mjs @@ -24,7 +24,7 @@ function exec(cmd) { beforeEach(async (t) => { const memSink = new Sink(); const server = fastify(); - const service = new EikService({ customSink: memSink }); + const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ host: "127.0.0.1", diff --git a/test/integration/version.test.mjs b/test/integration/version.test.mjs index 961d7c58..34440c7e 100644 --- a/test/integration/version.test.mjs +++ b/test/integration/version.test.mjs @@ -30,7 +30,7 @@ function exec(cmd, opts = {}) { beforeEach(async (t) => { const memSink = new Sink(); const server = fastify(); - const service = new EikService({ customSink: memSink }); + const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ host: "127.0.0.1", diff --git a/test/integrity.test.mjs b/test/integrity.test.mjs index 079a754e..52950e96 100644 --- a/test/integrity.test.mjs +++ b/test/integrity.test.mjs @@ -16,7 +16,7 @@ const __dirname = dirname(__filename); beforeEach(async (t) => { const server = fastify(); const memSink = new Sink(); - const service = new EikService({ customSink: memSink }); + const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ host: "127.0.0.1", diff --git a/test/login.test.mjs b/test/login.test.mjs index d0a4354e..75a13644 100644 --- a/test/login.test.mjs +++ b/test/login.test.mjs @@ -16,7 +16,7 @@ const __dirname = dirname(__filename); beforeEach(async (t) => { const memSink = new Sink(); const server = fastify(); - const service = new EikService({ customSink: memSink }); + const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ host: "127.0.0.1", diff --git a/test/meta.test.mjs b/test/meta.test.mjs index 780f102f..1973f87e 100644 --- a/test/meta.test.mjs +++ b/test/meta.test.mjs @@ -16,7 +16,7 @@ const __dirname = dirname(__filename); beforeEach(async (t) => { const server = fastify(); const memSink = new Sink(); - const service = new EikService({ customSink: memSink }); + const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ host: "127.0.0.1", diff --git a/test/publish-files-definitions.test.mjs b/test/publish-files-definitions.test.mjs index fb05ea6a..fb13e74c 100644 --- a/test/publish-files-definitions.test.mjs +++ b/test/publish-files-definitions.test.mjs @@ -27,7 +27,7 @@ const config = (files, server, token, cwd) => ({ beforeEach(async (t) => { const memSink = new Sink(); const server = fastify(); - const service = new EikService({ customSink: memSink }); + const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ host: "127.0.0.1", diff --git a/test/publish.map.test.mjs b/test/publish.map.test.mjs index d952dfb5..5ba36fda 100644 --- a/test/publish.map.test.mjs +++ b/test/publish.map.test.mjs @@ -16,7 +16,7 @@ const __dirname = dirname(__filename); beforeEach(async (t) => { const memSink = new Sink(); const server = fastify(); - const service = new EikService({ customSink: memSink }); + const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ host: "127.0.0.1", diff --git a/test/publish.package.test.mjs b/test/publish.package.test.mjs index 84dfafce..c52bd094 100644 --- a/test/publish.package.test.mjs +++ b/test/publish.package.test.mjs @@ -16,7 +16,7 @@ const __dirname = dirname(__filename); beforeEach(async (t) => { const memSink = new Sink(); const server = fastify(); - const service = new EikService({ customSink: memSink }); + const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ host: "127.0.0.1", diff --git a/test/version.test.mjs b/test/version.test.mjs index 0e831136..f0f6c923 100644 --- a/test/version.test.mjs +++ b/test/version.test.mjs @@ -15,7 +15,7 @@ const __dirname = dirname(__filename); beforeEach(async (t) => { const memSink = new Sink(); const server = fastify(); - const service = new EikService({ customSink: memSink }); + const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ host: "127.0.0.1", From d582ce1ffeb8f94f545bbde38c4130c97f4858d1 Mon Sep 17 00:00:00 2001 From: William Killerud Date: Fri, 15 Nov 2024 15:50:13 +0100 Subject: [PATCH 4/9] test: await async tests --- test/alias.test.mjs | 2 +- test/integration/alias-legacy.test.mjs | 12 ++++++------ test/integration/alias.test.mjs | 12 ++++++------ test/integration/integrity.test.mjs | 2 +- test/integration/login.test.mjs | 2 +- test/integration/map.test.mjs | 2 +- test/integration/meta.test.mjs | 2 +- test/integration/package.test.mjs | 2 +- test/integration/version.test.mjs | 2 +- test/integrity.test.mjs | 2 +- test/login.test.mjs | 2 +- test/meta.test.mjs | 2 +- test/publish-files-definitions.test.mjs | 2 +- test/publish.map.test.mjs | 2 +- test/publish.package.test.mjs | 2 +- test/utils.test.mjs | 16 ++++++++-------- test/version.test.mjs | 2 +- 17 files changed, 34 insertions(+), 34 deletions(-) diff --git a/test/alias.test.mjs b/test/alias.test.mjs index 9c8a070e..7d3cb801 100644 --- a/test/alias.test.mjs +++ b/test/alias.test.mjs @@ -14,7 +14,7 @@ const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); beforeEach(async (t) => { - const server = fastify(); + const server = fastify({ ignoreTrailingSlash: true }); const memSink = new Sink(); const service = new EikService({ sink: memSink }); await server.register(service.api()); diff --git a/test/integration/alias-legacy.test.mjs b/test/integration/alias-legacy.test.mjs index 0804a20a..06012d1c 100644 --- a/test/integration/alias-legacy.test.mjs +++ b/test/integration/alias-legacy.test.mjs @@ -22,7 +22,7 @@ function exec(cmd) { } beforeEach(async (t) => { - const server = fastify(); + const server = fastify({ ignoreTrailingSlash: true }); const memSink = new Sink(); const service = new EikService({ sink: memSink }); await server.register(service.api()); @@ -79,7 +79,7 @@ afterEach(async (t) => { await t.context.server.close(); }); -test("eik package-alias ", async (t) => { +await test("eik package-alias ", async (t) => { const { address, token, folder: cwd } = t.context; const eik = join(__dirname, "..", "..", "index.js"); @@ -121,7 +121,7 @@ test("eik package-alias ", async (t) => { t.equal(res.ok, true); }); -test("eik npm-alias --token --server : no eik.json or .eikrc", async (t) => { +await test("eik npm-alias --token --server : no eik.json or .eikrc", async (t) => { const eik = join(__dirname, "..", "..", "index.js"); const cmd = `node ${eik} npm-alias scroll-into-view-if-needed 2.2.24 2 --token ${t.context.token} @@ -144,7 +144,7 @@ test("eik npm-alias --token --server : no eik.json or . t.end(); }); -test("eik npm-alias : publish details provided by eik.json file", async (t) => { +await test("eik npm-alias : publish details provided by eik.json file", async (t) => { const assets = { name: "test-app", version: "1.0.0", @@ -177,7 +177,7 @@ test("eik npm-alias : publish details provided by eik.j t.end(); }); -test("eik map-alias --token --server : no eik.json or .eikrc", async (t) => { +await test("eik map-alias --token --server : no eik.json or .eikrc", async (t) => { const eik = join(__dirname, "..", "..", "index.js"); const cmd = `node ${eik} map-alias test-map 1.0.0 1 --token ${t.context.token} @@ -198,7 +198,7 @@ test("eik map-alias --token --server : no eik.json or . t.end(); }); -test("eik map-alias : publish details provided by eik.json file", async (t) => { +await test("eik map-alias : publish details provided by eik.json file", async (t) => { const assets = { name: "test-app", version: "1.0.0", diff --git a/test/integration/alias.test.mjs b/test/integration/alias.test.mjs index 21d0c314..f43385be 100644 --- a/test/integration/alias.test.mjs +++ b/test/integration/alias.test.mjs @@ -22,7 +22,7 @@ function exec(cmd) { } beforeEach(async (t) => { - const server = fastify(); + const server = fastify({ ignoreTrailingSlash: true }); const memSink = new Sink(); const service = new EikService({ sink: memSink }); await server.register(service.api()); @@ -79,7 +79,7 @@ afterEach(async (t) => { await t.context.server.close(); }); -test("packages: eik alias ", async (t) => { +await test("packages: eik alias ", async (t) => { const { address, token, folder: cwd } = t.context; const eik = join(__dirname, "..", "..", "index.js"); @@ -118,7 +118,7 @@ test("packages: eik alias ", async (t) => { t.match(out.stdout, "NEW"); }); -test("npm: eik alias --token --server : no eik.json or .eikrc", async (t) => { +await test("npm: eik alias --token --server : no eik.json or .eikrc", async (t) => { const eik = join(__dirname, "..", "..", "index.js"); const cmd = `node ${eik} npm-alias scroll-into-view-if-needed 2.2.24 2 --token ${t.context.token} @@ -142,7 +142,7 @@ test("npm: eik alias --token --server : no eik.json or t.end(); }); -test("npm: eik alias : publish details provided by eik.json file", async (t) => { +await test("npm: eik alias : publish details provided by eik.json file", async (t) => { const assets = { name: "test-app", type: "npm", @@ -176,7 +176,7 @@ test("npm: eik alias : publish details provided by eik. t.end(); }); -test("map: eik alias --token --server : no eik.json or .eikrc", async (t) => { +await test("map: eik alias --token --server : no eik.json or .eikrc", async (t) => { const eik = join(__dirname, "..", "..", "index.js"); const cmd = `node ${eik} map-alias test-map 1.0.0 1 --token ${t.context.token} @@ -199,7 +199,7 @@ test("map: eik alias --token --server : no eik.json or t.end(); }); -test("map: eik alias : publish details provided by eik.json file", async (t) => { +await test("map: eik alias : publish details provided by eik.json file", async (t) => { const assets = { name: "test-app", type: "map", diff --git a/test/integration/integrity.test.mjs b/test/integration/integrity.test.mjs index dd2c4519..a79f7e20 100644 --- a/test/integration/integrity.test.mjs +++ b/test/integration/integrity.test.mjs @@ -23,7 +23,7 @@ function exec(cmd) { beforeEach(async (t) => { const memSink = new Sink(); - const server = fastify(); + const server = fastify({ ignoreTrailingSlash: true }); const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ diff --git a/test/integration/login.test.mjs b/test/integration/login.test.mjs index 1fbbd5fe..4208d238 100644 --- a/test/integration/login.test.mjs +++ b/test/integration/login.test.mjs @@ -22,7 +22,7 @@ function exec(cmd) { beforeEach(async (t) => { const memSink = new Sink(); - const server = fastify(); + const server = fastify({ ignoreTrailingSlash: true }); const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ diff --git a/test/integration/map.test.mjs b/test/integration/map.test.mjs index 0bb9e0e0..c43debfa 100644 --- a/test/integration/map.test.mjs +++ b/test/integration/map.test.mjs @@ -23,7 +23,7 @@ function exec(cmd) { beforeEach(async (t) => { const memSink = new Sink(); - const server = fastify(); + const server = fastify({ ignoreTrailingSlash: true }); const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ diff --git a/test/integration/meta.test.mjs b/test/integration/meta.test.mjs index 17840751..f0039529 100644 --- a/test/integration/meta.test.mjs +++ b/test/integration/meta.test.mjs @@ -23,7 +23,7 @@ function exec(cmd) { beforeEach(async (t) => { const memSink = new Sink(); - const server = fastify(); + const server = fastify({ ignoreTrailingSlash: true }); const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ diff --git a/test/integration/package.test.mjs b/test/integration/package.test.mjs index 8f93ef10..36159707 100644 --- a/test/integration/package.test.mjs +++ b/test/integration/package.test.mjs @@ -23,7 +23,7 @@ function exec(cmd) { beforeEach(async (t) => { const memSink = new Sink(); - const server = fastify(); + const server = fastify({ ignoreTrailingSlash: true }); const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ diff --git a/test/integration/version.test.mjs b/test/integration/version.test.mjs index 34440c7e..e09763ce 100644 --- a/test/integration/version.test.mjs +++ b/test/integration/version.test.mjs @@ -29,7 +29,7 @@ function exec(cmd, opts = {}) { beforeEach(async (t) => { const memSink = new Sink(); - const server = fastify(); + const server = fastify({ ignoreTrailingSlash: true }); const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ diff --git a/test/integrity.test.mjs b/test/integrity.test.mjs index 52950e96..e2621f80 100644 --- a/test/integrity.test.mjs +++ b/test/integrity.test.mjs @@ -14,7 +14,7 @@ const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); beforeEach(async (t) => { - const server = fastify(); + const server = fastify({ ignoreTrailingSlash: true }); const memSink = new Sink(); const service = new EikService({ sink: memSink }); await server.register(service.api()); diff --git a/test/login.test.mjs b/test/login.test.mjs index 75a13644..dfcaaedf 100644 --- a/test/login.test.mjs +++ b/test/login.test.mjs @@ -15,7 +15,7 @@ const __dirname = dirname(__filename); beforeEach(async (t) => { const memSink = new Sink(); - const server = fastify(); + const server = fastify({ ignoreTrailingSlash: true }); const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ diff --git a/test/meta.test.mjs b/test/meta.test.mjs index 1973f87e..9044622a 100644 --- a/test/meta.test.mjs +++ b/test/meta.test.mjs @@ -14,7 +14,7 @@ const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); beforeEach(async (t) => { - const server = fastify(); + const server = fastify({ ignoreTrailingSlash: true }); const memSink = new Sink(); const service = new EikService({ sink: memSink }); await server.register(service.api()); diff --git a/test/publish-files-definitions.test.mjs b/test/publish-files-definitions.test.mjs index fb13e74c..73e79ed0 100644 --- a/test/publish-files-definitions.test.mjs +++ b/test/publish-files-definitions.test.mjs @@ -26,7 +26,7 @@ const config = (files, server, token, cwd) => ({ beforeEach(async (t) => { const memSink = new Sink(); - const server = fastify(); + const server = fastify({ ignoreTrailingSlash: true }); const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ diff --git a/test/publish.map.test.mjs b/test/publish.map.test.mjs index 5ba36fda..5cf3771f 100644 --- a/test/publish.map.test.mjs +++ b/test/publish.map.test.mjs @@ -15,7 +15,7 @@ const __dirname = dirname(__filename); beforeEach(async (t) => { const memSink = new Sink(); - const server = fastify(); + const server = fastify({ ignoreTrailingSlash: true }); const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ diff --git a/test/publish.package.test.mjs b/test/publish.package.test.mjs index c52bd094..0246bc2d 100644 --- a/test/publish.package.test.mjs +++ b/test/publish.package.test.mjs @@ -15,7 +15,7 @@ const __dirname = dirname(__filename); beforeEach(async (t) => { const memSink = new Sink(); - const server = fastify(); + const server = fastify({ ignoreTrailingSlash: true }); const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ diff --git a/test/utils.test.mjs b/test/utils.test.mjs index 8b8d6e72..d68976a9 100644 --- a/test/utils.test.mjs +++ b/test/utils.test.mjs @@ -73,7 +73,7 @@ test("compare hashes - false", async (t) => { }); test("fetch latest version for a given published bundle", async (t) => { - const server = fastify(); + const server = fastify({ ignoreTrailingSlash: true }); server.get("/pkg/foo", async () => ({ versions: [ [1, { version: "1.3.2" }], @@ -93,7 +93,7 @@ test("fetch latest version for a given published bundle", async (t) => { }); test("fetch latest version, filtered by major, for a given published bundle", async (t) => { - const server = fastify(); + const server = fastify({ ignoreTrailingSlash: true }); server.get("/pkg/foo", async () => ({ versions: [ [1, { version: "1.3.2" }], @@ -113,7 +113,7 @@ test("fetch latest version, filtered by major, for a given published bundle", as }); test("fetch latest version for a given published bundle, non existant bundle on server", async (t) => { - const server = fastify(); + const server = fastify({ ignoreTrailingSlash: true }); const address = await server.listen({ host: "127.0.0.1", port: 0, @@ -133,7 +133,7 @@ test("fetch latest version for a given published bundle, non existant bundle on }); test("fetch latest version, filtered by major, for a given published bundle", async (t) => { - const server = fastify(); + const server = fastify({ ignoreTrailingSlash: true }); server.get("/pkg/foo", async () => ""); const address = await server.listen({ host: "127.0.0.1", @@ -154,7 +154,7 @@ test("fetch latest version, filtered by major, for a given published bundle", as }); test("fetch latest version, invalid versions returned by server", async (t) => { - const server = fastify(); + const server = fastify({ ignoreTrailingSlash: true }); server.get("/pkg/foo", async () => ({ versions: 1 })); const address = await server.listen({ host: "127.0.0.1", @@ -170,7 +170,7 @@ test("fetch latest version, invalid versions returned by server", async (t) => { }); test("fetch latest version, invalid versions keys returned by server", async (t) => { - const server = fastify(); + const server = fastify({ ignoreTrailingSlash: true }); server.get("/pkg/foo", async () => ({ versions: [ ["not a number", 1], @@ -191,7 +191,7 @@ test("fetch latest version, invalid versions keys returned by server", async (t) }); test("fetch latest version, no bundles yet published", async (t) => { - const server = fastify(); + const server = fastify({ ignoreTrailingSlash: true }); server.get("/pkg/foo", async () => ({ latest: {}, versions: [], @@ -209,7 +209,7 @@ test("fetch latest version, no bundles yet published", async (t) => { }); test("fetch remote hash for a given version", async (t) => { - const server = fastify(); + const server = fastify({ ignoreTrailingSlash: true }); server.get("/pkg/foo/1.0.0", async () => ({ integrity: "sha512-36Ug1lJ/p/H0n5+or1HDLrqLaI3nvB7j2f7PC9RIzWd3T5GE4CfOuClEZRiNsf/F4BjT5FnS9mz0EzeDHpu3uw==", diff --git a/test/version.test.mjs b/test/version.test.mjs index f0f6c923..276df0d1 100644 --- a/test/version.test.mjs +++ b/test/version.test.mjs @@ -14,7 +14,7 @@ const __dirname = dirname(__filename); beforeEach(async (t) => { const memSink = new Sink(); - const server = fastify(); + const server = fastify({ ignoreTrailingSlash: true }); const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ From dc0910b78904b87f38735fbd9c5ff29b0571af1a Mon Sep 17 00:00:00 2001 From: William Killerud Date: Fri, 15 Nov 2024 15:50:32 +0100 Subject: [PATCH 5/9] chore: add types for ssri --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 5318b186..e4caade4 100644 --- a/package.json +++ b/package.json @@ -64,6 +64,7 @@ "@eik/service": "5.0.0", "@eik/sink-memory": "2.0.0", "@eik/typescript-config": "1.0.0", + "@types/ssri": "7.1.5", "@types/yargs": "17.0.33", "cross-env": "7.0.3", "eslint": "9.14.0", From 5a88baeda37f19d008fd3f7288a11b4d7832465a Mon Sep 17 00:00:00 2001 From: William Killerud Date: Mon, 18 Nov 2024 10:35:21 +0100 Subject: [PATCH 6/9] test: run tests in sequence --- package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index e4caade4..76192f86 100644 --- a/package.json +++ b/package.json @@ -24,10 +24,10 @@ ], "scripts": { "clean": "rimraf .tap node_modules types", - "test": "cross-env HTTP_PORT=0 LOG_LEVEL=fatal tap --timeout 60 --disable-coverage", - "test:integration": "cross-env HTTP_PORT=0 LOG_LEVEL=fatal tap --timeout 60 --disable-coverage test/integration/**/*.test.mjs", - "test:unit": "cross-env HTTP_PORT=0 LOG_LEVEL=fatal tap --timeout 60 --disable-coverage test/*.test.mjs", - "test:tasks": "cross-env HTTP_PORT=0 LOG_LEVEL=fatal tap --timeout 60 --disable-coverage test/tasks/*.test.mjs", + "test": "cross-env HTTP_PORT=0 LOG_LEVEL=fatal tap --timeout 60 --jobs 1 --disable-coverage", + "test:integration": "cross-env HTTP_PORT=0 LOG_LEVEL=fatal tap --timeout 60 --jobs 1 --disable-coverage test/integration/**/*.test.mjs", + "test:unit": "cross-env HTTP_PORT=0 LOG_LEVEL=fatal tap --timeout 60 --jobs 1 --disable-coverage test/*.test.mjs", + "test:tasks": "cross-env HTTP_PORT=0 LOG_LEVEL=fatal tap --timeout 60 --jobs 1 --disable-coverage test/tasks/*.test.mjs", "lint": "eslint .", "lint:fix": "eslint --fix .", "format:check": "prettier -c .", From 185fba5dca9c9c5d0f07aec0f10725eefde8ff8b Mon Sep 17 00:00:00 2001 From: William Killerud Date: Mon, 18 Nov 2024 11:02:09 +0100 Subject: [PATCH 7/9] test: increase timeout I've not tracked down yet. Based on timestamps in logs I don't think there's a performance regression in the Eik service itself. Time from "server startup" logs to test complete is in the ballpark of two seconds. The largest test suite has seven tests (~14 seconds). --- package.json | 8 ++++---- test/integration/alias-legacy.test.mjs | 14 ++++++-------- test/integration/alias.test.mjs | 14 ++++++-------- test/integration/package.test.mjs | 4 +--- 4 files changed, 17 insertions(+), 23 deletions(-) diff --git a/package.json b/package.json index 76192f86..f3359a6d 100644 --- a/package.json +++ b/package.json @@ -24,10 +24,10 @@ ], "scripts": { "clean": "rimraf .tap node_modules types", - "test": "cross-env HTTP_PORT=0 LOG_LEVEL=fatal tap --timeout 60 --jobs 1 --disable-coverage", - "test:integration": "cross-env HTTP_PORT=0 LOG_LEVEL=fatal tap --timeout 60 --jobs 1 --disable-coverage test/integration/**/*.test.mjs", - "test:unit": "cross-env HTTP_PORT=0 LOG_LEVEL=fatal tap --timeout 60 --jobs 1 --disable-coverage test/*.test.mjs", - "test:tasks": "cross-env HTTP_PORT=0 LOG_LEVEL=fatal tap --timeout 60 --jobs 1 --disable-coverage test/tasks/*.test.mjs", + "test": "cross-env HTTP_PORT=0 LOG_LEVEL=fatal tap --timeout 240 --disable-coverage", + "test:integration": "cross-env HTTP_PORT=0 LOG_LEVEL=fatal tap --timeout 240 --disable-coverage test/integration/**/*.test.mjs", + "test:unit": "cross-env HTTP_PORT=0 LOG_LEVEL=fatal tap --timeout 240 --disable-coverage test/*.test.mjs", + "test:tasks": "cross-env HTTP_PORT=0 LOG_LEVEL=fatal tap --timeout 240 --disable-coverage test/tasks/*.test.mjs", "lint": "eslint .", "lint:fix": "eslint --fix .", "format:check": "prettier -c .", diff --git a/test/integration/alias-legacy.test.mjs b/test/integration/alias-legacy.test.mjs index 06012d1c..bc2a70c2 100644 --- a/test/integration/alias-legacy.test.mjs +++ b/test/integration/alias-legacy.test.mjs @@ -75,11 +75,9 @@ beforeEach(async (t) => { t.context.token = token; }); -afterEach(async (t) => { - await t.context.server.close(); -}); +afterEach((t) => t.context.server.close()); -await test("eik package-alias ", async (t) => { +test("eik package-alias ", async (t) => { const { address, token, folder: cwd } = t.context; const eik = join(__dirname, "..", "..", "index.js"); @@ -121,7 +119,7 @@ await test("eik package-alias ", async (t) => { t.equal(res.ok, true); }); -await test("eik npm-alias --token --server : no eik.json or .eikrc", async (t) => { +test("eik npm-alias --token --server : no eik.json or .eikrc", async (t) => { const eik = join(__dirname, "..", "..", "index.js"); const cmd = `node ${eik} npm-alias scroll-into-view-if-needed 2.2.24 2 --token ${t.context.token} @@ -144,7 +142,7 @@ await test("eik npm-alias --token --server : no eik.jso t.end(); }); -await test("eik npm-alias : publish details provided by eik.json file", async (t) => { +test("eik npm-alias : publish details provided by eik.json file", async (t) => { const assets = { name: "test-app", version: "1.0.0", @@ -177,7 +175,7 @@ await test("eik npm-alias : publish details provided by t.end(); }); -await test("eik map-alias --token --server : no eik.json or .eikrc", async (t) => { +test("eik map-alias --token --server : no eik.json or .eikrc", async (t) => { const eik = join(__dirname, "..", "..", "index.js"); const cmd = `node ${eik} map-alias test-map 1.0.0 1 --token ${t.context.token} @@ -198,7 +196,7 @@ await test("eik map-alias --token --server : no eik.jso t.end(); }); -await test("eik map-alias : publish details provided by eik.json file", async (t) => { +test("eik map-alias : publish details provided by eik.json file", async (t) => { const assets = { name: "test-app", version: "1.0.0", diff --git a/test/integration/alias.test.mjs b/test/integration/alias.test.mjs index f43385be..aeb97a90 100644 --- a/test/integration/alias.test.mjs +++ b/test/integration/alias.test.mjs @@ -75,11 +75,9 @@ beforeEach(async (t) => { t.context.token = token; }); -afterEach(async (t) => { - await t.context.server.close(); -}); +afterEach((t) => t.context.server.close()); -await test("packages: eik alias ", async (t) => { +test("packages: eik alias ", async (t) => { const { address, token, folder: cwd } = t.context; const eik = join(__dirname, "..", "..", "index.js"); @@ -118,7 +116,7 @@ await test("packages: eik alias ", async (t) => { t.match(out.stdout, "NEW"); }); -await test("npm: eik alias --token --server : no eik.json or .eikrc", async (t) => { +test("npm: eik alias --token --server : no eik.json or .eikrc", async (t) => { const eik = join(__dirname, "..", "..", "index.js"); const cmd = `node ${eik} npm-alias scroll-into-view-if-needed 2.2.24 2 --token ${t.context.token} @@ -142,7 +140,7 @@ await test("npm: eik alias --token --server : no eik.js t.end(); }); -await test("npm: eik alias : publish details provided by eik.json file", async (t) => { +test("npm: eik alias : publish details provided by eik.json file", async (t) => { const assets = { name: "test-app", type: "npm", @@ -176,7 +174,7 @@ await test("npm: eik alias : publish details provided b t.end(); }); -await test("map: eik alias --token --server : no eik.json or .eikrc", async (t) => { +test("map: eik alias --token --server : no eik.json or .eikrc", async (t) => { const eik = join(__dirname, "..", "..", "index.js"); const cmd = `node ${eik} map-alias test-map 1.0.0 1 --token ${t.context.token} @@ -199,7 +197,7 @@ await test("map: eik alias --token --server : no eik.js t.end(); }); -await test("map: eik alias : publish details provided by eik.json file", async (t) => { +test("map: eik alias : publish details provided by eik.json file", async (t) => { const assets = { name: "test-app", type: "map", diff --git a/test/integration/package.test.mjs b/test/integration/package.test.mjs index 36159707..aa99d14a 100644 --- a/test/integration/package.test.mjs +++ b/test/integration/package.test.mjs @@ -43,9 +43,7 @@ beforeEach(async (t) => { t.context.token = token; }); -afterEach(async (t) => { - await t.context.server.close(); -}); +afterEach((t) => t.context.server.close()); test("eik package : package, details provided by eik.json file", async (t) => { const assets = { From 484480c1464a4fabf14201cbb04d5791202c728c Mon Sep 17 00:00:00 2001 From: William Killerud Date: Mon, 18 Nov 2024 11:08:14 +0100 Subject: [PATCH 8/9] test: configure fastify to force-close connections on close --- test/alias.test.mjs | 5 +++- test/integration/alias-legacy.test.mjs | 5 +++- test/integration/alias.test.mjs | 5 +++- test/integration/integrity.test.mjs | 5 +++- test/integration/login.test.mjs | 5 +++- test/integration/map.test.mjs | 5 +++- test/integration/meta.test.mjs | 5 +++- test/integration/package.test.mjs | 5 +++- test/integration/version.test.mjs | 5 +++- test/integrity.test.mjs | 5 +++- test/login.test.mjs | 5 +++- test/meta.test.mjs | 5 +++- test/publish-files-definitions.test.mjs | 5 +++- test/publish.map.test.mjs | 5 +++- test/publish.package.test.mjs | 5 +++- test/utils.test.mjs | 40 ++++++++++++++++++++----- test/version.test.mjs | 5 +++- 17 files changed, 96 insertions(+), 24 deletions(-) diff --git a/test/alias.test.mjs b/test/alias.test.mjs index 7d3cb801..ed476c33 100644 --- a/test/alias.test.mjs +++ b/test/alias.test.mjs @@ -14,7 +14,10 @@ const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); beforeEach(async (t) => { - const server = fastify({ ignoreTrailingSlash: true }); + const server = fastify({ + ignoreTrailingSlash: true, + forceCloseConnections: true, + }); const memSink = new Sink(); const service = new EikService({ sink: memSink }); await server.register(service.api()); diff --git a/test/integration/alias-legacy.test.mjs b/test/integration/alias-legacy.test.mjs index bc2a70c2..16e2b8a1 100644 --- a/test/integration/alias-legacy.test.mjs +++ b/test/integration/alias-legacy.test.mjs @@ -22,7 +22,10 @@ function exec(cmd) { } beforeEach(async (t) => { - const server = fastify({ ignoreTrailingSlash: true }); + const server = fastify({ + ignoreTrailingSlash: true, + forceCloseConnections: true, + }); const memSink = new Sink(); const service = new EikService({ sink: memSink }); await server.register(service.api()); diff --git a/test/integration/alias.test.mjs b/test/integration/alias.test.mjs index aeb97a90..f3bceed2 100644 --- a/test/integration/alias.test.mjs +++ b/test/integration/alias.test.mjs @@ -22,7 +22,10 @@ function exec(cmd) { } beforeEach(async (t) => { - const server = fastify({ ignoreTrailingSlash: true }); + const server = fastify({ + ignoreTrailingSlash: true, + forceCloseConnections: true, + }); const memSink = new Sink(); const service = new EikService({ sink: memSink }); await server.register(service.api()); diff --git a/test/integration/integrity.test.mjs b/test/integration/integrity.test.mjs index a79f7e20..70970069 100644 --- a/test/integration/integrity.test.mjs +++ b/test/integration/integrity.test.mjs @@ -23,7 +23,10 @@ function exec(cmd) { beforeEach(async (t) => { const memSink = new Sink(); - const server = fastify({ ignoreTrailingSlash: true }); + const server = fastify({ + ignoreTrailingSlash: true, + forceCloseConnections: true, + }); const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ diff --git a/test/integration/login.test.mjs b/test/integration/login.test.mjs index 4208d238..fb7e59c0 100644 --- a/test/integration/login.test.mjs +++ b/test/integration/login.test.mjs @@ -22,7 +22,10 @@ function exec(cmd) { beforeEach(async (t) => { const memSink = new Sink(); - const server = fastify({ ignoreTrailingSlash: true }); + const server = fastify({ + ignoreTrailingSlash: true, + forceCloseConnections: true, + }); const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ diff --git a/test/integration/map.test.mjs b/test/integration/map.test.mjs index c43debfa..c47d5b3c 100644 --- a/test/integration/map.test.mjs +++ b/test/integration/map.test.mjs @@ -23,7 +23,10 @@ function exec(cmd) { beforeEach(async (t) => { const memSink = new Sink(); - const server = fastify({ ignoreTrailingSlash: true }); + const server = fastify({ + ignoreTrailingSlash: true, + forceCloseConnections: true, + }); const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ diff --git a/test/integration/meta.test.mjs b/test/integration/meta.test.mjs index f0039529..3a97f2ae 100644 --- a/test/integration/meta.test.mjs +++ b/test/integration/meta.test.mjs @@ -23,7 +23,10 @@ function exec(cmd) { beforeEach(async (t) => { const memSink = new Sink(); - const server = fastify({ ignoreTrailingSlash: true }); + const server = fastify({ + ignoreTrailingSlash: true, + forceCloseConnections: true, + }); const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ diff --git a/test/integration/package.test.mjs b/test/integration/package.test.mjs index aa99d14a..b19f692d 100644 --- a/test/integration/package.test.mjs +++ b/test/integration/package.test.mjs @@ -23,7 +23,10 @@ function exec(cmd) { beforeEach(async (t) => { const memSink = new Sink(); - const server = fastify({ ignoreTrailingSlash: true }); + const server = fastify({ + ignoreTrailingSlash: true, + forceCloseConnections: true, + }); const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ diff --git a/test/integration/version.test.mjs b/test/integration/version.test.mjs index e09763ce..5ebeae72 100644 --- a/test/integration/version.test.mjs +++ b/test/integration/version.test.mjs @@ -29,7 +29,10 @@ function exec(cmd, opts = {}) { beforeEach(async (t) => { const memSink = new Sink(); - const server = fastify({ ignoreTrailingSlash: true }); + const server = fastify({ + ignoreTrailingSlash: true, + forceCloseConnections: true, + }); const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ diff --git a/test/integrity.test.mjs b/test/integrity.test.mjs index e2621f80..70eb3d32 100644 --- a/test/integrity.test.mjs +++ b/test/integrity.test.mjs @@ -14,7 +14,10 @@ const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); beforeEach(async (t) => { - const server = fastify({ ignoreTrailingSlash: true }); + const server = fastify({ + ignoreTrailingSlash: true, + forceCloseConnections: true, + }); const memSink = new Sink(); const service = new EikService({ sink: memSink }); await server.register(service.api()); diff --git a/test/login.test.mjs b/test/login.test.mjs index dfcaaedf..f8ae7114 100644 --- a/test/login.test.mjs +++ b/test/login.test.mjs @@ -15,7 +15,10 @@ const __dirname = dirname(__filename); beforeEach(async (t) => { const memSink = new Sink(); - const server = fastify({ ignoreTrailingSlash: true }); + const server = fastify({ + ignoreTrailingSlash: true, + forceCloseConnections: true, + }); const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ diff --git a/test/meta.test.mjs b/test/meta.test.mjs index 9044622a..2c9e61fd 100644 --- a/test/meta.test.mjs +++ b/test/meta.test.mjs @@ -14,7 +14,10 @@ const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); beforeEach(async (t) => { - const server = fastify({ ignoreTrailingSlash: true }); + const server = fastify({ + ignoreTrailingSlash: true, + forceCloseConnections: true, + }); const memSink = new Sink(); const service = new EikService({ sink: memSink }); await server.register(service.api()); diff --git a/test/publish-files-definitions.test.mjs b/test/publish-files-definitions.test.mjs index 73e79ed0..cb98107a 100644 --- a/test/publish-files-definitions.test.mjs +++ b/test/publish-files-definitions.test.mjs @@ -26,7 +26,10 @@ const config = (files, server, token, cwd) => ({ beforeEach(async (t) => { const memSink = new Sink(); - const server = fastify({ ignoreTrailingSlash: true }); + const server = fastify({ + ignoreTrailingSlash: true, + forceCloseConnections: true, + }); const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ diff --git a/test/publish.map.test.mjs b/test/publish.map.test.mjs index 5cf3771f..db8c1a6c 100644 --- a/test/publish.map.test.mjs +++ b/test/publish.map.test.mjs @@ -15,7 +15,10 @@ const __dirname = dirname(__filename); beforeEach(async (t) => { const memSink = new Sink(); - const server = fastify({ ignoreTrailingSlash: true }); + const server = fastify({ + ignoreTrailingSlash: true, + forceCloseConnections: true, + }); const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ diff --git a/test/publish.package.test.mjs b/test/publish.package.test.mjs index 0246bc2d..8327a945 100644 --- a/test/publish.package.test.mjs +++ b/test/publish.package.test.mjs @@ -15,7 +15,10 @@ const __dirname = dirname(__filename); beforeEach(async (t) => { const memSink = new Sink(); - const server = fastify({ ignoreTrailingSlash: true }); + const server = fastify({ + ignoreTrailingSlash: true, + forceCloseConnections: true, + }); const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ diff --git a/test/utils.test.mjs b/test/utils.test.mjs index d68976a9..02cb9071 100644 --- a/test/utils.test.mjs +++ b/test/utils.test.mjs @@ -73,7 +73,10 @@ test("compare hashes - false", async (t) => { }); test("fetch latest version for a given published bundle", async (t) => { - const server = fastify({ ignoreTrailingSlash: true }); + const server = fastify({ + ignoreTrailingSlash: true, + forceCloseConnections: true, + }); server.get("/pkg/foo", async () => ({ versions: [ [1, { version: "1.3.2" }], @@ -93,7 +96,10 @@ test("fetch latest version for a given published bundle", async (t) => { }); test("fetch latest version, filtered by major, for a given published bundle", async (t) => { - const server = fastify({ ignoreTrailingSlash: true }); + const server = fastify({ + ignoreTrailingSlash: true, + forceCloseConnections: true, + }); server.get("/pkg/foo", async () => ({ versions: [ [1, { version: "1.3.2" }], @@ -113,7 +119,10 @@ test("fetch latest version, filtered by major, for a given published bundle", as }); test("fetch latest version for a given published bundle, non existant bundle on server", async (t) => { - const server = fastify({ ignoreTrailingSlash: true }); + const server = fastify({ + ignoreTrailingSlash: true, + forceCloseConnections: true, + }); const address = await server.listen({ host: "127.0.0.1", port: 0, @@ -133,7 +142,10 @@ test("fetch latest version for a given published bundle, non existant bundle on }); test("fetch latest version, filtered by major, for a given published bundle", async (t) => { - const server = fastify({ ignoreTrailingSlash: true }); + const server = fastify({ + ignoreTrailingSlash: true, + forceCloseConnections: true, + }); server.get("/pkg/foo", async () => ""); const address = await server.listen({ host: "127.0.0.1", @@ -154,7 +166,10 @@ test("fetch latest version, filtered by major, for a given published bundle", as }); test("fetch latest version, invalid versions returned by server", async (t) => { - const server = fastify({ ignoreTrailingSlash: true }); + const server = fastify({ + ignoreTrailingSlash: true, + forceCloseConnections: true, + }); server.get("/pkg/foo", async () => ({ versions: 1 })); const address = await server.listen({ host: "127.0.0.1", @@ -170,7 +185,10 @@ test("fetch latest version, invalid versions returned by server", async (t) => { }); test("fetch latest version, invalid versions keys returned by server", async (t) => { - const server = fastify({ ignoreTrailingSlash: true }); + const server = fastify({ + ignoreTrailingSlash: true, + forceCloseConnections: true, + }); server.get("/pkg/foo", async () => ({ versions: [ ["not a number", 1], @@ -191,7 +209,10 @@ test("fetch latest version, invalid versions keys returned by server", async (t) }); test("fetch latest version, no bundles yet published", async (t) => { - const server = fastify({ ignoreTrailingSlash: true }); + const server = fastify({ + ignoreTrailingSlash: true, + forceCloseConnections: true, + }); server.get("/pkg/foo", async () => ({ latest: {}, versions: [], @@ -209,7 +230,10 @@ test("fetch latest version, no bundles yet published", async (t) => { }); test("fetch remote hash for a given version", async (t) => { - const server = fastify({ ignoreTrailingSlash: true }); + const server = fastify({ + ignoreTrailingSlash: true, + forceCloseConnections: true, + }); server.get("/pkg/foo/1.0.0", async () => ({ integrity: "sha512-36Ug1lJ/p/H0n5+or1HDLrqLaI3nvB7j2f7PC9RIzWd3T5GE4CfOuClEZRiNsf/F4BjT5FnS9mz0EzeDHpu3uw==", diff --git a/test/version.test.mjs b/test/version.test.mjs index 276df0d1..ac00b406 100644 --- a/test/version.test.mjs +++ b/test/version.test.mjs @@ -14,7 +14,10 @@ const __dirname = dirname(__filename); beforeEach(async (t) => { const memSink = new Sink(); - const server = fastify({ ignoreTrailingSlash: true }); + const server = fastify({ + ignoreTrailingSlash: true, + forceCloseConnections: true, + }); const service = new EikService({ sink: memSink }); await server.register(service.api()); const address = await server.listen({ From c60f7b25f435c6eb629756e0e88ecc2843d938ae Mon Sep 17 00:00:00 2001 From: William Killerud Date: Mon, 18 Nov 2024 11:14:12 +0100 Subject: [PATCH 9/9] test: make test robust for glob order randomness The literal order in the list isn't that important, as long as the directories and files are correct. --- test/publish-files-definitions.test.mjs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/test/publish-files-definitions.test.mjs b/test/publish-files-definitions.test.mjs index cb98107a..12901725 100644 --- a/test/publish-files-definitions.test.mjs +++ b/test/publish-files-definitions.test.mjs @@ -239,9 +239,13 @@ test("when a recursive glob is specified", async (t) => { // @ts-expect-error const { files } = await cli.publish(config(pattern, address, token, cwd)); - t.equal(files[4].pathname, "/client.js", "client.js should be packaged at /"); t.equal( - files[11].pathname, + files.find((f) => f.pathname.endsWith("client.js")).pathname, + "/client.js", + "client.js should be packaged at /", + ); + t.equal( + files.find((f) => f.pathname.endsWith("checkboxes.svg")).pathname, "/icons/checkboxes.svg", "svgs should be packaged under /icons", ); @@ -255,7 +259,11 @@ test("when a non recursive glob is specified", async (t) => { const nested = files.filter((file) => file.pathname.includes("icons")); - t.equal(files[4].pathname, "/client.js", "client.js should be packaged at /"); + t.equal( + files.find((f) => f.pathname.endsWith("client.js")).pathname, + "/client.js", + "client.js should be packaged at /", + ); t.equal(nested.length, 0, "no nested files should be present"); });