| import { describe, expect, it } from "vitest"; |
| import { createEmbeddedPostgresLogBuffer, formatEmbeddedPostgresError } from "./embedded-postgres-error.js"; |
|
|
| describe("formatEmbeddedPostgresError", () => { |
| it("adds a shared-memory hint when initdb logs expose the real cause", () => { |
| const error = formatEmbeddedPostgresError("Postgres init script exited with code 1.", { |
| fallbackMessage: "Failed to initialize embedded PostgreSQL cluster", |
| recentLogs: [ |
| "running bootstrap script ...", |
| "FATAL: could not create shared memory segment: Cannot allocate memory", |
| "DETAIL: Failed system call was shmget(key=123, size=56, 03600).", |
| ], |
| }); |
|
|
| expect(error.message).toContain("could not allocate shared memory"); |
| expect(error.message).toContain("kern.sysv.shm"); |
| expect(error.message).toContain("could not create shared memory segment"); |
| }); |
|
|
| it("keeps only recent non-empty log lines in the collector", () => { |
| const buffer = createEmbeddedPostgresLogBuffer(2); |
| buffer.append("line one\n\n"); |
| buffer.append("line two"); |
| buffer.append("line three"); |
|
|
| expect(buffer.getRecentLogs()).toEqual(["line two", "line three"]); |
| }); |
| }); |
|
|