Skip to content

Commit 2613f66

Browse files
authored
feat(shared-ini-file-loader): refactor loadSharedConfigFiles into modular components (#3285)
1 parent e2b7b25 commit 2613f66

13 files changed

+520
-683
lines changed
+62
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
import { homedir } from "os";
2+
import { sep } from "path";
3+
4+
import { getHomeDir } from "./getHomeDir";
5+
6+
jest.mock("os");
7+
8+
describe(getHomeDir.name, () => {
9+
const mockHOME = "mockHOME";
10+
const mockUSERPROFILE = "mockUSERPROFILE";
11+
const mockHOMEPATH = "mockHOMEPATH";
12+
const mockHOMEDRIVE = "mockHOMEDRIVE";
13+
const mockHomeDir = "mockHomeDir";
14+
15+
const OLD_ENV = process.env;
16+
17+
beforeEach(() => {
18+
(homedir as jest.Mock).mockReturnValue(mockHomeDir);
19+
process.env = {
20+
...OLD_ENV,
21+
HOME: mockHOME,
22+
USERPROFILE: mockUSERPROFILE,
23+
HOMEPATH: mockHOMEPATH,
24+
HOMEDRIVE: mockHOMEDRIVE,
25+
};
26+
});
27+
28+
afterEach(() => {
29+
process.env = OLD_ENV;
30+
jest.clearAllMocks();
31+
jest.resetModules();
32+
});
33+
34+
it("returns value in process.env.HOME first", () => {
35+
expect(getHomeDir()).toEqual(mockHOME);
36+
});
37+
38+
it("returns value in process.env.USERPROFILE second", () => {
39+
process.env = { ...process.env, HOME: undefined };
40+
expect(getHomeDir()).toEqual(mockUSERPROFILE);
41+
});
42+
43+
describe("returns value in HOMEPATH third", () => {
44+
beforeEach(() => {
45+
process.env = { ...process.env, HOME: undefined, USERPROFILE: undefined };
46+
});
47+
48+
it("uses value in process.env.HOMEDRIVE if it's set", () => {
49+
expect(getHomeDir()).toEqual(`${mockHOMEDRIVE}${mockHOMEPATH}`);
50+
});
51+
52+
it("uses default if process.env.HOMEDRIVE is not set", () => {
53+
process.env = { ...process.env, HOMEDRIVE: undefined };
54+
expect(getHomeDir()).toEqual(`C:${sep}${mockHOMEPATH}`);
55+
});
56+
});
57+
58+
it("returns value from homedir fourth", () => {
59+
process.env = { ...process.env, HOME: undefined, USERPROFILE: undefined, HOMEPATH: undefined };
60+
expect(getHomeDir()).toEqual(mockHomeDir);
61+
});
62+
});

Diff for: packages/shared-ini-file-loader/src/getHomeDir.ts

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { homedir } from "os";
2+
import { sep } from "path";
3+
4+
/**
5+
* Get the HOME directory for the current runtime.
6+
*
7+
* @internal
8+
*/
9+
export const getHomeDir = (): string => {
10+
const { HOME, USERPROFILE, HOMEPATH, HOMEDRIVE = `C:${sep}` } = process.env;
11+
12+
if (HOME) return HOME;
13+
if (USERPROFILE) return USERPROFILE;
14+
if (HOMEPATH) return `${HOMEDRIVE}${HOMEPATH}`;
15+
16+
return homedir();
17+
};

0 commit comments

Comments
 (0)