From b8e3f545c05af2781385836d6cb6192d60233849 Mon Sep 17 00:00:00 2001 From: Hazelnoot Date: Sat, 27 Sep 2025 20:08:51 -0400 Subject: [PATCH] add missing shutdown hooks in unit tests --- packages/backend/test/unit/ApMfmService.ts | 10 ++++++++-- packages/backend/test/unit/CustomEmojiService.ts | 4 ++++ packages/backend/test/unit/FlashService.ts | 1 + packages/backend/test/unit/MfmService.ts | 10 ++++++++-- packages/backend/test/unit/NoteCreateService.ts | 10 ++++++++-- packages/backend/test/unit/ReactionService.ts | 10 ++++++++-- .../backend/test/unit/SigninWithPasskeyApiService.ts | 1 + packages/backend/test/unit/UserSearchService.ts | 1 + packages/backend/test/unit/UtilityService.ts | 11 +++++++++-- packages/backend/test/unit/activitypub.ts | 9 +++++++-- 10 files changed, 55 insertions(+), 12 deletions(-) diff --git a/packages/backend/test/unit/ApMfmService.ts b/packages/backend/test/unit/ApMfmService.ts index e81a321c9b..dd2031f26d 100644 --- a/packages/backend/test/unit/ApMfmService.ts +++ b/packages/backend/test/unit/ApMfmService.ts @@ -4,7 +4,7 @@ */ import * as assert from 'assert'; -import { Test } from '@nestjs/testing'; +import { Test, TestingModule } from '@nestjs/testing'; import { CoreModule } from '@/core/CoreModule.js'; import { ApMfmService } from '@/core/activitypub/ApMfmService.js'; @@ -12,15 +12,21 @@ import { GlobalModule } from '@/GlobalModule.js'; import { MiNote } from '@/models/Note.js'; describe('ApMfmService', () => { + let app: TestingModule; let apMfmService: ApMfmService; beforeAll(async () => { - const app = await Test.createTestingModule({ + app = await Test.createTestingModule({ imports: [GlobalModule, CoreModule], }).compile(); + app.enableShutdownHooks(); apMfmService = app.get(ApMfmService); }); + afterAll(async () => { + await app.close(); + }); + describe('getNoteHtml', () => { test('Do not provide _misskey_content for simple text', () => { const note = { diff --git a/packages/backend/test/unit/CustomEmojiService.ts b/packages/backend/test/unit/CustomEmojiService.ts index 8c3dac69e8..1d854457cd 100644 --- a/packages/backend/test/unit/CustomEmojiService.ts +++ b/packages/backend/test/unit/CustomEmojiService.ts @@ -52,6 +52,10 @@ describe('CustomEmojiService', () => { await app.get(DI.db).query("set session time zone 'UTC'"); }); + afterAll(async () => { + await app.close(); + }); + describe('fetchEmojis', () => { async function insert(data: Partial[]) { for (const d of data) { diff --git a/packages/backend/test/unit/FlashService.ts b/packages/backend/test/unit/FlashService.ts index f2d9832f50..da016b4322 100644 --- a/packages/backend/test/unit/FlashService.ts +++ b/packages/backend/test/unit/FlashService.ts @@ -71,6 +71,7 @@ describe('FlashService', () => { IdService, ], }).compile(); + app.enableShutdownHooks(); service = app.get(FlashService); diff --git a/packages/backend/test/unit/MfmService.ts b/packages/backend/test/unit/MfmService.ts index ace67caf33..f9a7ea100d 100644 --- a/packages/backend/test/unit/MfmService.ts +++ b/packages/backend/test/unit/MfmService.ts @@ -5,22 +5,28 @@ import * as assert from 'assert'; import * as mfm from 'mfm-js'; -import { Test } from '@nestjs/testing'; +import { Test, TestingModule } from '@nestjs/testing'; import { CoreModule } from '@/core/CoreModule.js'; import { MfmService } from '@/core/MfmService.js'; import { GlobalModule } from '@/GlobalModule.js'; describe('MfmService', () => { + let app: TestingModule; let mfmService: MfmService; beforeAll(async () => { - const app = await Test.createTestingModule({ + app = await Test.createTestingModule({ imports: [GlobalModule, CoreModule], }).compile(); + app.enableShutdownHooks(); mfmService = app.get(MfmService); }); + afterAll(async () => { + await app.close(); + }); + describe('toHtml', () => { test('br', () => { const input = 'foo\nbar\nbaz'; diff --git a/packages/backend/test/unit/NoteCreateService.ts b/packages/backend/test/unit/NoteCreateService.ts index 8f241cf0c7..1b14f810e9 100644 --- a/packages/backend/test/unit/NoteCreateService.ts +++ b/packages/backend/test/unit/NoteCreateService.ts @@ -3,7 +3,7 @@ * SPDX-License-Identifier: AGPL-3.0-only */ -import { Test } from '@nestjs/testing'; +import { Test, TestingModule } from '@nestjs/testing'; import { CoreModule } from '@/core/CoreModule.js'; import { NoteCreateService } from '@/core/NoteCreateService.js'; @@ -13,15 +13,21 @@ import { IPoll } from '@/models/Poll.js'; import { MiDriveFile } from '@/models/DriveFile.js'; describe('NoteCreateService', () => { + let app: TestingModule; let noteCreateService: NoteCreateService; beforeAll(async () => { - const app = await Test.createTestingModule({ + app = await Test.createTestingModule({ imports: [GlobalModule, CoreModule], }).compile(); + app.enableShutdownHooks(); noteCreateService = app.get(NoteCreateService); }); + afterAll(async () => { + await app.close(); + }); + describe('is-renote', () => { const base: MiNote = { id: 'some-note-id', diff --git a/packages/backend/test/unit/ReactionService.ts b/packages/backend/test/unit/ReactionService.ts index 1957f4544c..7609aad77f 100644 --- a/packages/backend/test/unit/ReactionService.ts +++ b/packages/backend/test/unit/ReactionService.ts @@ -4,22 +4,28 @@ */ import * as assert from 'assert'; -import { Test } from '@nestjs/testing'; +import { Test, TestingModule } from '@nestjs/testing'; import { CoreModule } from '@/core/CoreModule.js'; import { ReactionService } from '@/core/ReactionService.js'; import { GlobalModule } from '@/GlobalModule.js'; describe('ReactionService', () => { + let app: TestingModule; let reactionService: ReactionService; beforeAll(async () => { - const app = await Test.createTestingModule({ + app = await Test.createTestingModule({ imports: [GlobalModule, CoreModule], }).compile(); + app.enableShutdownHooks(); reactionService = app.get(ReactionService); }); + afterAll(async () => { + await app.close(); + }); + describe('normalize', () => { test('絵文字リアクションはそのまま', async () => { assert.strictEqual(await reactionService.normalize('👍'), '👍'); diff --git a/packages/backend/test/unit/SigninWithPasskeyApiService.ts b/packages/backend/test/unit/SigninWithPasskeyApiService.ts index 5bc86f6616..b7fff58385 100644 --- a/packages/backend/test/unit/SigninWithPasskeyApiService.ts +++ b/packages/backend/test/unit/SigninWithPasskeyApiService.ts @@ -108,6 +108,7 @@ describe('SigninWithPasskeyApiService', () => { return new Mock(); } }).compile(); + app.enableShutdownHooks(); passkeyApiService = app.get(SigninWithPasskeyApiService); usersRepository = app.get(DI.usersRepository); userProfilesRepository = app.get(DI.userProfilesRepository); diff --git a/packages/backend/test/unit/UserSearchService.ts b/packages/backend/test/unit/UserSearchService.ts index a6b331d1cb..8be47aea20 100644 --- a/packages/backend/test/unit/UserSearchService.ts +++ b/packages/backend/test/unit/UserSearchService.ts @@ -117,6 +117,7 @@ describe('UserSearchService', () => { }) .compile(); + app.enableShutdownHooks(); await app.init(); instancesRepository = app.get(DI.instancesRepository); diff --git a/packages/backend/test/unit/UtilityService.ts b/packages/backend/test/unit/UtilityService.ts index f4e92b85a7..9cfe05c37f 100644 --- a/packages/backend/test/unit/UtilityService.ts +++ b/packages/backend/test/unit/UtilityService.ts @@ -1,5 +1,5 @@ import * as assert from 'assert'; -import { Test } from '@nestjs/testing'; +import { Test, TestingModule } from '@nestjs/testing'; import { jest } from '@jest/globals'; import { CoreModule } from '@/core/CoreModule.js'; @@ -12,21 +12,28 @@ import type { SoftwareSuspension } from '@/models/Meta.js'; import type { MiInstance } from '@/models/Instance.js'; describe('UtilityService', () => { + let app: TestingModule; let utilityService: UtilityService; let meta: jest.Mocked; beforeAll(async () => { - const app = await Test.createTestingModule({ + app = await Test.createTestingModule({ imports: [GlobalModule, CoreModule], providers: [MetaService], }) .overrideProvider(MetaService).useValue({ fetch: jest.fn() }) .compile(); + app.enableShutdownHooks(); + utilityService = app.get(UtilityService); meta = app.get(DI.meta) as jest.Mocked; }); + afterAll(async () => { + await app.close(); + }); + describe('punyHost', () => { test('simple', () => { assert.equal(utilityService.punyHost('http://www.foo.com'), 'www.foo.com'); diff --git a/packages/backend/test/unit/activitypub.ts b/packages/backend/test/unit/activitypub.ts index ff93e1be07..b8920fefbb 100644 --- a/packages/backend/test/unit/activitypub.ts +++ b/packages/backend/test/unit/activitypub.ts @@ -6,7 +6,7 @@ process.env.NODE_ENV = 'test'; import * as assert from 'assert'; import { generateKeyPair } from 'crypto'; -import { Test } from '@nestjs/testing'; +import { Test, TestingModule } from '@nestjs/testing'; import { jest } from '@jest/globals'; import { NoOpCacheService } from '../misc/noOpCaches.js'; @@ -94,6 +94,7 @@ async function createRandomRemoteUser( } describe('ActivityPub', () => { + let app: TestingModule; let userProfilesRepository: UserProfilesRepository; let imageService: ApImageService; let noteService: ApNoteService; @@ -147,7 +148,7 @@ describe('ActivityPub', () => { } beforeAll(async () => { - const app = await Test.createTestingModule({ + app = await Test.createTestingModule({ imports: [GlobalModule, CoreModule], }) .overrideProvider(DownloadService).useValue({ @@ -187,6 +188,10 @@ describe('ActivityPub', () => { resolver.clear(); }); + afterAll(async () => { + await app.close(); + }); + describe('Parse minimum object', () => { const actor = createRandomActor();