mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-10-21 05:50:55 +08:00
* Add Node 24 environment-file support * Update runtime harnesses for environment-file URL paths * Link URL dependencies in weak metadata runtime tests
43 lines
1.8 KiB
TypeScript
43 lines
1.8 KiB
TypeScript
import { writeFileSync, unlinkSync, mkdtempSync, rmdirSync } from "node:fs";
|
|
import { tmpdir } from "node:os";
|
|
import { loadEnvFile } from "node:process";
|
|
import { pathToFileURL } from "node:url";
|
|
|
|
const directory = mkdtempSync(tmpdir() + "/scriptc-node24-env-");
|
|
const previous = process.cwd();
|
|
process.chdir(directory);
|
|
delete process.env.SCRIPTC_ENV_NEW;
|
|
delete process.env.SCRIPTC_ENV_SECOND;
|
|
process.env.SCRIPTC_ENV_KEEP = "existing";
|
|
process.env.SCRIPTC_ENV_EMPTY = "";
|
|
writeFileSync(".env", "SCRIPTC_ENV_NEW=default\nSCRIPTC_ENV_KEEP=replaced\nSCRIPTC_ENV_EMPTY=replaced\n", "utf8");
|
|
writeFileSync("another.env", "SCRIPTC_ENV_NEW=another\nSCRIPTC_ENV_SECOND=\"two\\nlines\"\n", "utf8");
|
|
try {
|
|
loadEnvFile();
|
|
console.log(process.env.SCRIPTC_ENV_NEW, process.env.SCRIPTC_ENV_KEEP, JSON.stringify(process.env.SCRIPTC_ENV_EMPTY));
|
|
loadEnvFile("another.env");
|
|
console.log(process.env.SCRIPTC_ENV_NEW, JSON.stringify(process.env.SCRIPTC_ENV_SECOND));
|
|
delete process.env.SCRIPTC_ENV_NEW;
|
|
loadEnvFile(Buffer.from(".env"));
|
|
console.log("buffer", process.env.SCRIPTC_ENV_NEW);
|
|
delete process.env.SCRIPTC_ENV_NEW;
|
|
loadEnvFile(pathToFileURL(process.cwd() + "/.env"));
|
|
console.log("url", process.env.SCRIPTC_ENV_NEW);
|
|
delete process.env.SCRIPTC_ENV_NEW;
|
|
loadEnvFile(undefined);
|
|
console.log("undefined", process.env.SCRIPTC_ENV_NEW);
|
|
delete process.env.SCRIPTC_ENV_NEW;
|
|
loadEnvFile(null as unknown as string);
|
|
console.log("null", process.env.SCRIPTC_ENV_NEW);
|
|
writeFileSync("raw.env", Buffer.from([83, 67, 82, 73, 80, 84, 67, 95, 69, 78, 86, 95, 82, 65, 87, 61, 255, 226, 130]));
|
|
delete process.env.SCRIPTC_ENV_RAW;
|
|
loadEnvFile("raw.env");
|
|
console.log("raw", JSON.stringify(process.env.SCRIPTC_ENV_RAW));
|
|
unlinkSync("raw.env");
|
|
} finally {
|
|
unlinkSync(".env");
|
|
unlinkSync("another.env");
|
|
process.chdir(previous);
|
|
rmdirSync(directory);
|
|
}
|