Files
pi-lsp/test/unit/commands.test.ts
Evan Reichard aa7309b363 test: add unit and integration test suite
Add 34 tests (27 unit, 7 integration) using node:test runner:

Unit tests:
- pickServer(), findRoot(), pathToUri(), uriToPath()
- isLspCommand(), listCommands()
- formatHover(), formatDefinition(), formatReferences(), formatDiagnostics()

Integration tests:
- daemon lifecycle (status/stop) on isolated socket
- CLI --no-daemon queries (hover, documentSymbol, diagnostics)

Supporting changes:
- socketPath() honors PI_LSP_SOCKET_PATH env var for test isolation
- test fixtures for valid and broken TypeScript files
- npm test / test:unit / test:integration scripts
2026-04-30 10:36:54 -04:00

35 lines
1.3 KiB
TypeScript

// Commands Unit Tests — isLspCommand(), listCommands().
import { describe, it } from "node:test";
import * as assert from "node:assert/strict";
import { isLspCommand, listCommands } from "../../src/commands.ts";
describe("listCommands", () => {
it("returns all known commands", () => {
const cmds = listCommands();
assert.ok(Array.isArray(cmds));
assert.ok(cmds.includes("hover"));
assert.ok(cmds.includes("definition"));
assert.ok(cmds.includes("references"));
assert.ok(cmds.includes("completion"));
assert.ok(cmds.includes("documentSymbol"));
assert.ok(cmds.includes("diagnostics"));
});
});
describe("isLspCommand", () => {
it("returns true for known commands", () => {
assert.strictEqual(isLspCommand("hover"), true);
assert.strictEqual(isLspCommand("definition"), true);
assert.strictEqual(isLspCommand("references"), true);
assert.strictEqual(isLspCommand("completion"), true);
assert.strictEqual(isLspCommand("documentSymbol"), true);
assert.strictEqual(isLspCommand("diagnostics"), true);
});
it("returns false for unknown strings", () => {
assert.strictEqual(isLspCommand("format"), false);
assert.strictEqual(isLspCommand(""), false);
assert.strictEqual(isLspCommand("hover "), false);
});
});