mirror of
https://github.com/misskey-dev/misskey.git
synced 2026-05-04 09:35:51 +02:00
* wip * update fake-timers and migrate * fix * remove jest-mock * fix * fix * fix * fix * attempt to fix unit tests * attempt to fix e2e tests * fix federation test [ci skip] * attempt to fix e2e tests * fix typecheck * fix unit tests * fix * attempt to fix e2e * fix * Revert "attempt to fix e2e" This reverts commitb7b7b05d85. * attempt to fix e2e * revert attempt to fix e2e * update deps * update vitest * migrate * attempt to fix e2e * update * fix * remove vite swc plugin as oxc parser can handle decorators * attempt to fix drive/files/create test * Revert "attempt to fix drive/files/create test" This reverts commit4715153375. * fix: エンドポイントにまつわるテストをunitからe2eに移動 * attempt to fix e2e * remove swc * attempt to fix e2e * Revert "attempt to fix e2e" This reverts commit9fb86a4076. * add logs for debug * attempt to fix e2e * Partially revert "attempt to fix e2e" This reverts commitfb0008c85a. * attempt to fix test * fix: attempt to fix test * Revert "fix: attempt to fix test" This reverts commited2f5c40e8. * Revert "attempt to fix test" This reverts commitd7329c46f1. * attempt to fix e2e * fix: surpass eventemitter warning by increasing defaultMaxListeners * attempt to fix e2e * fix * fix e2e not ending properly * exp: add hanging-process reporter for investigation * Revert "exp: add hanging-process reporter for investigation" This reverts commit26851f8282. * update changelog
106 lines
2.7 KiB
TypeScript
106 lines
2.7 KiB
TypeScript
import { portToPid } from 'pid-port';
|
|
import fkill from 'fkill';
|
|
import Fastify from 'fastify';
|
|
import { NestFactory } from '@nestjs/core';
|
|
import { MainModule } from '@/MainModule.js';
|
|
import { ServerService } from '@/server/ServerService.js';
|
|
import { loadConfig } from '@/config.js';
|
|
import { NestLogger } from '@/NestLogger.js';
|
|
import { INestApplicationContext } from '@nestjs/common';
|
|
|
|
const config = loadConfig();
|
|
const originEnv = JSON.stringify(process.env);
|
|
|
|
process.env.NODE_ENV = 'test';
|
|
|
|
let app: INestApplicationContext;
|
|
let serverService: ServerService;
|
|
|
|
/**
|
|
* テスト用のサーバインスタンスを起動する
|
|
*/
|
|
export async function setup() {
|
|
await killTestServer();
|
|
|
|
console.log('starting application...');
|
|
|
|
app = await NestFactory.createApplicationContext(MainModule, {
|
|
logger: new NestLogger(),
|
|
});
|
|
serverService = app.get(ServerService);
|
|
await serverService.launch();
|
|
|
|
await startControllerEndpoints();
|
|
|
|
// ジョブキューは必要な時にテストコード側で起動する
|
|
// ジョブキューが動くとテスト結果の確認に支障が出ることがあるので意図的に動かさないでいる
|
|
|
|
console.log('application initialized.');
|
|
}
|
|
|
|
/**
|
|
* テスト用のサーバインスタンスを停止する
|
|
*/
|
|
export async function teardown() {
|
|
await serverService.dispose();
|
|
await app.close();
|
|
await killTestServer();
|
|
}
|
|
|
|
/**
|
|
* 既に重複したポートで待ち受けしているサーバがある場合はkillする
|
|
*/
|
|
async function killTestServer() {
|
|
//
|
|
try {
|
|
const pid = await portToPid(config.port);
|
|
if (pid) {
|
|
await fkill(pid, { force: true });
|
|
}
|
|
} catch {
|
|
// NOP;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 別プロセスに切り離してしまったが故に出来なくなった環境変数の書き換え等を実現するためのエンドポイントを作る
|
|
* @param port
|
|
*/
|
|
async function startControllerEndpoints(port = config.port + 1000) {
|
|
const fastify = Fastify();
|
|
|
|
fastify.post<{ Body: { key?: string, value?: string } }>('/env', async (req, res) => {
|
|
console.log(req.body);
|
|
const key = req.body['key'];
|
|
if (!key) {
|
|
res.code(400).send({ success: false });
|
|
return;
|
|
}
|
|
|
|
process.env[key] = req.body['value'];
|
|
|
|
res.code(200).send({ success: true });
|
|
});
|
|
|
|
fastify.post<{ Body: { key?: string, value?: string } }>('/env-reset', async (req, res) => {
|
|
process.env = JSON.parse(originEnv);
|
|
|
|
await serverService.dispose();
|
|
await app.close();
|
|
|
|
await killTestServer();
|
|
|
|
console.log('starting application...');
|
|
|
|
app = await NestFactory.createApplicationContext(MainModule, {
|
|
logger: new NestLogger(),
|
|
});
|
|
serverService = app.get(ServerService);
|
|
await serverService.launch();
|
|
|
|
res.code(200).send({ success: true });
|
|
});
|
|
|
|
await fastify.listen({ port: port, host: 'localhost' });
|
|
}
|