X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=shared%2Fextra-utils%2Fserver%2Fservers.ts;h=0f883d839c08bf3eedc71cf19a020dcbf6350228;hb=35b30b643cf9870b0934f34253ffb23cf6a264b0;hp=4c7d6862ae8d1bbc1694463acba812062a4e5043;hpb=b91bc1d1f3591c35ab4426f6ab594b4bd9f1ef62;p=github%2FChocobozzz%2FPeerTube.git diff --git a/shared/extra-utils/server/servers.ts b/shared/extra-utils/server/servers.ts index 4c7d6862a..0f883d839 100644 --- a/shared/extra-utils/server/servers.ts +++ b/shared/extra-utils/server/servers.ts @@ -1,16 +1,15 @@ -/* tslint:disable:no-unused-expression */ +/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/no-floating-promises */ import { ChildProcess, exec, fork } from 'child_process' import { join } from 'path' import { root, wait } from '../miscs/miscs' -import { copy, readdir, readFile, remove } from 'fs-extra' -import { existsSync } from 'fs' +import { copy, pathExists, readdir, readFile, remove } from 'fs-extra' import { expect } from 'chai' import { VideoChannel } from '../../models/videos' import { randomInt } from '../../core-utils/miscs/miscs' interface ServerInfo { - app: ChildProcess, + app: ChildProcess url: string host: string @@ -20,13 +19,13 @@ interface ServerInfo { serverNumber: number client: { - id: string, + id: string secret: string } user: { - username: string, - password: string, + username: string + password: string email?: string } @@ -57,7 +56,7 @@ function parallelTests () { } function flushAndRunMultipleServers (totalServers: number, configOverride?: Object) { - let apps = [] + const apps = [] let i = 0 return new Promise(res => { @@ -79,8 +78,8 @@ function flushTests (serverNumber?: number) { return new Promise((res, rej) => { const suffix = serverNumber ? ` -- ${serverNumber}` : '' - return exec('npm run clean:server:test' + suffix, err => { - if (err) return rej(err) + return exec('npm run clean:server:test' + suffix, (err, _stdout, stderr) => { + if (err || stderr) return rej(err || new Error(stderr)) return res() }) @@ -171,7 +170,8 @@ async function runServer (server: ServerInfo, configOverrideArg?: any, args = [] thumbnails: `test${server.internalServerNumber}/thumbnails/`, torrents: `test${server.internalServerNumber}/torrents/`, captions: `test${server.internalServerNumber}/captions/`, - cache: `test${server.internalServerNumber}/cache/` + cache: `test${server.internalServerNumber}/cache/`, + plugins: `test${server.internalServerNumber}/plugins/` }, admin: { email: `admin${server.internalServerNumber}@example.com` @@ -202,20 +202,20 @@ async function runServer (server: ServerInfo, configOverrideArg?: any, args = [] // Capture things if we want to for (const key of Object.keys(regexps)) { - const regexp = regexps[ key ] + const regexp = regexps[key] const matches = data.toString().match(regexp) if (matches !== null) { - if (key === 'client_id') server.client.id = matches[ 1 ] - else if (key === 'client_secret') server.client.secret = matches[ 1 ] - else if (key === 'user_username') server.user.username = matches[ 1 ] - else if (key === 'user_password') server.user.password = matches[ 1 ] + if (key === 'client_id') server.client.id = matches[1] + else if (key === 'client_secret') server.client.secret = matches[1] + else if (key === 'user_username') server.user.username = matches[1] + else if (key === 'user_password') server.user.password = matches[1] } } // Check if all required sentences are here for (const key of Object.keys(serverRunString)) { - if (data.toString().indexOf(key) !== -1) serverRunString[ key ] = true - if (serverRunString[ key ] === false) dontContinue = true + if (data.toString().indexOf(key) !== -1) serverRunString[key] = true + if (serverRunString[key] === false) dontContinue = true } // If no, there is maybe one thing not already initialized (client/user credentials generation...) @@ -241,20 +241,22 @@ async function reRunServer (server: ServerInfo, configOverride?: any) { return server } -async function checkTmpIsEmpty (server: ServerInfo) { - return checkDirectoryIsEmpty(server, 'tmp') +function checkTmpIsEmpty (server: ServerInfo) { + return checkDirectoryIsEmpty(server, 'tmp', [ 'plugins-global.css' ]) } -async function checkDirectoryIsEmpty (server: ServerInfo, directory: string) { +async function checkDirectoryIsEmpty (server: ServerInfo, directory: string, exceptions: string[] = []) { const testDirectory = 'test' + server.internalServerNumber const directoryPath = join(root(), testDirectory, directory) - const directoryExists = existsSync(directoryPath) + const directoryExists = await pathExists(directoryPath) expect(directoryExists).to.be.true const files = await readdir(directoryPath) - expect(files).to.have.lengthOf(0) + const filtered = files.filter(f => exceptions.includes(f) === false) + + expect(filtered).to.have.lengthOf(0) } function killallServers (servers: ServerInfo[]) { @@ -283,7 +285,7 @@ function cleanupTests (servers: ServerInfo[]) { return Promise.all(p) } -async function waitUntilLog (server: ServerInfo, str: string, count = 1) { +async function waitUntilLog (server: ServerInfo, str: string, count = 1, strictCount = true) { const logfile = join(root(), 'test' + server.internalServerNumber, 'logs/peertube.log') while (true) { @@ -291,6 +293,7 @@ async function waitUntilLog (server: ServerInfo, str: string, count = 1) { const matches = buf.toString().match(new RegExp(str, 'g')) if (matches && matches.length === count) return + if (matches && strictCount === false && matches.length >= count) return await wait(1000) }