70bf21e064
Deploy (to testing) and Test Playground Preview Worker / Deploy Playground Preview Worker (testing) (push) Has been skipped
Deploy Workers Shared Staging / Deploy Workers Shared Staging (push) Failing after 0s
Prerelease / build (push) Has been skipped
Handle Changesets / Handle Changesets (push) Has been cancelled
Semgrep OSS scan / semgrep-oss (push) Has been cancelled
35 lines
1.1 KiB
TypeScript
35 lines
1.1 KiB
TypeScript
import * as fs from "node:fs";
|
|
import os from "node:os";
|
|
import * as path from "node:path";
|
|
import { afterEach, beforeEach, vi } from "vitest";
|
|
import { removeDir } from "../fs-helpers";
|
|
|
|
const originalCwd = process.cwd();
|
|
|
|
export function runInTempDir({ homedir } = { homedir: "./home" }) {
|
|
let tmpDir: string;
|
|
|
|
beforeEach(() => {
|
|
// Use realpath because the temporary path can point to a symlink rather than the actual path.
|
|
tmpDir = fs.realpathSync(
|
|
fs.mkdtempSync(path.join(os.tmpdir(), "wrangler-tests"))
|
|
);
|
|
|
|
process.chdir(tmpDir);
|
|
vi.stubEnv("PWD", tmpDir);
|
|
|
|
// Override where the home directory is so that we can write our own user config,
|
|
// without destroying the real thing.
|
|
// The path that is returned from `homedir()` should be absolute.
|
|
const absHomedir = path.resolve(tmpDir, homedir);
|
|
fs.mkdirSync(absHomedir, { recursive: true });
|
|
vi.stubEnv("HOME", absHomedir);
|
|
vi.stubEnv("XDG_CONFIG_HOME", path.resolve(absHomedir, ".config"));
|
|
});
|
|
|
|
afterEach(() => {
|
|
process.chdir(originalCwd);
|
|
removeDir(tmpDir, { fireAndForget: true });
|
|
});
|
|
}
|