Skip to main content
Glama
config.test.ts2.59 kB
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { type LogLevel, log } from "../../src/config"; describe("log", () => { let consoleErrorSpy: ReturnType<typeof vi.spyOn>; beforeEach(() => { consoleErrorSpy = vi.spyOn(console, "error").mockImplementation(() => {}); }); afterEach(() => { consoleErrorSpy.mockRestore(); }); describe("log level filtering", () => { // The config is loaded at module init with LOG_LEVEL=error from setup.ts // So only error level should pass through it("filters out debug messages when log level is error", () => { log("debug", "debug message"); expect(consoleErrorSpy).not.toHaveBeenCalled(); }); it("filters out info messages when log level is error", () => { log("info", "info message"); expect(consoleErrorSpy).not.toHaveBeenCalled(); }); it("filters out warn messages when log level is error", () => { log("warn", "warn message"); expect(consoleErrorSpy).not.toHaveBeenCalled(); }); it("allows error messages when log level is error", () => { log("error", "error message"); expect(consoleErrorSpy).toHaveBeenCalledWith( "[grammarly-mcp:error]", "error message", ); }); }); describe("output format", () => { it("includes level prefix in output", () => { log("error", "test message"); expect(consoleErrorSpy).toHaveBeenCalledWith( "[grammarly-mcp:error]", "test message", ); }); it("includes extra data when provided", () => { const extra = { key: "value", count: 42 }; log("error", "test message", extra); expect(consoleErrorSpy).toHaveBeenCalledWith( "[grammarly-mcp:error]", "test message", extra, ); }); it("omits extra parameter when undefined", () => { log("error", "test message", undefined); expect(consoleErrorSpy).toHaveBeenCalledWith( "[grammarly-mcp:error]", "test message", ); }); }); describe("writes to stderr", () => { it("uses console.error for output", () => { log("error", "stderr test"); expect(consoleErrorSpy).toHaveBeenCalled(); }); }); }); describe("log level hierarchy", () => { // These tests document the expected log level ordering const levels: LogLevel[] = ["debug", "info", "warn", "error"]; it.each([ ["debug", 0], ["info", 1], ["warn", 2], ["error", 3], ] as const)("%s has index %d in hierarchy", (level, expectedIndex) => { expect(levels.indexOf(level)).toBe(expectedIndex); }); it("levels array has correct order for filtering", () => { expect(levels).toEqual(["debug", "info", "warn", "error"]); }); });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/BjornMelin/grammarly-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server