error.test.ts 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import { describe, expect, test } from "bun:test"
  2. import { errorData, errorFormat, errorMessage } from "../../src/util/error"
  3. describe("util.error", () => {
  4. test("formats native Error instances", () => {
  5. const err = new Error("boom")
  6. expect(errorMessage(err)).toBe("boom")
  7. expect(errorFormat(err)).toContain("boom")
  8. const data = errorData(err)
  9. expect(data.type).toBe("Error")
  10. expect(data.message).toBe("boom")
  11. expect(String(data.formatted)).toContain("boom")
  12. })
  13. test("extracts message from record-like values", () => {
  14. const err = { message: "bad input", code: "E_BAD" }
  15. expect(errorMessage(err)).toBe("bad input")
  16. const data = errorData(err)
  17. expect(data.message).toBe("bad input")
  18. expect(data.code).toBe("E_BAD")
  19. })
  20. test("handles opaque throwables with custom toString", () => {
  21. const err = {
  22. toString() {
  23. return "ResolveMessage: Cannot resolve module"
  24. },
  25. }
  26. expect(errorMessage(err)).toBe("ResolveMessage: Cannot resolve module")
  27. const data = errorData(err)
  28. expect(data.message).toBe("ResolveMessage: Cannot resolve module")
  29. expect(String(data.formatted)).toContain("ResolveMessage")
  30. })
  31. })