UNPKG

@notbnull/mcp-cursor-taskmaster

Version:

A project-scoped MCP server requiring explicit --project-dir configuration for task management, memory retrieval, and agentic workflows

94 lines 4.08 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const globals_1 = require("@jest/globals"); const path_1 = __importDefault(require("path")); const fs_1 = __importDefault(require("fs")); // Mock the getProjectDirectory function with the new simplified logic function getProjectDirectory() { const args = process.argv; const projectDirIndex = args.findIndex((arg) => arg === "--project-dir"); if (projectDirIndex === -1 || projectDirIndex + 1 >= args.length) { console.error("Error: --project-dir argument is required"); console.error("Usage: node dist/index.js --project-dir <project-directory> [--enable-approval-ui]"); process.exit(1); } const projectDir = args[projectDirIndex + 1]; if (!fs_1.default.existsSync(projectDir)) { console.error(`Error: Project directory does not exist: ${projectDir}`); process.exit(1); } const resolvedDir = path_1.default.resolve(projectDir); console.error(`Cursor Taskmaster: Using project directory: ${resolvedDir}`); return resolvedDir; } // Mock the isApprovalUIEnabled function function isApprovalUIEnabled() { const args = process.argv; return args.includes("--enable-approval-ui"); } (0, globals_1.describe)("Project Directory Detection", () => { const originalArgv = process.argv; const originalExit = process.exit; let exitCode; (0, globals_1.beforeEach)(() => { process.argv = [...originalArgv]; exitCode = undefined; // Mock process.exit to capture exit calls instead of actually exiting process.exit = jest.fn((code) => { exitCode = code; throw new Error(`Process exit called with code ${code}`); }); }); (0, globals_1.afterEach)(() => { process.argv = originalArgv; process.exit = originalExit; }); (0, globals_1.it)("should require --project-dir argument", () => { process.argv = ["node", "test.js"]; (0, globals_1.expect)(() => getProjectDirectory()).toThrow("Process exit called with code 1"); (0, globals_1.expect)(exitCode).toBe(1); }); (0, globals_1.it)("should detect project directory from valid command line argument", () => { const testDir = path_1.default.join(__dirname, "..", "."); // Use current project directory process.argv = ["node", "test.js", "--project-dir", testDir]; const result = getProjectDirectory(); (0, globals_1.expect)(result).toBe(path_1.default.resolve(testDir)); }); (0, globals_1.it)("should fail if project directory does not exist", () => { const nonExistentDir = path_1.default.join(__dirname, "non-existent-dir"); process.argv = ["node", "test.js", "--project-dir", nonExistentDir]; (0, globals_1.expect)(() => getProjectDirectory()).toThrow("Process exit called with code 1"); (0, globals_1.expect)(exitCode).toBe(1); }); (0, globals_1.it)("should detect approval UI flag when present", () => { process.argv = [ "node", "test.js", "--project-dir", ".", "--enable-approval-ui", ]; const result = isApprovalUIEnabled(); (0, globals_1.expect)(result).toBe(true); }); (0, globals_1.it)("should not detect approval UI flag when absent", () => { process.argv = ["node", "test.js", "--project-dir", "."]; const result = isApprovalUIEnabled(); (0, globals_1.expect)(result).toBe(false); }); (0, globals_1.it)("should handle approval UI flag in different positions", () => { process.argv = [ "node", "test.js", "--enable-approval-ui", "--project-dir", ".", ]; const result = isApprovalUIEnabled(); (0, globals_1.expect)(result).toBe(true); }); }); //# sourceMappingURL=project-detection.test.js.map