mirror of
https://github.com/Chocobozzz/PeerTube.git
synced 2025-10-03 17:59:37 +02:00

Sorry for the very big commit that may lead to git log issues and merge conflicts, but it's a major step forward: * Server can be faster at startup because imports() are async and we can easily lazy import big modules * Angular doesn't seem to support ES import (with .js extension), so we had to correctly organize peertube into a monorepo: * Use yarn workspace feature * Use typescript reference projects for dependencies * Shared projects have been moved into "packages", each one is now a node module (with a dedicated package.json/tsconfig.json) * server/tools have been moved into apps/ and is now a dedicated app bundled and published on NPM so users don't have to build peertube cli tools manually * server/tests have been moved into packages/ so we don't compile them every time we want to run the server * Use isolatedModule option: * Had to move from const enum to const (https://www.typescriptlang.org/docs/handbook/enums.html#objects-vs-enums) * Had to explictely specify "type" imports when used in decorators * Prefer tsx (that uses esbuild under the hood) instead of ts-node to load typescript files (tests with mocha or scripts): * To reduce test complexity as esbuild doesn't support decorator metadata, we only test server files that do not import server models * We still build tests files into js files for a faster CI * Remove unmaintained peertube CLI import script * Removed some barrels to speed up execution (less imports)
44 lines
1.6 KiB
TypeScript
44 lines
1.6 KiB
TypeScript
/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
|
|
|
|
import { expect } from 'chai'
|
|
import { pathExists } from 'fs-extra/esm'
|
|
import { readdir } from 'fs/promises'
|
|
import { homedir } from 'os'
|
|
import { join } from 'path'
|
|
import { PeerTubeServer } from '@peertube/peertube-server-commands'
|
|
import { PeerTubeRunnerProcess } from './peertube-runner-process.js'
|
|
|
|
export async function checkTmpIsEmpty (server: PeerTubeServer) {
|
|
await checkDirectoryIsEmpty(server, 'tmp', [ 'plugins-global.css', 'hls', 'resumable-uploads' ])
|
|
|
|
if (await pathExists(server.getDirectoryPath('tmp/hls'))) {
|
|
await checkDirectoryIsEmpty(server, 'tmp/hls')
|
|
}
|
|
}
|
|
|
|
export async function checkPersistentTmpIsEmpty (server: PeerTubeServer) {
|
|
await checkDirectoryIsEmpty(server, 'tmp-persistent')
|
|
}
|
|
|
|
export async function checkDirectoryIsEmpty (server: PeerTubeServer, directory: string, exceptions: string[] = []) {
|
|
const directoryPath = server.getDirectoryPath(directory)
|
|
|
|
const directoryExists = await pathExists(directoryPath)
|
|
expect(directoryExists).to.be.true
|
|
|
|
const files = await readdir(directoryPath)
|
|
const filtered = files.filter(f => exceptions.includes(f) === false)
|
|
|
|
expect(filtered).to.have.lengthOf(0)
|
|
}
|
|
|
|
export async function checkPeerTubeRunnerCacheIsEmpty (runner: PeerTubeRunnerProcess) {
|
|
const directoryPath = join(homedir(), '.cache', 'peertube-runner-nodejs', runner.getId(), 'transcoding')
|
|
|
|
const directoryExists = await pathExists(directoryPath)
|
|
expect(directoryExists).to.be.true
|
|
|
|
const files = await readdir(directoryPath)
|
|
|
|
expect(files, 'Directory content: ' + files.join(', ')).to.have.lengthOf(0)
|
|
}
|