da4de439e0
This uses the current dev build by default but can be overidden with CODE_SERVER_TEST_ENTRY (for example to test a release or some other version). Each instance has a separate state directory. This should make parallelization work. This also means you are no longer required to specify the password and address yourself (or the extension directory once we add a test extension). `yarn test:e2e` should just work as-is. Lastly, it means the tests are no longer subject to yarn watch randomly restarting.
40 lines
1.0 KiB
TypeScript
40 lines
1.0 KiB
TypeScript
import { promises as fs } from "fs"
|
|
import * as os from "os"
|
|
import * as path from "path"
|
|
|
|
/**
|
|
* Return a mock of @coder/logger.
|
|
*/
|
|
export function createLoggerMock() {
|
|
return {
|
|
field: jest.fn(),
|
|
level: 2,
|
|
logger: {
|
|
debug: jest.fn(),
|
|
error: jest.fn(),
|
|
info: jest.fn(),
|
|
trace: jest.fn(),
|
|
warn: jest.fn(),
|
|
},
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Clean up directories left by a test. It is recommended to do this when a test
|
|
* starts to avoid potentially accumulating infinite test directories.
|
|
*/
|
|
export async function clean(testName: string): Promise<void> {
|
|
const dir = path.join(os.tmpdir(), `code-server/tests/${testName}`)
|
|
await fs.rmdir(dir, { recursive: true })
|
|
}
|
|
|
|
/**
|
|
* Create a uniquely named temporary directory for a test.
|
|
*/
|
|
export async function tmpdir(testName: string): Promise<string> {
|
|
const dir = path.join(os.tmpdir(), `code-server/tests/${testName}`)
|
|
await fs.mkdir(dir, { recursive: true })
|
|
|
|
return await fs.mkdtemp(path.join(dir, `${testName}-`), { encoding: "utf8" })
|
|
}
|