Implement last opened functionality (#4633)
* Implement last opened functionality Fixes https://github.com/cdr/code-server/issues/4619 * Fix test temp dirs not being cleaned up * Mock logger everywhere This suppresses all the error and debug output we generate which makes it hard to actually find which test has failed. It also gives us a standard way to test logging for the few places we do that. * Use separate data directories for unit test instances Exactly as we do for the e2e tests. * Add integration tests for vscode route * Make settings use --user-data-dir Without this test instances step on each other feet and they also clobber your own non-test settings. * Make redirects consistent They will preserve the trailing slash if there is one. * Remove compilation check If you do a regular non-watch build there are no compilation stats so this bricks VS Code in CI when running the unit tests. I am not sure how best to fix this for the case where you have a build that has not been packaged yet so I just removed it for now and added a message to check if VS Code is compiling when in dev mode. * Update code-server update endpoint name
This commit is contained in:
@ -1,23 +1,26 @@
|
||||
import { logger } from "@coder/logger"
|
||||
import { promises as fs } from "fs"
|
||||
import * as net from "net"
|
||||
import * as os from "os"
|
||||
import * as path from "path"
|
||||
|
||||
/**
|
||||
* Return a mock of @coder/logger.
|
||||
* Spy on the logger and console and replace with mock implementations to
|
||||
* suppress the output.
|
||||
*/
|
||||
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(),
|
||||
},
|
||||
}
|
||||
export function mockLogger() {
|
||||
jest.spyOn(logger, "debug").mockImplementation()
|
||||
jest.spyOn(logger, "error").mockImplementation()
|
||||
jest.spyOn(logger, "info").mockImplementation()
|
||||
jest.spyOn(logger, "trace").mockImplementation()
|
||||
jest.spyOn(logger, "warn").mockImplementation()
|
||||
|
||||
jest.spyOn(console, "log").mockImplementation()
|
||||
jest.spyOn(console, "debug").mockImplementation()
|
||||
jest.spyOn(console, "error").mockImplementation()
|
||||
jest.spyOn(console, "info").mockImplementation()
|
||||
jest.spyOn(console, "trace").mockImplementation()
|
||||
jest.spyOn(console, "warn").mockImplementation()
|
||||
}
|
||||
|
||||
/**
|
||||
@ -31,6 +34,8 @@ export async function clean(testName: string): Promise<void> {
|
||||
|
||||
/**
|
||||
* Create a uniquely named temporary directory for a test.
|
||||
*
|
||||
* `tmpdir` should usually be preceeded by at least one call to `clean`.
|
||||
*/
|
||||
export async function tmpdir(testName: string): Promise<string> {
|
||||
const dir = path.join(os.tmpdir(), `code-server/tests/${testName}`)
|
||||
|
Reference in New Issue
Block a user