]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - shared/extra-utils/server/servers.ts
Merge branch 'release/2.1.0' into develop
[github/Chocobozzz/PeerTube.git] / shared / extra-utils / server / servers.ts
index 4c7d6862ae8d1bbc1694463acba812062a4e5043..a0f0ce9c9792f11885e0a8ff5cd0814ab057bb65 100644 (file)
@@ -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<ServerInfo[]>(res => {
@@ -79,8 +78,8 @@ function flushTests (serverNumber?: number) {
   return new Promise<void>((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[]) {