X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=shared%2Fextra-utils%2Fmiscs%2Femail.ts;h=15d298a73cfb194340a8c1b16b3ad26d1b03b51c;hb=ba5d4a849c7d7ba05f093480ae12286c4af61556;hp=f9f1bd95b05736543b21e096cdca528b8dbd631a;hpb=94565d52bb2883e09f16d1363170ac9c0dccb7a1;p=github%2FChocobozzz%2FPeerTube.git diff --git a/shared/extra-utils/miscs/email.ts b/shared/extra-utils/miscs/email.ts index f9f1bd95b..15d298a73 100644 --- a/shared/extra-utils/miscs/email.ts +++ b/shared/extra-utils/miscs/email.ts @@ -1,4 +1,6 @@ -import { fork, ChildProcess } from 'child_process' +import { ChildProcess, fork } from 'child_process' +import { randomInt } from '../../core-utils/miscs/miscs' +import { parallelTests } from '../server/servers' class MockSmtpServer { @@ -10,7 +12,7 @@ class MockSmtpServer { private constructor () { this.emailChildProcess = fork(`${__dirname}/email-child-process`, []) - this.emailChildProcess.on('message', (msg) => { + this.emailChildProcess.on('message', (msg: any) => { if (msg.email) { return this.emails.push(msg.email) } @@ -20,7 +22,9 @@ class MockSmtpServer { } collectEmails (emailsCollection: object[]) { - return new Promise((res, rej) => { + return new Promise((res, rej) => { + const port = parallelTests() ? randomInt(1000, 2000) : 1025 + if (this.started) { this.emails = emailsCollection return res() @@ -28,17 +32,17 @@ class MockSmtpServer { // ensure maildev isn't started until // unexpected exit can be reported to test runner - this.emailChildProcess.send({ start: true }) + this.emailChildProcess.send({ start: true, port }) this.emailChildProcess.on('exit', () => { return rej(new Error('maildev exited unexpectedly, confirm port not in use')) }) - this.emailChildProcess.on('message', (msg) => { - if (msg.err) { - return rej(new Error(msg.err)) - } + this.emailChildProcess.on('message', (msg: any) => { + if (msg.err) return rej(new Error(msg.err)) + this.started = true this.emails = emailsCollection - return res() + + return res(port) }) }) }