initial commit
This commit is contained in:
48
test/envLoader.test.js
Normal file
48
test/envLoader.test.js
Normal file
@@ -0,0 +1,48 @@
|
||||
"use strict";
|
||||
|
||||
const fs = require("node:fs");
|
||||
const os = require("node:os");
|
||||
const path = require("node:path");
|
||||
const test = require("node:test");
|
||||
const assert = require("node:assert/strict");
|
||||
const { loadDotEnv } = require("../src/envLoader");
|
||||
|
||||
test("loadDotEnv parses quoted values and keeps existing env", () => {
|
||||
const suffix = `${Date.now()}_${Math.random().toString(16).slice(2)}`;
|
||||
const plainKey = `AIRPLANE_TEST_PLAIN_${suffix}`;
|
||||
const quotedKey = `AIRPLANE_TEST_QUOTED_${suffix}`;
|
||||
const singleQuotedKey = `AIRPLANE_TEST_SINGLE_${suffix}`;
|
||||
const existingKey = `AIRPLANE_TEST_EXISTING_${suffix}`;
|
||||
const invalidKey = "INVALID-NAME";
|
||||
|
||||
const envPath = path.join(os.tmpdir(), `airplane_${suffix}.env`);
|
||||
const envContent = [
|
||||
`# comment`,
|
||||
`${plainKey}=hello`,
|
||||
`${quotedKey}=\"line1\\nline2\"`,
|
||||
`${singleQuotedKey}='with space'`,
|
||||
`${existingKey}=from_file`,
|
||||
`${invalidKey}=ignored`,
|
||||
``,
|
||||
].join("\n");
|
||||
|
||||
process.env[existingKey] = "from_process";
|
||||
fs.writeFileSync(envPath, envContent, "utf8");
|
||||
|
||||
try {
|
||||
loadDotEnv(envPath);
|
||||
|
||||
assert.equal(process.env[plainKey], "hello");
|
||||
assert.equal(process.env[quotedKey], "line1\nline2");
|
||||
assert.equal(process.env[singleQuotedKey], "with space");
|
||||
assert.equal(process.env[existingKey], "from_process");
|
||||
} finally {
|
||||
delete process.env[plainKey];
|
||||
delete process.env[quotedKey];
|
||||
delete process.env[singleQuotedKey];
|
||||
delete process.env[existingKey];
|
||||
if (fs.existsSync(envPath)) {
|
||||
fs.unlinkSync(envPath);
|
||||
}
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user