+/* tslint:disable:no-unused-expression */
+
import { ChildProcess, exec, fork } from 'child_process'
import { join } from 'path'
import { root, wait } from '../miscs/miscs'
-import { readFile } from 'fs-extra'
+import { readdir, readFile } from 'fs-extra'
+import { existsSync } from 'fs'
+import { expect } from 'chai'
interface ServerInfo {
app: ChildProcess,
})
}
-function runServer (serverNumber: number, configOverride?: Object) {
+function runServer (serverNumber: number, configOverride?: Object, args = []) {
const server: ServerInfo = {
app: null,
serverNumber: serverNumber,
}
return new Promise<ServerInfo>(res => {
- server.app = fork(join(__dirname, '..', '..', '..', '..', 'dist', 'server.js'), [], options)
+ server.app = fork(join(root(), 'dist', 'server.js'), args, options)
server.app.stdout.on('data', function onStdout (data) {
let dontContinue = false
if (dontContinue === true) return
server.app.stdout.removeListener('data', onStdout)
+
+ process.on('exit', () => process.kill(server.app.pid))
+
res(server)
})
+
})
}
return server
}
+async function checkTmpIsEmpty (server: ServerInfo) {
+ const testDirectory = 'test' + server.serverNumber
+
+ const directoryPath = join(root(), testDirectory, 'tmp')
+
+ const directoryExists = existsSync(directoryPath)
+ expect(directoryExists).to.be.true
+
+ const files = await readdir(directoryPath)
+ expect(files).to.have.lengthOf(0)
+}
+
function killallServers (servers: ServerInfo[]) {
for (const server of servers) {
process.kill(-server.app.pid)
// ---------------------------------------------------------------------------
export {
+ checkTmpIsEmpty,
ServerInfo,
flushAndRunMultipleServers,
flushTests,