import { describe, it, expect } from 'vitest' import { safeErrorMessage } from './safe-error-message' describe('safeErrorMessage', () => { it('extracts the message from an Error', () => { expect(safeErrorMessage(new Error('boom'))).toBe('boom') }) it('stringifies non-Error values', () => { expect(safeErrorMessage('plain string')).toBe('plain string') expect(safeErrorMessage(42)).toBe('42') }) it('never throws for a throwing toString()', () => { const evil = { toString(): string { throw new Error('poisoned toString') } } expect(safeErrorMessage(evil)).toBe('Unreadable error object') }) it('never throws for a poisoned message getter', () => { const evil = new Error('real') Object.defineProperty(evil, 'message', { get() { throw new Error('poisoned message') } }) expect(safeErrorMessage(evil)).toBe('Unreadable error object') }) it('caps a huge message so dedup keys stay bounded', () => { const out = safeErrorMessage(new Error('x'.repeat(10_000))) expect(out).toHaveLength(500) }) })