Wait shutdown in test

This commit is contained in:
mei23 2021-06-04 20:56:19 +09:00
parent 79c33ab536
commit 8a9f736cde
No known key found for this signature in database
GPG Key ID: DD8628500D3E4B23
6 changed files with 32 additions and 15 deletions

View File

@ -12,15 +12,15 @@ process.env.NODE_ENV = 'test';
import * as assert from 'assert'; import * as assert from 'assert';
import * as childProcess from 'child_process'; import * as childProcess from 'child_process';
import { async, signup, request, post, launchServer } from './utils'; import { async, signup, request, post, launchServer, shutdownServer } from './utils';
describe('API visibility', () => { describe('API visibility', () => {
let p: childProcess.ChildProcess; let p: childProcess.ChildProcess;
before(launchServer(g => p = g)); before(launchServer(g => p = g));
after(() => { after(async () => {
p.kill(); await shutdownServer(p);
}); });
describe('Note visibility', async () => { describe('Note visibility', async () => {

View File

@ -12,7 +12,7 @@ process.env.NODE_ENV = 'test';
import * as assert from 'assert'; import * as assert from 'assert';
import * as childProcess from 'child_process'; import * as childProcess from 'child_process';
import { async, launchServer, signup, post, request, simpleGet, port } from './utils'; import { async, launchServer, signup, post, request, simpleGet, port, shutdownServer } from './utils';
import * as openapi from '@redocly/openapi-core'; import * as openapi from '@redocly/openapi-core';
// Request Accept // Request Accept
@ -39,8 +39,8 @@ describe('Fetch resource', () => {
}); });
})); }));
after(() => { after(async () => {
p.kill(); await shutdownServer(p);
}); });
describe('Common', () => { describe('Common', () => {

View File

@ -12,7 +12,7 @@ process.env.NODE_ENV = 'test';
import * as assert from 'assert'; import * as assert from 'assert';
import * as childProcess from 'child_process'; import * as childProcess from 'child_process';
import { async, signup, request, post, react, connectStream, launchServer } from './utils'; import { async, signup, request, post, react, connectStream, launchServer, shutdownServer } from './utils';
describe('Mute', () => { describe('Mute', () => {
let p: childProcess.ChildProcess; let p: childProcess.ChildProcess;
@ -28,8 +28,8 @@ describe('Mute', () => {
carol = await signup({ username: 'carol' }); carol = await signup({ username: 'carol' });
})); }));
after(() => { after(async () => {
p.kill(); await shutdownServer(p);
}); });
it('ミュート作成', async(async () => { it('ミュート作成', async(async () => {

View File

@ -12,7 +12,7 @@ process.env.NODE_ENV = 'test';
import * as assert from 'assert'; import * as assert from 'assert';
import * as childProcess from 'child_process'; import * as childProcess from 'child_process';
import { async, signup, request, post, uploadFile, launchServer } from './utils'; import { async, signup, request, post, uploadFile, launchServer, shutdownServer } from './utils';
import { Note } from '../src/models/entities/note'; import { Note } from '../src/models/entities/note';
import { initDb } from '../src/db/postgre'; import { initDb } from '../src/db/postgre';
@ -30,8 +30,8 @@ describe('Note', () => {
bob = await signup({ username: 'bob' }); bob = await signup({ username: 'bob' });
})); }));
after(() => { after(async () => {
p.kill(); await shutdownServer(p);
}); });
it('投稿できる', async(async () => { it('投稿できる', async(async () => {

View File

@ -12,7 +12,7 @@ process.env.NODE_ENV = 'test';
import * as assert from 'assert'; import * as assert from 'assert';
import * as childProcess from 'child_process'; import * as childProcess from 'child_process';
import { async, signup, request, post, uploadFile, launchServer } from './utils'; import { async, signup, request, post, uploadFile, launchServer, shutdownServer } from './utils';
describe('users/notes', () => { describe('users/notes', () => {
let p: childProcess.ChildProcess; let p: childProcess.ChildProcess;
@ -37,8 +37,8 @@ describe('users/notes', () => {
}); });
})); }));
after(() => { after(async() => {
p.kill(); await shutdownServer(p);
}); });
it('ファイルタイプ指定 (jpg)', async(async () => { it('ファイルタイプ指定 (jpg)', async(async () => {

View File

@ -5,6 +5,7 @@ const FormData = require('form-data');
import * as childProcess from 'child_process'; import * as childProcess from 'child_process';
import * as http from 'http'; import * as http from 'http';
import loadConfig from '../src/config/load'; import loadConfig from '../src/config/load';
import { SIGKILL } from 'constants';
export const port = loadConfig().port; export const port = loadConfig().port;
@ -145,3 +146,19 @@ export function launchServer(callbackSpawnedProcess: (p: childProcess.ChildProce
}); });
}; };
} }
export function shutdownServer(p: childProcess.ChildProcess, timeout = 20 * 1000) {
return new Promise((res, rej) => {
const t = setTimeout(() => {
p.kill(SIGKILL);
res('force exit');
}, timeout);
p.once('exit', () => {
clearTimeout(t);
res('exited');
});
p.kill();
});
}