@mcptoolshop/venvkit 0.2.0

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.
Files changed (63) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +249 -0
  3. package/dist/doctorLite.d.ts +75 -0
  4. package/dist/doctorLite.d.ts.map +1 -0
  5. package/dist/doctorLite.js +705 -0
  6. package/dist/doctorLite.js.map +1 -0
  7. package/dist/doctorLite.test.d.ts +2 -0
  8. package/dist/doctorLite.test.d.ts.map +1 -0
  9. package/dist/doctorLite.test.js +268 -0
  10. package/dist/doctorLite.test.js.map +1 -0
  11. package/dist/index.d.ts +6 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +6 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/integration.test.d.ts +2 -0
  16. package/dist/integration.test.d.ts.map +1 -0
  17. package/dist/integration.test.js +245 -0
  18. package/dist/integration.test.js.map +1 -0
  19. package/dist/mapRender.d.ts +105 -0
  20. package/dist/mapRender.d.ts.map +1 -0
  21. package/dist/mapRender.js +718 -0
  22. package/dist/mapRender.js.map +1 -0
  23. package/dist/mapRender.test.d.ts +2 -0
  24. package/dist/mapRender.test.d.ts.map +1 -0
  25. package/dist/mapRender.test.js +571 -0
  26. package/dist/mapRender.test.js.map +1 -0
  27. package/dist/map_cli.d.ts +3 -0
  28. package/dist/map_cli.d.ts.map +1 -0
  29. package/dist/map_cli.js +278 -0
  30. package/dist/map_cli.js.map +1 -0
  31. package/dist/map_cli.test.d.ts +2 -0
  32. package/dist/map_cli.test.d.ts.map +1 -0
  33. package/dist/map_cli.test.js +276 -0
  34. package/dist/map_cli.test.js.map +1 -0
  35. package/dist/runLog.d.ts +71 -0
  36. package/dist/runLog.d.ts.map +1 -0
  37. package/dist/runLog.js +98 -0
  38. package/dist/runLog.js.map +1 -0
  39. package/dist/runLog.test.d.ts +2 -0
  40. package/dist/runLog.test.d.ts.map +1 -0
  41. package/dist/runLog.test.js +327 -0
  42. package/dist/runLog.test.js.map +1 -0
  43. package/dist/scanEnvPaths.d.ts +18 -0
  44. package/dist/scanEnvPaths.d.ts.map +1 -0
  45. package/dist/scanEnvPaths.js +174 -0
  46. package/dist/scanEnvPaths.js.map +1 -0
  47. package/dist/scanEnvPaths.test.d.ts +2 -0
  48. package/dist/scanEnvPaths.test.d.ts.map +1 -0
  49. package/dist/scanEnvPaths.test.js +250 -0
  50. package/dist/scanEnvPaths.test.js.map +1 -0
  51. package/dist/taskCluster.d.ts +62 -0
  52. package/dist/taskCluster.d.ts.map +1 -0
  53. package/dist/taskCluster.js +180 -0
  54. package/dist/taskCluster.js.map +1 -0
  55. package/dist/taskCluster.test.d.ts +2 -0
  56. package/dist/taskCluster.test.d.ts.map +1 -0
  57. package/dist/taskCluster.test.js +375 -0
  58. package/dist/taskCluster.test.js.map +1 -0
  59. package/dist/vitest.config.d.ts +3 -0
  60. package/dist/vitest.config.d.ts.map +1 -0
  61. package/dist/vitest.config.js +8 -0
  62. package/dist/vitest.config.js.map +1 -0
  63. package/package.json +58 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctorLite.js","sourceRoot":"","sources":["../doctorLite.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=doctorLite.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctorLite.test.d.ts","sourceRoot":"","sources":["../doctorLite.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,268 @@
1
+ // venvkit/doctorLite.test.ts
2
+ // Unit tests for doctorLite using injectable runner for deterministic testing
3
+ import { describe, it, expect, vi } from "vitest";
4
+ import { doctorLite } from "./doctorLite.js";
5
+ // Helper to create RunResult
6
+ function ok(stdout, stderr = "") {
7
+ return { ok: true, exitCode: 0, stdout, stderr, timedOut: false };
8
+ }
9
+ function fail(exitCode, stderr, stdout = "") {
10
+ return { ok: false, exitCode, stdout, stderr, timedOut: false };
11
+ }
12
+ function timeout() {
13
+ return { ok: false, exitCode: null, stdout: "", stderr: "", timedOut: true };
14
+ }
15
+ // Common canned responses
16
+ const FACTS_HEALTHY_VENV = JSON.stringify({
17
+ version: "3.11.5 (main, Aug 24 2023)",
18
+ version_info: [3, 11, 5, "final", 0],
19
+ executable: "C:\\repo\\.venv\\Scripts\\python.exe",
20
+ prefix: "C:\\repo\\.venv",
21
+ base_prefix: "C:\\Python311",
22
+ bits: 64,
23
+ machine: "AMD64",
24
+ os: "windows",
25
+ py_path: ["C:\\repo\\.venv\\Scripts", "C:\\repo\\.venv\\Lib\\site-packages"],
26
+ enable_user_site: false,
27
+ user_site: "C:\\Users\\test\\AppData\\Roaming\\Python\\Python311\\site-packages",
28
+ });
29
+ const FACTS_BASE_PYTHON = JSON.stringify({
30
+ version: "3.11.5 (main, Aug 24 2023)",
31
+ version_info: [3, 11, 5, "final", 0],
32
+ executable: "C:\\Python311\\python.exe",
33
+ prefix: "C:\\Python311",
34
+ base_prefix: "C:\\Python311", // same as prefix = not a venv
35
+ bits: 64,
36
+ machine: "AMD64",
37
+ os: "windows",
38
+ py_path: ["C:\\Python311\\Lib\\site-packages"],
39
+ enable_user_site: true,
40
+ user_site: "C:\\Users\\test\\AppData\\Roaming\\Python\\Python311\\site-packages",
41
+ });
42
+ const FACTS_32BIT = JSON.stringify({
43
+ version: "3.11.5 (main, Aug 24 2023)",
44
+ version_info: [3, 11, 5, "final", 0],
45
+ executable: "C:\\Python311-32\\python.exe",
46
+ prefix: "C:\\Python311-32",
47
+ base_prefix: "C:\\Python311-32",
48
+ bits: 32,
49
+ machine: "x86",
50
+ os: "windows",
51
+ py_path: [],
52
+ enable_user_site: false,
53
+ user_site: "",
54
+ });
55
+ const PIP_VERSION_OK = "pip 23.2.1 from C:\\repo\\.venv\\Lib\\site-packages\\pip (python 3.11)";
56
+ const PIP_VERSION_MISMATCH = "pip 23.2.1 from C:\\repo\\.venv\\Lib\\site-packages\\pip (python 3.10)";
57
+ const IMPORTS_ALL_OK = JSON.stringify({
58
+ imports: [
59
+ { module: "ssl", ok: true },
60
+ { module: "ctypes", ok: true },
61
+ { module: "sqlite3", ok: true },
62
+ ],
63
+ });
64
+ const IMPORTS_SSL_FAIL = JSON.stringify({
65
+ imports: [
66
+ { module: "ssl", ok: false, err: "ImportError('DLL load failed')", tb: "..." },
67
+ { module: "ctypes", ok: true },
68
+ { module: "sqlite3", ok: true },
69
+ ],
70
+ });
71
+ const IMPORTS_DLL_FAIL = JSON.stringify({
72
+ imports: [
73
+ { module: "ssl", ok: true },
74
+ { module: "ctypes", ok: true },
75
+ { module: "sqlite3", ok: true },
76
+ { module: "torch", ok: false, err: "OSError('DLL load failed while importing torch')", tb: "..." },
77
+ ],
78
+ });
79
+ const IMPORTS_ABI_MISMATCH = JSON.stringify({
80
+ imports: [
81
+ { module: "ssl", ok: true },
82
+ { module: "ctypes", ok: true },
83
+ { module: "sqlite3", ok: true },
84
+ {
85
+ module: "numpy",
86
+ ok: false,
87
+ err: "ImportError('mach-o file, but is an incompatible architecture')",
88
+ tb: "...",
89
+ },
90
+ ],
91
+ });
92
+ // Helper to create a mock runner with specific responses
93
+ function createMockRunner(overrides) {
94
+ return vi.fn(async (cmd, args) => {
95
+ const arg = args.join(" ");
96
+ // Order matters - more specific checks first
97
+ if (arg.includes("print('ok')"))
98
+ return ok("ok\n");
99
+ // pip --version
100
+ if (arg.includes("-m pip --version") || (arg.includes("pip") && arg.includes("--version"))) {
101
+ return overrides.pip ?? ok(PIP_VERSION_OK);
102
+ }
103
+ // pip check (strict mode)
104
+ if (arg.includes("-m pip check") || (arg.includes("pip") && arg.includes("check"))) {
105
+ return overrides.pipCheck ?? ok("");
106
+ }
107
+ // Import probe - check for importlib import
108
+ if (arg.includes("importlib.import_module")) {
109
+ return ok(overrides.imports ?? IMPORTS_ALL_OK);
110
+ }
111
+ // HTTPS probe - check for urllib
112
+ if (arg.includes("urllib.request.urlopen")) {
113
+ return ok(overrides.https ?? JSON.stringify({ ok: true, status: 200 }));
114
+ }
115
+ // Multi-version scan - check for importlib.metadata
116
+ if (arg.includes("importlib.metadata") || arg.includes("md.distributions")) {
117
+ return ok(overrides.multiVersion ?? JSON.stringify({ multi: {}, sys_path_top: [] }));
118
+ }
119
+ // Facts - this is the fallback for json.dumps (sys, platform, site)
120
+ if (arg.includes("sys.version") || arg.includes("platform.machine")) {
121
+ return ok(overrides.facts ?? FACTS_HEALTHY_VENV);
122
+ }
123
+ return fail(1, "unknown command: " + arg);
124
+ });
125
+ }
126
+ describe("doctorLite", () => {
127
+ describe("healthy environment", () => {
128
+ it("returns good status for healthy venv (subprocess checks only)", async () => {
129
+ // Note: This test uses a fake venv path, so pyvenv.cfg validation will fail.
130
+ // We use a base python config (NOT_A_VENV) to skip pyvenv.cfg validation.
131
+ // For full integration testing with real venvs, use a real path.
132
+ const runner = createMockRunner({ facts: FACTS_BASE_PYTHON });
133
+ const report = await doctorLite({ pythonPath: "C:\\Python311\\python.exe" }, runner);
134
+ // Base python gets NOT_A_VENV (info, penalty 10) + USER_SITE_ENABLED (warn, penalty 10)
135
+ // Score: 100 - 10 - 10 = 80, which is "warn" status
136
+ expect(report.findings.filter((f) => f.severity === "bad")).toHaveLength(0);
137
+ expect(report.score).toBeGreaterThanOrEqual(70);
138
+ });
139
+ it("healthy venv subprocess checks pass (ignoring pyvenv.cfg)", async () => {
140
+ const runner = createMockRunner({});
141
+ const report = await doctorLite({ pythonPath: "C:\\repo\\.venv\\Scripts\\python.exe" }, runner);
142
+ // Since the venv path doesn't exist, pyvenv.cfg validation fails (penalty 25).
143
+ // But all subprocess-based checks pass - no bad findings from subprocess probes.
144
+ const subprocessFindings = report.findings.filter((f) => f.code !== "PYVENV_CFG_INVALID");
145
+ expect(subprocessFindings.filter((f) => f.severity === "bad")).toHaveLength(0);
146
+ expect(subprocessFindings.filter((f) => f.severity === "warn")).toHaveLength(0);
147
+ });
148
+ });
149
+ describe("python execution failures", () => {
150
+ it("detects missing python executable", async () => {
151
+ const runner = vi.fn(async () => fail(1, "spawn ENOENT"));
152
+ const report = await doctorLite({ pythonPath: "/nonexistent/python" }, runner);
153
+ expect(report.status).toBe("bad");
154
+ expect(report.score).toBe(0);
155
+ expect(report.findings.some((f) => f.code === "PYTHON_EXEC_MISSING")).toBe(true);
156
+ });
157
+ it("detects timeout", async () => {
158
+ const runner = vi.fn(async () => timeout());
159
+ const report = await doctorLite({ pythonPath: "/slow/python" }, runner);
160
+ expect(report.status).toBe("bad");
161
+ expect(report.findings.some((f) => f.code === "PYTHON_EXEC_MISSING")).toBe(true);
162
+ expect(report.findings[0]?.evidence?.timedOut).toBe(true);
163
+ });
164
+ });
165
+ describe("venv detection", () => {
166
+ it("detects non-venv interpreter", async () => {
167
+ const runner = createMockRunner({ facts: FACTS_BASE_PYTHON });
168
+ const report = await doctorLite({ pythonPath: "C:\\Python311\\python.exe" }, runner);
169
+ expect(report.findings.some((f) => f.code === "NOT_A_VENV")).toBe(true);
170
+ // NOT_A_VENV is info severity, so status might still be good
171
+ expect(report.findings.find((f) => f.code === "NOT_A_VENV")?.severity).toBe("info");
172
+ });
173
+ });
174
+ describe("architecture checks", () => {
175
+ it("detects arch mismatch when 64-bit required but 32-bit found", async () => {
176
+ const runner = createMockRunner({ facts: FACTS_32BIT });
177
+ const report = await doctorLite({ pythonPath: "C:\\Python311-32\\python.exe", requireX64: true }, runner);
178
+ expect(report.status).toBe("bad");
179
+ expect(report.score).toBeLessThanOrEqual(15); // clamped for ARCH_MISMATCH
180
+ expect(report.findings.some((f) => f.code === "ARCH_MISMATCH")).toBe(true);
181
+ });
182
+ it("does not flag arch when requireX64 is false", async () => {
183
+ const runner = createMockRunner({ facts: FACTS_32BIT });
184
+ const report = await doctorLite({ pythonPath: "C:\\Python311-32\\python.exe", requireX64: false }, runner);
185
+ expect(report.findings.some((f) => f.code === "ARCH_MISMATCH")).toBe(false);
186
+ });
187
+ });
188
+ describe("pip checks", () => {
189
+ it("detects pip missing", async () => {
190
+ const runner = createMockRunner({ pip: fail(1, "No module named pip") });
191
+ const report = await doctorLite({ pythonPath: "C:\\repo\\.venv\\Scripts\\python.exe" }, runner);
192
+ expect(report.findings.some((f) => f.code === "PIP_MISSING")).toBe(true);
193
+ });
194
+ it("detects pip version mismatch", async () => {
195
+ const runner = createMockRunner({ pip: ok(PIP_VERSION_MISMATCH) });
196
+ const report = await doctorLite({ pythonPath: "C:\\repo\\.venv\\Scripts\\python.exe" }, runner);
197
+ expect(report.findings.some((f) => f.code === "PIP_POINTS_TO_OTHER_PYTHON")).toBe(true);
198
+ });
199
+ });
200
+ describe("import failures", () => {
201
+ it("detects SSL broken", async () => {
202
+ const runner = createMockRunner({ imports: IMPORTS_SSL_FAIL });
203
+ const report = await doctorLite({ pythonPath: "C:\\repo\\.venv\\Scripts\\python.exe" }, runner);
204
+ expect(report.findings.some((f) => f.code === "SSL_BROKEN")).toBe(true);
205
+ });
206
+ it("detects DLL load failure", async () => {
207
+ const runner = createMockRunner({ imports: IMPORTS_DLL_FAIL });
208
+ const report = await doctorLite({ pythonPath: "C:\\repo\\.venv\\Scripts\\python.exe", requiredModules: ["torch"] }, runner);
209
+ expect(report.status).toBe("bad");
210
+ expect(report.score).toBeLessThanOrEqual(25); // clamped for DLL_LOAD_FAIL
211
+ expect(report.findings.some((f) => f.code === "DLL_LOAD_FAIL")).toBe(true);
212
+ });
213
+ it("detects ABI mismatch (macOS ARM)", async () => {
214
+ const runner = createMockRunner({ imports: IMPORTS_ABI_MISMATCH });
215
+ const report = await doctorLite({ pythonPath: "C:\\repo\\.venv\\Scripts\\python.exe", requiredModules: ["numpy"] }, runner);
216
+ expect(report.status).toBe("bad");
217
+ expect(report.score).toBeLessThanOrEqual(25); // clamped for ABI_MISMATCH
218
+ expect(report.findings.some((f) => f.code === "ABI_MISMATCH")).toBe(true);
219
+ });
220
+ });
221
+ describe("HTTPS probe", () => {
222
+ it("detects cert verification failure", async () => {
223
+ const runner = createMockRunner({
224
+ https: JSON.stringify({
225
+ ok: false,
226
+ err: "SSLError('certificate_verify_failed')",
227
+ tb: "...",
228
+ }),
229
+ });
230
+ const report = await doctorLite({ pythonPath: "C:\\repo\\.venv\\Scripts\\python.exe", httpsProbe: true }, runner);
231
+ expect(report.findings.some((f) => f.code === "CERT_STORE_FAIL")).toBe(true);
232
+ const finding = report.findings.find((f) => f.code === "CERT_STORE_FAIL");
233
+ expect(finding?.evidence?.certish).toBe(true);
234
+ });
235
+ it("detects network failure (non-cert)", async () => {
236
+ const runner = createMockRunner({
237
+ https: JSON.stringify({
238
+ ok: false,
239
+ err: "URLError('getaddrinfo failed')",
240
+ tb: "...",
241
+ }),
242
+ });
243
+ const report = await doctorLite({ pythonPath: "C:\\repo\\.venv\\Scripts\\python.exe", httpsProbe: true }, runner);
244
+ expect(report.findings.some((f) => f.code === "CERT_STORE_FAIL")).toBe(true);
245
+ const finding = report.findings.find((f) => f.code === "CERT_STORE_FAIL");
246
+ expect(finding?.evidence?.certish).toBe(false);
247
+ expect(finding?.why).toContain("Network/TLS");
248
+ });
249
+ });
250
+ describe("scoring", () => {
251
+ it("clamps score for hard failures", async () => {
252
+ const runner = createMockRunner({ facts: FACTS_32BIT });
253
+ const report = await doctorLite({ pythonPath: "C:\\Python311-32\\python.exe", requireX64: true }, runner);
254
+ // ARCH_MISMATCH penalty is 80, but score is clamped to max 15
255
+ expect(report.score).toBeLessThanOrEqual(15);
256
+ });
257
+ it("accumulates penalties correctly", async () => {
258
+ const runner = createMockRunner({
259
+ facts: FACTS_BASE_PYTHON, // NOT_A_VENV (10) + USER_SITE_ENABLED (10)
260
+ pip: fail(1, "missing"), // PIP_MISSING (25)
261
+ });
262
+ const report = await doctorLite({ pythonPath: "C:\\Python311\\python.exe" }, runner);
263
+ // 100 - 10 (NOT_A_VENV) - 10 (USER_SITE_ENABLED) - 25 (PIP_MISSING) = 55
264
+ expect(report.score).toBe(55);
265
+ });
266
+ });
267
+ });
268
+ //# sourceMappingURL=doctorLite.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctorLite.test.js","sourceRoot":"","sources":["../doctorLite.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export * from "./doctorLite.js";
2
+ export * from "./mapRender.js";
3
+ export * from "./scanEnvPaths.js";
4
+ export * from "./runLog.js";
5
+ export * from "./taskCluster.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ export * from "./doctorLite.js";
2
+ export * from "./mapRender.js";
3
+ export * from "./scanEnvPaths.js";
4
+ export * from "./runLog.js";
5
+ export * from "./taskCluster.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=integration.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration.test.d.ts","sourceRoot":"","sources":["../integration.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,245 @@
1
+ // integration.test.ts
2
+ // End-to-end integration tests for venvkit workflow
3
+ import { describe, it, expect, beforeEach, afterEach } from "vitest";
4
+ import * as fs from "node:fs/promises";
5
+ import * as path from "node:path";
6
+ import * as os from "node:os";
7
+ import { scanEnvPaths } from "./scanEnvPaths.js";
8
+ import { mapRender } from "./mapRender.js";
9
+ import { appendRunLog, readRunLog, summarizeRuns } from "./runLog.js";
10
+ import { clusterRuns, summarizeClusters } from "./taskCluster.js";
11
+ describe("integration", () => {
12
+ let tempDir;
13
+ beforeEach(async () => {
14
+ tempDir = await fs.mkdtemp(path.join(os.tmpdir(), "venvkit-integration-"));
15
+ });
16
+ afterEach(async () => {
17
+ await fs.rm(tempDir, { recursive: true, force: true });
18
+ });
19
+ // Helper to create a mock venv structure
20
+ async function createMockVenv(venvPath) {
21
+ await fs.mkdir(venvPath, { recursive: true });
22
+ await fs.writeFile(path.join(venvPath, "pyvenv.cfg"), "home = C:\\Python311\nversion = 3.11.5\n");
23
+ const binDir = os.platform() === "win32" ? "Scripts" : "bin";
24
+ const pyExe = os.platform() === "win32" ? "python.exe" : "python";
25
+ await fs.mkdir(path.join(venvPath, binDir), { recursive: true });
26
+ await fs.writeFile(path.join(venvPath, binDir, pyExe), "fake python");
27
+ return path.join(venvPath, binDir, pyExe);
28
+ }
29
+ // Helper to create mock doctor report
30
+ function makeReport(pythonPath, opts = {}) {
31
+ return {
32
+ pythonPath,
33
+ ranAt: new Date().toISOString(),
34
+ status: opts.status ?? "good",
35
+ score: opts.score ?? 100,
36
+ summary: "Test report",
37
+ facts: {
38
+ version: "3.11.5 (main)",
39
+ version_info: [3, 11, 5],
40
+ executable: pythonPath,
41
+ prefix: pythonPath.replace(/[/\\](Scripts|bin)[/\\]python(\.exe)?$/, ""),
42
+ base_prefix: opts.basePrefix ?? "C:\\Python311",
43
+ bits: 64,
44
+ machine: "AMD64",
45
+ os: "windows",
46
+ py_path: [],
47
+ enable_user_site: false,
48
+ user_site: "",
49
+ },
50
+ findings: opts.findings ?? [],
51
+ };
52
+ }
53
+ // Helper to create run event
54
+ function makeRunEvent(overrides = {}) {
55
+ return {
56
+ version: "1.0",
57
+ runId: `run_${Math.random().toString(36).slice(2, 10)}`,
58
+ at: overrides.at ?? new Date().toISOString(),
59
+ cwd: tempDir,
60
+ task: overrides.task ?? {
61
+ name: overrides.taskName ?? "pytest",
62
+ command: "pytest tests/",
63
+ args: ["tests/"],
64
+ requirements: {
65
+ packages: ["pytest"],
66
+ tags: ["test"],
67
+ },
68
+ },
69
+ selected: overrides.selected ?? {
70
+ pythonPath: overrides.pythonPath ?? "C:\\repo\\.venv\\Scripts\\python.exe",
71
+ score: 95,
72
+ status: "good",
73
+ },
74
+ outcome: overrides.outcome ?? {
75
+ ok: overrides.ok ?? true,
76
+ exitCode: overrides.ok === false ? 1 : 0,
77
+ durationMs: 1500,
78
+ errorClass: overrides.ok === false ? (overrides.errorClass ?? "RUNTIME_ERROR") : undefined,
79
+ },
80
+ doctor: overrides.doctor,
81
+ };
82
+ }
83
+ describe("scan and doctor workflow", () => {
84
+ it("scans for venvs and creates doctor reports", async () => {
85
+ // Step 1: Create venvs
86
+ const py1 = await createMockVenv(path.join(tempDir, "project1", ".venv"));
87
+ const py2 = await createMockVenv(path.join(tempDir, "project2", ".venv"));
88
+ // Step 2: Scan for venvs
89
+ const scanResult = await scanEnvPaths({
90
+ roots: [tempDir],
91
+ maxDepth: 3,
92
+ includeUserHomeCache: false,
93
+ });
94
+ // Should find our mock venvs
95
+ expect(scanResult.meta.foundVenvs).toBeGreaterThanOrEqual(2);
96
+ // Step 3: Create mock doctor reports (in real usage, would run doctorLite)
97
+ const reports = [
98
+ makeReport(py1, { status: "good", score: 100 }),
99
+ makeReport(py2, { status: "warn", score: 70 }),
100
+ ];
101
+ // Step 4: Render graph
102
+ const renderResult = mapRender(reports, [], { format: "both" });
103
+ expect(renderResult.graph.summary.envCount).toBe(2);
104
+ expect(renderResult.graph.summary.healthy).toBe(1);
105
+ expect(renderResult.graph.summary.warning).toBe(1);
106
+ expect(renderResult.mermaid).toContain("graph TD");
107
+ });
108
+ });
109
+ describe("task clustering workflow", () => {
110
+ it("logs tasks, clusters them, and generates insights", async () => {
111
+ const logPath = path.join(tempDir, "runs.jsonl");
112
+ // Step 1: Log multiple task runs
113
+ const events = [
114
+ makeRunEvent({ taskName: "pytest", ok: true }),
115
+ makeRunEvent({ taskName: "pytest", ok: true }),
116
+ makeRunEvent({ taskName: "pytest", ok: false, errorClass: "IMPORT_ERROR" }),
117
+ makeRunEvent({ taskName: "lint", ok: true }),
118
+ makeRunEvent({ taskName: "lint", ok: true }),
119
+ makeRunEvent({ taskName: "build", ok: false, errorClass: "SSL_BROKEN" }),
120
+ ];
121
+ for (const evt of events) {
122
+ await appendRunLog(logPath, evt);
123
+ }
124
+ // Step 2: Read run log
125
+ const runs = await readRunLog(logPath);
126
+ expect(runs).toHaveLength(6);
127
+ // Step 3: Cluster runs
128
+ const clusters = clusterRuns(runs);
129
+ expect(clusters.length).toBe(3); // pytest, lint, build
130
+ const pytestCluster = clusters.find((c) => c.sig.name === "pytest");
131
+ expect(pytestCluster?.runs).toBe(3);
132
+ expect(pytestCluster?.ok).toBe(2);
133
+ expect(pytestCluster?.fail).toBe(1);
134
+ // Step 4: Get summary
135
+ const summary = summarizeClusters(clusters);
136
+ expect(summary.totalTasks).toBe(3);
137
+ expect(summary.totalRuns).toBe(6);
138
+ expect(summary.totalOk).toBe(4);
139
+ expect(summary.totalFail).toBe(2);
140
+ });
141
+ });
142
+ describe("full graph rendering workflow", () => {
143
+ it("combines doctor reports and task runs into unified graph", async () => {
144
+ const logPath = path.join(tempDir, "runs.jsonl");
145
+ // Step 1: Create mock envs and doctor reports
146
+ const py1 = "C:\\project1\\.venv\\Scripts\\python.exe";
147
+ const py2 = "C:\\project2\\.venv\\Scripts\\python.exe";
148
+ const reports = [
149
+ makeReport(py1, { status: "good", score: 95, basePrefix: "C:\\Python311" }),
150
+ makeReport(py2, { status: "bad", score: 30, basePrefix: "C:\\Python311", findings: [
151
+ { code: "SSL_BROKEN", severity: "bad", penalty: 40, what: "ssl", why: "why", fix: [] },
152
+ ] }),
153
+ ];
154
+ // Step 2: Log task runs against these envs
155
+ const events = [
156
+ makeRunEvent({ taskName: "pytest", pythonPath: py1, ok: true }),
157
+ makeRunEvent({ taskName: "pytest", pythonPath: py1, ok: true }),
158
+ makeRunEvent({ taskName: "pytest", pythonPath: py2, ok: false, errorClass: "SSL_BROKEN" }),
159
+ makeRunEvent({ taskName: "pytest", pythonPath: py2, ok: false, errorClass: "SSL_BROKEN" }),
160
+ ];
161
+ for (const evt of events) {
162
+ await appendRunLog(logPath, evt);
163
+ }
164
+ const runs = await readRunLog(logPath);
165
+ // Step 3: Render combined graph
166
+ const result = mapRender(reports, runs, {
167
+ format: "both",
168
+ taskMode: "clustered",
169
+ includeHotEdgeLabels: true,
170
+ });
171
+ // Verify graph structure
172
+ expect(result.graph.summary.envCount).toBe(2);
173
+ expect(result.graph.summary.taskCount).toBe(1); // 1 clustered pytest task
174
+ // Verify insights
175
+ expect(result.insights.length).toBeGreaterThan(0);
176
+ // Verify mermaid output
177
+ expect(result.mermaid).toContain("graph TD");
178
+ expect(result.mermaid).toContain("pytest");
179
+ });
180
+ });
181
+ describe("workflow with logging", () => {
182
+ it("tracks task execution lifecycle through logging", async () => {
183
+ const logPath = path.join(tempDir, "lifecycle.jsonl");
184
+ // Simulate a development session with multiple task runs
185
+ // Session 1: Initial development
186
+ const session1Events = [
187
+ makeRunEvent({ taskName: "lint", ok: true, at: "2024-01-01T10:00:00Z" }),
188
+ makeRunEvent({ taskName: "test", ok: true, at: "2024-01-01T10:01:00Z" }),
189
+ makeRunEvent({ taskName: "build", ok: true, at: "2024-01-01T10:02:00Z" }),
190
+ ];
191
+ for (const evt of session1Events) {
192
+ await appendRunLog(logPath, evt);
193
+ }
194
+ // Session 2: Bug introduced
195
+ const session2Events = [
196
+ makeRunEvent({ taskName: "lint", ok: true, at: "2024-01-02T10:00:00Z" }),
197
+ makeRunEvent({ taskName: "test", ok: false, errorClass: "RUNTIME_ERROR", at: "2024-01-02T10:01:00Z" }),
198
+ makeRunEvent({ taskName: "build", ok: false, errorClass: "BUILD_FAIL", at: "2024-01-02T10:02:00Z" }),
199
+ ];
200
+ for (const evt of session2Events) {
201
+ await appendRunLog(logPath, evt);
202
+ }
203
+ // Read all logs
204
+ const runs = await readRunLog(logPath);
205
+ expect(runs).toHaveLength(6);
206
+ // Summarize
207
+ const summary = summarizeRuns(runs);
208
+ expect(summary.total).toBe(6);
209
+ expect(summary.passed).toBe(4);
210
+ expect(summary.failed).toBe(2);
211
+ // Task-level summary
212
+ expect(summary.byTask.get("lint")).toEqual({ passed: 2, failed: 0 });
213
+ expect(summary.byTask.get("test")).toEqual({ passed: 1, failed: 1 });
214
+ expect(summary.byTask.get("build")).toEqual({ passed: 1, failed: 1 });
215
+ });
216
+ });
217
+ describe("CLI integration", () => {
218
+ it("produces all expected output files", async () => {
219
+ // This test verifies the expected output structure from CLI
220
+ // without actually running the CLI (which would require real Python envs)
221
+ const outDir = path.join(tempDir, "output");
222
+ await fs.mkdir(outDir, { recursive: true });
223
+ // Create mock outputs as CLI would
224
+ const reports = [makeReport("C:\\project\\.venv\\Scripts\\python.exe")];
225
+ const result = mapRender(reports, [], { format: "both" });
226
+ // Write outputs as CLI would
227
+ await fs.writeFile(path.join(outDir, "venv-map.json"), JSON.stringify(result.graph, null, 2));
228
+ await fs.writeFile(path.join(outDir, "venv-map.mmd"), result.mermaid ?? "");
229
+ await fs.writeFile(path.join(outDir, "reports.json"), JSON.stringify(reports, null, 2));
230
+ await fs.writeFile(path.join(outDir, "insights.json"), JSON.stringify(result.insights, null, 2));
231
+ // Verify all files exist
232
+ const files = await fs.readdir(outDir);
233
+ expect(files).toContain("venv-map.json");
234
+ expect(files).toContain("venv-map.mmd");
235
+ expect(files).toContain("reports.json");
236
+ expect(files).toContain("insights.json");
237
+ // Verify JSON is valid
238
+ const graphJson = JSON.parse(await fs.readFile(path.join(outDir, "venv-map.json"), "utf8"));
239
+ expect(graphJson.summary).toBeDefined();
240
+ expect(graphJson.nodes).toBeDefined();
241
+ expect(graphJson.edges).toBeDefined();
242
+ });
243
+ });
244
+ });
245
+ //# sourceMappingURL=integration.test.js.map