dirsql 0.3.35 → 0.3.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/api/index.md +5 -2
- package/package.json +17 -31
- package/dist/cli/die.test.d.ts +0 -2
- package/dist/cli/die.test.d.ts.map +0 -1
- package/dist/cli/die.test.js +0 -29
- package/dist/cli/die.test.js.map +0 -1
- package/dist/cli/interpret/buildTables.test.d.ts +0 -2
- package/dist/cli/interpret/buildTables.test.d.ts.map +0 -1
- package/dist/cli/interpret/buildTables.test.js +0 -60
- package/dist/cli/interpret/buildTables.test.js.map +0 -1
- package/dist/cli/interpret/dispatchExtract.test.d.ts +0 -2
- package/dist/cli/interpret/dispatchExtract.test.d.ts.map +0 -1
- package/dist/cli/interpret/dispatchExtract.test.js +0 -75
- package/dist/cli/interpret/dispatchExtract.test.js.map +0 -1
- package/dist/cli/interpret/errMessage.test.d.ts +0 -2
- package/dist/cli/interpret/errMessage.test.d.ts.map +0 -1
- package/dist/cli/interpret/errMessage.test.js +0 -23
- package/dist/cli/interpret/errMessage.test.js.map +0 -1
- package/dist/cli/interpret/interpret.test.d.ts +0 -2
- package/dist/cli/interpret/interpret.test.d.ts.map +0 -1
- package/dist/cli/interpret/interpret.test.js +0 -152
- package/dist/cli/interpret/interpret.test.js.map +0 -1
- package/dist/cli/interpret/loadApp.test.d.ts +0 -2
- package/dist/cli/interpret/loadApp.test.d.ts.map +0 -1
- package/dist/cli/interpret/loadApp.test.js +0 -33
- package/dist/cli/interpret/loadApp.test.js.map +0 -1
- package/dist/cli/interpret/writeMessage.test.d.ts +0 -2
- package/dist/cli/interpret/writeMessage.test.d.ts.map +0 -1
- package/dist/cli/interpret/writeMessage.test.js +0 -25
- package/dist/cli/interpret/writeMessage.test.js.map +0 -1
- package/dist/cli/main.test.d.ts +0 -2
- package/dist/cli/main.test.d.ts.map +0 -1
- package/dist/cli/main.test.js +0 -109
- package/dist/cli/main.test.js.map +0 -1
- package/dist/cli/platformKey.test.d.ts +0 -2
- package/dist/cli/platformKey.test.d.ts.map +0 -1
- package/dist/cli/platformKey.test.js +0 -36
- package/dist/cli/platformKey.test.js.map +0 -1
- package/dist/cli/resolveBinary.test.d.ts +0 -2
- package/dist/cli/resolveBinary.test.d.ts.map +0 -1
- package/dist/cli/resolveBinary.test.js +0 -54
- package/dist/cli/resolveBinary.test.js.map +0 -1
- package/dist/loadNativeCore.test.d.ts +0 -2
- package/dist/loadNativeCore.test.d.ts.map +0 -1
- package/dist/loadNativeCore.test.js +0 -51
- package/dist/loadNativeCore.test.js.map +0 -1
- package/dist/platforms.test.d.ts +0 -2
- package/dist/platforms.test.d.ts.map +0 -1
- package/dist/platforms.test.js +0 -84
- package/dist/platforms.test.js.map +0 -1
- package/dist/resolveConfig.test.d.ts +0 -2
- package/dist/resolveConfig.test.d.ts.map +0 -1
- package/dist/resolveConfig.test.js +0 -206
- package/dist/resolveConfig.test.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"writeMessage.test.js","sourceRoot":"","sources":["../../../src/cli/interpret/writeMessage.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,IAAI,KAA+B,CAAC;IAEpC,UAAU,CAAC,GAAG,EAAE;QACd,KAAK,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAChB,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,YAAY,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5C,MAAM,CAAC,KAAK,CAAC,CAAC,+BAA+B,CAC3C,gCAAgC,CACjC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACvB,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAY,CAAA,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7C,MAAM,CAAC,KAAK,CAAC,CAAC,+BAA+B,CAC3C,8BAA8B,CAC/B,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/cli/main.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"main.test.d.ts","sourceRoot":"","sources":["../../src/cli/main.test.ts"],"names":[],"mappings":""}
|
package/dist/cli/main.test.js
DELETED
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
// Unit tests for `main`.
|
|
2
|
-
import { spawnSync } from "node:child_process";
|
|
3
|
-
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
4
|
-
import { die } from "./die.js";
|
|
5
|
-
import { interpret } from "./interpret/index.js";
|
|
6
|
-
import { main } from "./main.js";
|
|
7
|
-
import { resolveBinary } from "./resolveBinary.js";
|
|
8
|
-
vi.mock("./resolveBinary.js");
|
|
9
|
-
vi.mock("./die.js");
|
|
10
|
-
vi.mock("./interpret/index.js");
|
|
11
|
-
vi.mock("node:child_process");
|
|
12
|
-
const TEST_PID = 42;
|
|
13
|
-
function fakeResult(overrides) {
|
|
14
|
-
return {
|
|
15
|
-
pid: TEST_PID,
|
|
16
|
-
stdout: Buffer.from(""),
|
|
17
|
-
stderr: Buffer.from(""),
|
|
18
|
-
output: [],
|
|
19
|
-
status: 0,
|
|
20
|
-
signal: null,
|
|
21
|
-
...overrides,
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
describe("main", () => {
|
|
25
|
-
let exit;
|
|
26
|
-
let kill;
|
|
27
|
-
beforeEach(() => {
|
|
28
|
-
vi.mocked(resolveBinary).mockReturnValue("/bin/dirsql");
|
|
29
|
-
vi.mocked(die).mockImplementation(((msg) => {
|
|
30
|
-
throw new Error(`DIE: ${msg}`);
|
|
31
|
-
}));
|
|
32
|
-
exit = vi.fn().mockImplementation((code) => {
|
|
33
|
-
throw new Error(`EXIT_${code}`);
|
|
34
|
-
});
|
|
35
|
-
kill = vi.fn();
|
|
36
|
-
vi.stubGlobal("process", {
|
|
37
|
-
...process,
|
|
38
|
-
exit,
|
|
39
|
-
kill,
|
|
40
|
-
pid: TEST_PID,
|
|
41
|
-
});
|
|
42
|
-
});
|
|
43
|
-
afterEach(() => {
|
|
44
|
-
vi.unstubAllGlobals();
|
|
45
|
-
vi.resetAllMocks();
|
|
46
|
-
});
|
|
47
|
-
it("spawns the resolved binary with the argv and exits with the spawn status", async () => {
|
|
48
|
-
vi.mocked(spawnSync).mockReturnValue(fakeResult({ status: 0 }));
|
|
49
|
-
await expect(main(["--version"])).rejects.toThrow("EXIT_0");
|
|
50
|
-
expect(spawnSync).toHaveBeenCalledWith("/bin/dirsql", ["--version"], {
|
|
51
|
-
stdio: "inherit",
|
|
52
|
-
});
|
|
53
|
-
expect(exit).toHaveBeenCalledWith(0);
|
|
54
|
-
});
|
|
55
|
-
it("falls back to exit code 1 when spawn returns a null status", async () => {
|
|
56
|
-
vi.mocked(spawnSync).mockReturnValue(fakeResult({ status: null }));
|
|
57
|
-
await expect(main([])).rejects.toThrow("EXIT_1");
|
|
58
|
-
expect(exit).toHaveBeenCalledWith(1);
|
|
59
|
-
});
|
|
60
|
-
it("calls die with the spawn error message when spawn reports an error", async () => {
|
|
61
|
-
vi.mocked(spawnSync).mockReturnValue(fakeResult({ status: null, error: new Error("spawn ENOENT") }));
|
|
62
|
-
await expect(main([])).rejects.toThrow("DIE: spawn ENOENT");
|
|
63
|
-
expect(die).toHaveBeenCalledWith("spawn ENOENT", 1);
|
|
64
|
-
});
|
|
65
|
-
it("re-raises the spawned process's signal against the current pid before exiting", async () => {
|
|
66
|
-
vi.mocked(spawnSync).mockReturnValue(fakeResult({ status: 0, signal: "SIGINT" }));
|
|
67
|
-
await expect(main([])).rejects.toThrow("EXIT_0");
|
|
68
|
-
expect(kill).toHaveBeenCalledWith(TEST_PID, "SIGINT");
|
|
69
|
-
});
|
|
70
|
-
it("defaults argv to process.argv.slice(2) when called with no args", async () => {
|
|
71
|
-
vi.mocked(spawnSync).mockReturnValue(fakeResult({ status: 0 }));
|
|
72
|
-
vi.stubGlobal("process", {
|
|
73
|
-
...process,
|
|
74
|
-
argv: ["node", "dirsql", "--help"],
|
|
75
|
-
exit,
|
|
76
|
-
kill,
|
|
77
|
-
pid: TEST_PID,
|
|
78
|
-
});
|
|
79
|
-
await expect(main()).rejects.toThrow("EXIT_0");
|
|
80
|
-
expect(spawnSync).toHaveBeenCalledWith("/bin/dirsql", ["--help"], {
|
|
81
|
-
stdio: "inherit",
|
|
82
|
-
});
|
|
83
|
-
});
|
|
84
|
-
describe("when argv[0] is 'interpret'", () => {
|
|
85
|
-
it("dispatches to the interpret helper and exits with its return code", async () => {
|
|
86
|
-
vi.mocked(interpret).mockResolvedValue(0);
|
|
87
|
-
await expect(main(["interpret", "config.mjs"])).rejects.toThrow("EXIT_0");
|
|
88
|
-
expect(interpret).toHaveBeenCalledWith("config.mjs");
|
|
89
|
-
expect(spawnSync).not.toHaveBeenCalled();
|
|
90
|
-
expect(resolveBinary).not.toHaveBeenCalled();
|
|
91
|
-
});
|
|
92
|
-
it("propagates a non-zero interpret exit code", async () => {
|
|
93
|
-
vi.mocked(interpret).mockResolvedValue(2);
|
|
94
|
-
await expect(main(["interpret", "bad.mjs"])).rejects.toThrow("EXIT_2");
|
|
95
|
-
});
|
|
96
|
-
it("passes the empty string when no config path follows", async () => {
|
|
97
|
-
vi.mocked(interpret).mockResolvedValue(1);
|
|
98
|
-
await expect(main(["interpret"])).rejects.toThrow("EXIT_1");
|
|
99
|
-
expect(interpret).toHaveBeenCalledWith("");
|
|
100
|
-
});
|
|
101
|
-
it("does not intercept when 'interpret' is not the first arg", async () => {
|
|
102
|
-
vi.mocked(spawnSync).mockReturnValue(fakeResult({ status: 0 }));
|
|
103
|
-
await expect(main(["--verbose", "interpret", "config.mjs"])).rejects.toThrow("EXIT_0");
|
|
104
|
-
expect(interpret).not.toHaveBeenCalled();
|
|
105
|
-
expect(spawnSync).toHaveBeenCalled();
|
|
106
|
-
});
|
|
107
|
-
});
|
|
108
|
-
});
|
|
109
|
-
//# sourceMappingURL=main.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"main.test.js","sourceRoot":"","sources":["../../src/cli/main.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"platformKey.test.d.ts","sourceRoot":"","sources":["../../src/cli/platformKey.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
2
|
-
import { platformKey } from "./platformKey.js";
|
|
3
|
-
afterEach(() => vi.restoreAllMocks());
|
|
4
|
-
describe("platformKey", () => {
|
|
5
|
-
describe("on linux x64", () => {
|
|
6
|
-
it("returns 'linux-x64'", () => {
|
|
7
|
-
vi.stubGlobal("process", {
|
|
8
|
-
...process,
|
|
9
|
-
platform: "linux",
|
|
10
|
-
arch: "x64",
|
|
11
|
-
});
|
|
12
|
-
expect(platformKey()).toBe("linux-x64");
|
|
13
|
-
});
|
|
14
|
-
});
|
|
15
|
-
describe("on darwin arm64", () => {
|
|
16
|
-
it("returns 'darwin-arm64'", () => {
|
|
17
|
-
vi.stubGlobal("process", {
|
|
18
|
-
...process,
|
|
19
|
-
platform: "darwin",
|
|
20
|
-
arch: "arm64",
|
|
21
|
-
});
|
|
22
|
-
expect(platformKey()).toBe("darwin-arm64");
|
|
23
|
-
});
|
|
24
|
-
});
|
|
25
|
-
describe("on win32 x64", () => {
|
|
26
|
-
it("returns 'win32-x64'", () => {
|
|
27
|
-
vi.stubGlobal("process", {
|
|
28
|
-
...process,
|
|
29
|
-
platform: "win32",
|
|
30
|
-
arch: "x64",
|
|
31
|
-
});
|
|
32
|
-
expect(platformKey()).toBe("win32-x64");
|
|
33
|
-
});
|
|
34
|
-
});
|
|
35
|
-
});
|
|
36
|
-
//# sourceMappingURL=platformKey.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"platformKey.test.js","sourceRoot":"","sources":["../../src/cli/platformKey.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC;AAEtC,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;YAC7B,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE;gBACvB,GAAG,OAAO;gBACV,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,KAAK;aACZ,CAAC,CAAC;YACH,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;YAChC,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE;gBACvB,GAAG,OAAO;gBACV,QAAQ,EAAE,QAAQ;gBAClB,IAAI,EAAE,OAAO;aACd,CAAC,CAAC;YACH,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;YAC7B,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE;gBACvB,GAAG,OAAO;gBACV,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,KAAK;aACZ,CAAC,CAAC;YACH,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolveBinary.test.d.ts","sourceRoot":"","sources":["../../src/cli/resolveBinary.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
// Unit tests for `resolveBinary` and `defaultResolver`.
|
|
2
|
-
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
3
|
-
import { die } from "./die.js";
|
|
4
|
-
import { defaultResolver, resolveBinary } from "./resolveBinary.js";
|
|
5
|
-
vi.mock("./die.js");
|
|
6
|
-
describe("resolveBinary", () => {
|
|
7
|
-
beforeEach(() => {
|
|
8
|
-
vi.mocked(die).mockImplementation(((msg) => {
|
|
9
|
-
throw new Error(`DIE: ${msg}`);
|
|
10
|
-
}));
|
|
11
|
-
});
|
|
12
|
-
afterEach(() => {
|
|
13
|
-
vi.unstubAllGlobals();
|
|
14
|
-
vi.resetAllMocks();
|
|
15
|
-
});
|
|
16
|
-
describe("when the host triple is unknown", () => {
|
|
17
|
-
it("calls die with a 'no prebuilt binary' message", () => {
|
|
18
|
-
expect(() => resolveBinary("unknown-triple", () => "ignored")).toThrow(/^DIE: no prebuilt binary for unknown-triple\./);
|
|
19
|
-
});
|
|
20
|
-
});
|
|
21
|
-
describe("when the host triple is known", () => {
|
|
22
|
-
beforeEach(() => {
|
|
23
|
-
vi.stubGlobal("process", {
|
|
24
|
-
...process,
|
|
25
|
-
platform: "linux",
|
|
26
|
-
arch: "x64",
|
|
27
|
-
});
|
|
28
|
-
});
|
|
29
|
-
it("resolves the binary via the injected resolver", () => {
|
|
30
|
-
const resolver = vi.fn().mockReturnValue("/abs/path/to/dirsql");
|
|
31
|
-
const result = resolveBinary(undefined, resolver);
|
|
32
|
-
expect(result).toBe("/abs/path/to/dirsql");
|
|
33
|
-
expect(resolver).toHaveBeenCalledWith("@dirsql/cli-linux-x64-gnu/dirsql");
|
|
34
|
-
});
|
|
35
|
-
it("uses `dirsql.exe` on win32", () => {
|
|
36
|
-
vi.stubGlobal("process", { ...process, platform: "win32", arch: "x64" });
|
|
37
|
-
const resolver = vi.fn().mockReturnValue("C:/dirsql.exe");
|
|
38
|
-
resolveBinary(undefined, resolver);
|
|
39
|
-
expect(resolver).toHaveBeenCalledWith("@dirsql/cli-win32-x64-msvc/dirsql.exe");
|
|
40
|
-
});
|
|
41
|
-
it("calls die with a 'not installed' message when the resolver throws", () => {
|
|
42
|
-
const resolver = () => {
|
|
43
|
-
throw new Error("MODULE_NOT_FOUND");
|
|
44
|
-
};
|
|
45
|
-
expect(() => resolveBinary(undefined, resolver)).toThrow(/^DIE: @dirsql\/cli-linux-x64-gnu is not installed\./);
|
|
46
|
-
});
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
describe("defaultResolver", () => {
|
|
50
|
-
it("returns a require.resolve-shaped function", () => {
|
|
51
|
-
expect(typeof defaultResolver()).toBe("function");
|
|
52
|
-
});
|
|
53
|
-
});
|
|
54
|
-
//# sourceMappingURL=resolveBinary.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolveBinary.test.js","sourceRoot":"","sources":["../../src/cli/resolveBinary.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loadNativeCore.test.d.ts","sourceRoot":"","sources":["../src/loadNativeCore.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it, vi } from "vitest";
|
|
2
|
-
import { loadNativeCore } from "./loadNativeCore.js";
|
|
3
|
-
describe("loadNativeCore", () => {
|
|
4
|
-
describe("when the platform sub-package is installed", () => {
|
|
5
|
-
it("loads via the `@dirsql/lib-<slug>` require and never hits the dev fallback", () => {
|
|
6
|
-
const fakeCore = { DirSQL: vi.fn() };
|
|
7
|
-
const requirer = vi.fn((spec) => {
|
|
8
|
-
if (spec === "@dirsql/lib-linux-x64-gnu") {
|
|
9
|
-
return fakeCore;
|
|
10
|
-
}
|
|
11
|
-
throw new Error(`unexpected require(${spec})`);
|
|
12
|
-
});
|
|
13
|
-
const core = loadNativeCore("linux-x64", requirer, () => "/fake");
|
|
14
|
-
expect(core).toBe(fakeCore);
|
|
15
|
-
expect(requirer).toHaveBeenCalledExactlyOnceWith("@dirsql/lib-linux-x64-gnu");
|
|
16
|
-
});
|
|
17
|
-
});
|
|
18
|
-
describe("when the platform sub-package is missing", () => {
|
|
19
|
-
it("falls back to `<pkgRoot>/dirsql.node`", () => {
|
|
20
|
-
const fakeCore = { DirSQL: vi.fn() };
|
|
21
|
-
const requirer = vi.fn((spec) => {
|
|
22
|
-
if (spec === "@dirsql/lib-darwin-arm64") {
|
|
23
|
-
throw new Error("Cannot find module '@dirsql/lib-darwin-arm64'");
|
|
24
|
-
}
|
|
25
|
-
if (spec.endsWith("dirsql.node")) {
|
|
26
|
-
return fakeCore;
|
|
27
|
-
}
|
|
28
|
-
throw new Error(`unexpected require(${spec})`);
|
|
29
|
-
});
|
|
30
|
-
const core = loadNativeCore("darwin-arm64", requirer, () => "/pkg/ts");
|
|
31
|
-
expect(core).toBe(fakeCore);
|
|
32
|
-
expect(requirer).toHaveBeenCalledTimes(2);
|
|
33
|
-
expect(requirer).toHaveBeenLastCalledWith("/pkg/dirsql.node");
|
|
34
|
-
});
|
|
35
|
-
});
|
|
36
|
-
describe("on a platform with no corresponding sub-package", () => {
|
|
37
|
-
it("goes straight to the dev fallback without attempting a sub-package load", () => {
|
|
38
|
-
const fakeCore = { DirSQL: vi.fn() };
|
|
39
|
-
const requirer = vi.fn((spec) => {
|
|
40
|
-
if (spec.endsWith("dirsql.node")) {
|
|
41
|
-
return fakeCore;
|
|
42
|
-
}
|
|
43
|
-
throw new Error(`unexpected require(${spec})`);
|
|
44
|
-
});
|
|
45
|
-
const core = loadNativeCore("freebsd-x64", requirer, () => "/pkg/ts");
|
|
46
|
-
expect(core).toBe(fakeCore);
|
|
47
|
-
expect(requirer).toHaveBeenCalledExactlyOnceWith("/pkg/dirsql.node");
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
});
|
|
51
|
-
//# sourceMappingURL=loadNativeCore.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loadNativeCore.test.js","sourceRoot":"","sources":["../src/loadNativeCore.test.ts"],"names":[],"mappings":"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"}
|
package/dist/platforms.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"platforms.test.d.ts","sourceRoot":"","sources":["../src/platforms.test.ts"],"names":[],"mappings":""}
|
package/dist/platforms.test.js
DELETED
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from "vitest";
|
|
2
|
-
import { PLATFORMS, libTriples, librarySlug, nodeTriples, } from "./platforms.js";
|
|
3
|
-
describe("PLATFORMS", () => {
|
|
4
|
-
describe("shape invariants", () => {
|
|
5
|
-
it("lists all five target triples", () => {
|
|
6
|
-
const triples = PLATFORMS.map((p) => p.triple).sort();
|
|
7
|
-
expect(triples).toEqual([
|
|
8
|
-
"aarch64-apple-darwin",
|
|
9
|
-
"aarch64-unknown-linux-gnu",
|
|
10
|
-
"x86_64-apple-darwin",
|
|
11
|
-
"x86_64-pc-windows-msvc",
|
|
12
|
-
"x86_64-unknown-linux-gnu",
|
|
13
|
-
]);
|
|
14
|
-
});
|
|
15
|
-
it("uses the `@dirsql/cli-` npm scope for every sub-package name", () => {
|
|
16
|
-
for (const p of PLATFORMS) {
|
|
17
|
-
expect(p.name).toMatch(/^@dirsql\/cli-/);
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
it("uses the `@dirsql/lib-` npm scope for every napi sub-package", () => {
|
|
21
|
-
for (const p of PLATFORMS) {
|
|
22
|
-
expect(p.libName).toMatch(/^@dirsql\/lib-/);
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
it("gives each platform a distinct libName", () => {
|
|
26
|
-
const libs = PLATFORMS.map((p) => p.libName);
|
|
27
|
-
expect(new Set(libs).size).toBe(libs.length);
|
|
28
|
-
});
|
|
29
|
-
it("pairs tar.xz with unix targets and zip with windows", () => {
|
|
30
|
-
for (const p of PLATFORMS) {
|
|
31
|
-
if (p.os.includes("win32")) {
|
|
32
|
-
expect(p.ext).toBe("zip");
|
|
33
|
-
expect(p.exe).toBe(true);
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
expect(p.ext).toBe("tar.xz");
|
|
37
|
-
expect(p.exe).toBeUndefined();
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
it("declares `libc` only on Linux targets", () => {
|
|
42
|
-
for (const p of PLATFORMS) {
|
|
43
|
-
if (p.os.includes("linux")) {
|
|
44
|
-
expect(p.libc).toEqual(["glibc"]);
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
expect(p.libc).toBeUndefined();
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
it("has distinct names", () => {
|
|
52
|
-
const names = PLATFORMS.map((p) => p.name);
|
|
53
|
-
expect(new Set(names).size).toBe(names.length);
|
|
54
|
-
});
|
|
55
|
-
});
|
|
56
|
-
describe("nodeTriples()", () => {
|
|
57
|
-
it("maps every `${platform}-${arch}` key to its cli-* sub-package", () => {
|
|
58
|
-
const map = nodeTriples();
|
|
59
|
-
expect(Object.keys(map).length).toBe(PLATFORMS.length);
|
|
60
|
-
for (const p of PLATFORMS) {
|
|
61
|
-
expect(map[`${p.nodePlatform}-${p.nodeArch}`]).toBe(p.name);
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
describe("libTriples()", () => {
|
|
66
|
-
it("maps every `${platform}-${arch}` key to its lib-* sub-package", () => {
|
|
67
|
-
const map = libTriples();
|
|
68
|
-
expect(Object.keys(map).length).toBe(PLATFORMS.length);
|
|
69
|
-
for (const p of PLATFORMS) {
|
|
70
|
-
expect(map[`${p.nodePlatform}-${p.nodeArch}`]).toBe(p.libName);
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
});
|
|
74
|
-
describe("librarySlug()", () => {
|
|
75
|
-
it("throws when libName does not start with the `@dirsql/lib-` prefix", () => {
|
|
76
|
-
const bad = {
|
|
77
|
-
...PLATFORMS[0],
|
|
78
|
-
libName: "@dirsql/cli-linux-x64-gnu",
|
|
79
|
-
};
|
|
80
|
-
expect(() => librarySlug(bad)).toThrow("libName @dirsql/cli-linux-x64-gnu missing @dirsql/lib- prefix");
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
|
-
});
|
|
84
|
-
//# sourceMappingURL=platforms.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"platforms.test.js","sourceRoot":"","sources":["../src/platforms.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,SAAS,EAET,UAAU,EACV,WAAW,EACX,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAExB,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YACtD,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;gBACtB,sBAAsB;gBACtB,2BAA2B;gBAC3B,qBAAqB;gBACrB,wBAAwB;gBACxB,0BAA0B;aAC3B,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;YACtE,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC1B,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;YACtE,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC1B,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAChD,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC7C,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;YAC7D,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC1B,IAAI,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC3B,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC1B,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3B,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC7B,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC1B,IAAI,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC3B,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;gBACpC,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;gBACjC,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;YAC5B,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;YACvE,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;YAC1B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACvD,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC1B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;YACvE,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;YACzB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACvD,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC1B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACjE,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;YAC3E,MAAM,GAAG,GAAG;gBACV,GAAG,SAAS,CAAC,CAAC,CAAC;gBACf,OAAO,EAAE,2BAA2B;aACzB,CAAC;YACd,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CACpC,+DAA+D,CAChE,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolveConfig.test.d.ts","sourceRoot":"","sources":["../src/resolveConfig.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,206 +0,0 @@
|
|
|
1
|
-
// Unit tests for `resolveConfig`.
|
|
2
|
-
import { readFileSync } from "node:fs";
|
|
3
|
-
import { describe, expect, it, vi } from "vitest";
|
|
4
|
-
import { resolveConfig } from "./resolveConfig.js";
|
|
5
|
-
// `resolveConfig`'s only effectful collaborator is `readFileSync`; `node:path`
|
|
6
|
-
// and `smol-toml` are pure. Mock fs so the test never touches a real file --
|
|
7
|
-
// each "with a config file" case stubs the TOML body it wants to parse.
|
|
8
|
-
vi.mock("node:fs", async () => ({
|
|
9
|
-
...(await vi.importActual("node:fs")),
|
|
10
|
-
readFileSync: vi.fn(),
|
|
11
|
-
}));
|
|
12
|
-
const noopExtract = () => [];
|
|
13
|
-
// Fixed posix config path. CI is linux, so `dirname(resolve(cfgPath))` is
|
|
14
|
-
// deterministically `/cfg` -- relative config paths resolve against it.
|
|
15
|
-
const cfgPath = "/cfg/.dirsql.toml";
|
|
16
|
-
const cfgDir = "/cfg";
|
|
17
|
-
describe("resolveConfig", () => {
|
|
18
|
-
const writeCfg = (body) => {
|
|
19
|
-
vi.mocked(readFileSync).mockReturnValue(body);
|
|
20
|
-
};
|
|
21
|
-
describe("without a config file", () => {
|
|
22
|
-
it("forwards the root kwarg, defaults everything else", () => {
|
|
23
|
-
expect(resolveConfig({ root: "/abs/data" })).toEqual({
|
|
24
|
-
root: "/abs/data",
|
|
25
|
-
tables: [],
|
|
26
|
-
ignore: [],
|
|
27
|
-
persist: false,
|
|
28
|
-
persistPath: null,
|
|
29
|
-
});
|
|
30
|
-
});
|
|
31
|
-
it("normalizes programmatic strict: undefined to false", () => {
|
|
32
|
-
const out = resolveConfig({
|
|
33
|
-
root: "/r",
|
|
34
|
-
tables: [{ ddl: "x", glob: "*", extract: noopExtract }],
|
|
35
|
-
});
|
|
36
|
-
expect(out.tables).toEqual([{ ddl: "x", glob: "*", strict: false }]);
|
|
37
|
-
});
|
|
38
|
-
it("normalizes programmatic strict: true to true", () => {
|
|
39
|
-
const out = resolveConfig({
|
|
40
|
-
root: "/r",
|
|
41
|
-
tables: [{ ddl: "x", glob: "*", extract: noopExtract, strict: true }],
|
|
42
|
-
});
|
|
43
|
-
expect(out.tables).toEqual([{ ddl: "x", glob: "*", strict: true }]);
|
|
44
|
-
});
|
|
45
|
-
it("normalizes programmatic strict: false to false", () => {
|
|
46
|
-
const out = resolveConfig({
|
|
47
|
-
root: "/r",
|
|
48
|
-
tables: [{ ddl: "x", glob: "*", extract: noopExtract, strict: false }],
|
|
49
|
-
});
|
|
50
|
-
expect(out.tables).toEqual([{ ddl: "x", glob: "*", strict: false }]);
|
|
51
|
-
});
|
|
52
|
-
it("forwards the ignore kwarg", () => {
|
|
53
|
-
const out = resolveConfig({ root: "/r", ignore: ["**/skip/**"] });
|
|
54
|
-
expect(out.ignore).toEqual(["**/skip/**"]);
|
|
55
|
-
});
|
|
56
|
-
it("forwards persist + persistPath kwargs", () => {
|
|
57
|
-
const out = resolveConfig({
|
|
58
|
-
root: "/r",
|
|
59
|
-
persist: true,
|
|
60
|
-
persistPath: "/abs/cache.db",
|
|
61
|
-
});
|
|
62
|
-
expect(out.persist).toBe(true);
|
|
63
|
-
expect(out.persistPath).toBe("/abs/cache.db");
|
|
64
|
-
});
|
|
65
|
-
});
|
|
66
|
-
describe("with a config file", () => {
|
|
67
|
-
it("resolves a relative [dirsql].root against the config file's parent", () => {
|
|
68
|
-
writeCfg('[dirsql]\nroot = "data"\n');
|
|
69
|
-
const out = resolveConfig({ config: cfgPath });
|
|
70
|
-
expect(out.root).toBe("/cfg/data");
|
|
71
|
-
});
|
|
72
|
-
it("preserves an absolute [dirsql].root verbatim", () => {
|
|
73
|
-
writeCfg('[dirsql]\nroot = "/other/abs/path"\n');
|
|
74
|
-
const out = resolveConfig({ config: cfgPath });
|
|
75
|
-
expect(out.root).toBe("/other/abs/path");
|
|
76
|
-
});
|
|
77
|
-
it("defaults the root to the config file's parent when [dirsql].root is absent", () => {
|
|
78
|
-
writeCfg('[dirsql]\nignore = ["x"]\n');
|
|
79
|
-
const out = resolveConfig({ config: cfgPath });
|
|
80
|
-
expect(out.root).toBe(cfgDir);
|
|
81
|
-
});
|
|
82
|
-
it("defaults the root to the config file's parent when [dirsql] is absent entirely", () => {
|
|
83
|
-
writeCfg('[[table]]\nddl = "CREATE TABLE t (x TEXT)"\nglob = "*.json"\n');
|
|
84
|
-
const out = resolveConfig({ config: cfgPath });
|
|
85
|
-
expect(out.root).toBe(cfgDir);
|
|
86
|
-
});
|
|
87
|
-
it("handles a non-string [dirsql].root by falling back to the config dir", () => {
|
|
88
|
-
writeCfg("[dirsql]\nroot = 42\n");
|
|
89
|
-
const out = resolveConfig({ config: cfgPath });
|
|
90
|
-
expect(out.root).toBe(cfgDir);
|
|
91
|
-
});
|
|
92
|
-
it("reads [[table]] entries with strict defaulting to false", () => {
|
|
93
|
-
writeCfg('[[table]]\nddl = "CREATE TABLE t (x TEXT)"\nglob = "*.json"\n');
|
|
94
|
-
const out = resolveConfig({ config: cfgPath });
|
|
95
|
-
expect(out.tables).toEqual([
|
|
96
|
-
{ ddl: "CREATE TABLE t (x TEXT)", glob: "*.json", strict: false },
|
|
97
|
-
]);
|
|
98
|
-
});
|
|
99
|
-
it("respects strict = true on a [[table]] entry", () => {
|
|
100
|
-
writeCfg('[[table]]\nddl = "CREATE TABLE t (x TEXT)"\nglob = "*.json"\nstrict = true\n');
|
|
101
|
-
const out = resolveConfig({ config: cfgPath });
|
|
102
|
-
expect(out.tables).toEqual([
|
|
103
|
-
{ ddl: "CREATE TABLE t (x TEXT)", glob: "*.json", strict: true },
|
|
104
|
-
]);
|
|
105
|
-
});
|
|
106
|
-
it("returns an empty tables list when no [[table]] entries are declared", () => {
|
|
107
|
-
writeCfg("[dirsql]\nignore = []\n");
|
|
108
|
-
const out = resolveConfig({ config: cfgPath });
|
|
109
|
-
expect(out.tables).toEqual([]);
|
|
110
|
-
});
|
|
111
|
-
it("returns an empty tables list when `table` exists but isn't an array", () => {
|
|
112
|
-
// TOML's `[table]` (singular table header) yields a non-array value
|
|
113
|
-
// for the same key name. resolveConfig must defensively coerce.
|
|
114
|
-
writeCfg('[table]\nddl = "CREATE TABLE t (x TEXT)"\nglob = "*.json"\n');
|
|
115
|
-
const out = resolveConfig({ config: cfgPath });
|
|
116
|
-
expect(out.tables).toEqual([]);
|
|
117
|
-
});
|
|
118
|
-
it("forwards [dirsql].ignore", () => {
|
|
119
|
-
writeCfg('[dirsql]\nignore = ["node_modules/**"]\n');
|
|
120
|
-
const out = resolveConfig({ config: cfgPath });
|
|
121
|
-
expect(out.ignore).toEqual(["node_modules/**"]);
|
|
122
|
-
});
|
|
123
|
-
it("flips persist on when [dirsql].persist = true", () => {
|
|
124
|
-
writeCfg("[dirsql]\npersist = true\n");
|
|
125
|
-
const out = resolveConfig({ config: cfgPath });
|
|
126
|
-
expect(out.persist).toBe(true);
|
|
127
|
-
});
|
|
128
|
-
it("leaves persist off when [dirsql].persist is absent", () => {
|
|
129
|
-
writeCfg('[dirsql]\nignore = ["x"]\n');
|
|
130
|
-
const out = resolveConfig({ config: cfgPath });
|
|
131
|
-
expect(out.persist).toBe(false);
|
|
132
|
-
});
|
|
133
|
-
it("resolves a relative [dirsql].persist_path against the config dir", () => {
|
|
134
|
-
writeCfg('[dirsql]\npersist = true\npersist_path = "cache/dirsql.db"\n');
|
|
135
|
-
const out = resolveConfig({ config: cfgPath });
|
|
136
|
-
expect(out.persistPath).toBe("/cfg/cache/dirsql.db");
|
|
137
|
-
});
|
|
138
|
-
it("preserves an absolute [dirsql].persist_path verbatim", () => {
|
|
139
|
-
writeCfg('[dirsql]\npersist_path = "/var/cache/dirsql.db"\n');
|
|
140
|
-
const out = resolveConfig({ config: cfgPath });
|
|
141
|
-
expect(out.persistPath).toBe("/var/cache/dirsql.db");
|
|
142
|
-
});
|
|
143
|
-
it("leaves persistPath null when [dirsql].persist_path is absent", () => {
|
|
144
|
-
writeCfg('[dirsql]\nignore = ["x"]\n');
|
|
145
|
-
const out = resolveConfig({ config: cfgPath });
|
|
146
|
-
expect(out.persistPath).toBeNull();
|
|
147
|
-
});
|
|
148
|
-
it("ignores a non-string [dirsql].persist_path", () => {
|
|
149
|
-
writeCfg("[dirsql]\npersist_path = 42\n");
|
|
150
|
-
const out = resolveConfig({ config: cfgPath });
|
|
151
|
-
expect(out.persistPath).toBeNull();
|
|
152
|
-
});
|
|
153
|
-
});
|
|
154
|
-
describe("merging kwargs with a config file", () => {
|
|
155
|
-
it("kwarg root wins over [dirsql].root", () => {
|
|
156
|
-
writeCfg('[dirsql]\nroot = "from-config"\n');
|
|
157
|
-
const out = resolveConfig({ root: "/from-kwarg", config: cfgPath });
|
|
158
|
-
expect(out.root).toBe("/from-kwarg");
|
|
159
|
-
});
|
|
160
|
-
it("concatenates programmatic tables then config tables, in order", () => {
|
|
161
|
-
writeCfg('[[table]]\nddl = "CREATE TABLE c (x TEXT)"\nglob = "c/*"\n');
|
|
162
|
-
const out = resolveConfig({
|
|
163
|
-
root: "/r",
|
|
164
|
-
tables: [{ ddl: "p-ddl", glob: "p/*", extract: noopExtract }],
|
|
165
|
-
config: cfgPath,
|
|
166
|
-
});
|
|
167
|
-
expect(out.tables.map((t) => t.ddl)).toEqual([
|
|
168
|
-
"p-ddl",
|
|
169
|
-
"CREATE TABLE c (x TEXT)",
|
|
170
|
-
]);
|
|
171
|
-
});
|
|
172
|
-
it("concatenates ignore kwargs first, then config ignore", () => {
|
|
173
|
-
writeCfg('[dirsql]\nignore = ["from-config/**"]\n');
|
|
174
|
-
const out = resolveConfig({
|
|
175
|
-
root: "/r",
|
|
176
|
-
ignore: ["from-kwarg/**"],
|
|
177
|
-
config: cfgPath,
|
|
178
|
-
});
|
|
179
|
-
expect(out.ignore).toEqual(["from-kwarg/**", "from-config/**"]);
|
|
180
|
-
});
|
|
181
|
-
it("OR-s persist across kwarg and config (kwarg true, config absent)", () => {
|
|
182
|
-
writeCfg('[dirsql]\nignore = ["x"]\n');
|
|
183
|
-
const out = resolveConfig({
|
|
184
|
-
root: "/r",
|
|
185
|
-
persist: true,
|
|
186
|
-
config: cfgPath,
|
|
187
|
-
});
|
|
188
|
-
expect(out.persist).toBe(true);
|
|
189
|
-
});
|
|
190
|
-
it("OR-s persist across kwarg and config (kwarg absent, config true)", () => {
|
|
191
|
-
writeCfg("[dirsql]\npersist = true\n");
|
|
192
|
-
const out = resolveConfig({ root: "/r", config: cfgPath });
|
|
193
|
-
expect(out.persist).toBe(true);
|
|
194
|
-
});
|
|
195
|
-
it("kwarg persistPath wins over config persist_path", () => {
|
|
196
|
-
writeCfg('[dirsql]\npersist_path = "from-config.db"\n');
|
|
197
|
-
const out = resolveConfig({
|
|
198
|
-
root: "/r",
|
|
199
|
-
persistPath: "/from-kwarg.db",
|
|
200
|
-
config: cfgPath,
|
|
201
|
-
});
|
|
202
|
-
expect(out.persistPath).toBe("/from-kwarg.db");
|
|
203
|
-
});
|
|
204
|
-
});
|
|
205
|
-
});
|
|
206
|
-
//# sourceMappingURL=resolveConfig.test.js.map
|