From 7a634a18bfb4ed3f26cbf0ae8e7368f733f20f17 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 28 Mar 2026 16:37:30 +0000 Subject: [PATCH 1/4] test: fix vitest vi.mock hoisting warnings and my-timezone resolution Move vi.mock calls to the top level in ntpclient and jszip-cli tests to comply with vitest's module hoisting requirements. Add a vitest.config.ts for my-timezone to resolve the ntpclient workspace package from source, fixing test failures when ntpclient has not been built. --- packages/jszip-cli/src/BuildService.test.ts | 24 +++++++-------- packages/my-timezone/vitest.config.ts | 10 ++++++ packages/ntpclient/src/index.test.ts | 34 ++++++++++----------- 3 files changed, 37 insertions(+), 31 deletions(-) create mode 100644 packages/my-timezone/vitest.config.ts diff --git a/packages/jszip-cli/src/BuildService.test.ts b/packages/jszip-cli/src/BuildService.test.ts index 7ee7d223..d281471f 100644 --- a/packages/jszip-cli/src/BuildService.test.ts +++ b/packages/jszip-cli/src/BuildService.test.ts @@ -1,23 +1,21 @@ -import {beforeAll, beforeEach, describe, expect, test, vi} from 'vitest'; +import {beforeEach, describe, expect, test, vi} from 'vitest'; import {BuildService} from './BuildService.js'; import {JSZipCLI} from './index.js'; +vi.mock('fs', () => ({ + promises: { + lstat: async () => ({isDirectory: () => false, isFile: () => true}), + readFile: async () => {}, + }, +})); +vi.mock('glob', () => ({ + glob: async (params: string | string[]) => [params].flat(), +})); + describe('BuildService', () => { let jsZipCLI: JSZipCLI; - beforeAll(() => { - vi.mock('fs', () => ({ - promises: { - lstat: async () => ({isDirectory: () => false, isFile: () => true}), - readFile: async () => {}, - }, - })); - vi.mock('glob', () => ({ - glob: async (params: string | string[]) => [params].flat(), - })); - }); - const addDefaultSpies = (buildService: BuildService) => { vi.spyOn(buildService, 'checkOutput').mockReturnValue(async () => {}); vi.spyOn(buildService, 'addFile'); diff --git a/packages/my-timezone/vitest.config.ts b/packages/my-timezone/vitest.config.ts new file mode 100644 index 00000000..d116fffc --- /dev/null +++ b/packages/my-timezone/vitest.config.ts @@ -0,0 +1,10 @@ +import path from 'node:path'; +import {defineConfig} from 'vitest/config'; + +export default defineConfig({ + resolve: { + alias: { + ntpclient: path.resolve(__dirname, '../ntpclient/src/index.ts'), + }, + }, +}); diff --git a/packages/ntpclient/src/index.test.ts b/packages/ntpclient/src/index.test.ts index ce91bc7a..c78e8731 100644 --- a/packages/ntpclient/src/index.test.ts +++ b/packages/ntpclient/src/index.test.ts @@ -1,31 +1,29 @@ /* eslint-disable no-magic-numbers */ import * as dgram from 'node:dgram'; -import {afterEach, beforeEach, describe, expect, it, vi} from 'vitest'; +import {afterEach, describe, expect, it, vi} from 'vitest'; import {NTPClient} from './index.js'; +vi.mock('node:dgram', async () => ({ + ...(await vi.importActual('node:dgram')), + send: () => { + const socket = dgram.createSocket('udp4'); + socket.emit( + 'message', + Buffer.from([ + 0x1c, 0x02, 0x03, 0xe8, 0x00, 0x00, 0x02, 0x1a, 0x00, 0x00, 0x05, 0x12, 0xc0, 0x35, 0x67, 0x6c, 0xe9, 0x03, + 0x76, 0xff, 0xff, 0x97, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe9, 0x03, 0x78, 0x0f, + 0xe9, 0xd6, 0x4e, 0x10, 0xe9, 0x03, 0x78, 0x0f, 0xea, 0x03, 0x93, 0xf5, + ]) + ); + }, +})); + const SECOND_IN_MILLIS = 1000; const replyTimeout = 5 * SECOND_IN_MILLIS; describe.skip('NTP', () => { - beforeEach(() => { - vi.mock('node:dgram', async () => ({ - ...(await vi.importActual('node:dgram')), - send: () => { - const socket = dgram.createSocket('udp4'); - socket.emit( - 'message', - Buffer.from([ - 0x1c, 0x02, 0x03, 0xe8, 0x00, 0x00, 0x02, 0x1a, 0x00, 0x00, 0x05, 0x12, 0xc0, 0x35, 0x67, 0x6c, 0xe9, 0x03, - 0x76, 0xff, 0xff, 0x97, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe9, 0x03, 0x78, 0x0f, - 0xe9, 0xd6, 0x4e, 0x10, 0xe9, 0x03, 0x78, 0x0f, 0xea, 0x03, 0x93, 0xf5, - ]) - ); - }, - })); - }); - afterEach(() => { vi.resetAllMocks(); }); From cc4a6222871b1efb6988a69c70c448c21b9a19b0 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 28 Mar 2026 16:40:23 +0000 Subject: [PATCH 2/4] test: exclude vitest.config.ts from my-timezone tsconfig --- packages/my-timezone/tsconfig.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/my-timezone/tsconfig.json b/packages/my-timezone/tsconfig.json index 3a237d20..40fbd071 100644 --- a/packages/my-timezone/tsconfig.json +++ b/packages/my-timezone/tsconfig.json @@ -7,6 +7,6 @@ "rootDir": "src", "target": "ES2018" }, - "exclude": ["dist", "node_modules"], + "exclude": ["dist", "node_modules", "vitest.config.ts"], "extends": "../../tsconfig.json" } From 403ffe7bd5086c5e08eafc5dfe8fb5ebdb787ccd Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 28 Mar 2026 16:43:09 +0000 Subject: [PATCH 3/4] test: exclude vitest.config.ts from my-timezone tsconfig.build.json --- packages/my-timezone/tsconfig.build.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/my-timezone/tsconfig.build.json b/packages/my-timezone/tsconfig.build.json index 82a9bcf3..42298823 100644 --- a/packages/my-timezone/tsconfig.build.json +++ b/packages/my-timezone/tsconfig.build.json @@ -1,4 +1,4 @@ { - "exclude": ["dist", "node_modules", "**/*.test.ts"], + "exclude": ["dist", "node_modules", "**/*.test.ts", "vitest.config.ts"], "extends": "./tsconfig.json" } From 7a998f5b11eb30b401501b7bb86a08fa38270aff Mon Sep 17 00:00:00 2001 From: Florian Imdahl Date: Sat, 28 Mar 2026 17:43:51 +0100 Subject: [PATCH 4/4] Update tsconfig.json --- packages/my-timezone/tsconfig.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/my-timezone/tsconfig.json b/packages/my-timezone/tsconfig.json index 40fbd071..3a237d20 100644 --- a/packages/my-timezone/tsconfig.json +++ b/packages/my-timezone/tsconfig.json @@ -7,6 +7,6 @@ "rootDir": "src", "target": "ES2018" }, - "exclude": ["dist", "node_modules", "vitest.config.ts"], + "exclude": ["dist", "node_modules"], "extends": "../../tsconfig.json" }