mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-10-10 03:28:03 +00:00
87 lines
3.1 KiB
TypeScript
87 lines
3.1 KiB
TypeScript
import { parseStackTrace, applySourceMapsToStack, enhanceErrorWithSourceMaps } from "../sourceMapUtils"
|
|
|
|
// Mock console.debug to avoid cluttering test output
|
|
beforeEach(() => {
|
|
vi.spyOn(console, "debug").mockImplementation(() => {})
|
|
})
|
|
|
|
describe("sourceMapUtils", () => {
|
|
describe("parseStackTrace", () => {
|
|
// Note: parseStackTrace is now a compatibility function
|
|
test("should correctly parse a Chrome-style stack trace", async () => {
|
|
const stackTrace = `Error: Test error
|
|
at Function.execute (webpack:///./src/components/App.tsx:123:45)
|
|
at Object.next (webpack:///./node_modules/react/index.js:76:21)
|
|
at eval (webpack:///./src/utils/helpers.ts:89:10)`
|
|
|
|
const frames = await parseStackTrace(stackTrace)
|
|
|
|
// Verify it still returns an array of frame objects
|
|
expect(frames).toBeInstanceOf(Array)
|
|
expect(frames.length).toBeGreaterThan(0)
|
|
|
|
// Check that the first frame has the expected properties
|
|
const firstFrame = frames[0]
|
|
expect(firstFrame).toHaveProperty("functionName")
|
|
expect(firstFrame).toHaveProperty("fileName")
|
|
expect(firstFrame).toHaveProperty("lineNumber")
|
|
expect(firstFrame).toHaveProperty("columnNumber")
|
|
expect(firstFrame).toHaveProperty("source")
|
|
|
|
// Verify the first frame has the correct values
|
|
expect(firstFrame.fileName).toBe("webpack:///./src/components/App.tsx")
|
|
expect(firstFrame.lineNumber).toBe(123)
|
|
expect(firstFrame.columnNumber).toBe(45)
|
|
})
|
|
|
|
test("should return empty array for empty stack", async () => {
|
|
expect(await parseStackTrace("")).toEqual([])
|
|
expect(await parseStackTrace(undefined as unknown as string)).toEqual([])
|
|
})
|
|
})
|
|
|
|
describe("applySourceMapsToStack", () => {
|
|
test("should return original stack when source maps cannot be applied", async () => {
|
|
const stackTrace = `Error: Test error
|
|
at Function.execute (webpack:///./src/components/App.tsx:123:45)`
|
|
|
|
const result = await applySourceMapsToStack(stackTrace)
|
|
|
|
// For now, we expect it to return the original stack
|
|
// since we haven't implemented actual source map application
|
|
expect(result).toBe(stackTrace)
|
|
})
|
|
|
|
test("should handle empty stack", async () => {
|
|
const emptyStack = ""
|
|
const result = await applySourceMapsToStack(emptyStack)
|
|
expect(result).toBe(emptyStack)
|
|
})
|
|
})
|
|
|
|
describe("enhanceErrorWithSourceMaps", () => {
|
|
test("should add sourceMappedStack property to error", async () => {
|
|
const error = new Error("Test error")
|
|
error.stack = `Error: Test error
|
|
at Function.execute (webpack:///./src/components/App.tsx:123:45)`
|
|
|
|
// Mock the applySourceMapsToStack function
|
|
vi.spyOn(global.console, "error").mockImplementation(() => {})
|
|
|
|
const enhancedError = await enhanceErrorWithSourceMaps(error)
|
|
|
|
expect(enhancedError).toBe(error) // Should return the same error object
|
|
expect("sourceMappedStack" in enhancedError).toBe(true)
|
|
})
|
|
|
|
test("should handle errors without stack", async () => {
|
|
const error = new Error("Test error")
|
|
error.stack = undefined
|
|
|
|
const enhancedError = await enhanceErrorWithSourceMaps(error)
|
|
|
|
expect(enhancedError).toBe(error)
|
|
expect("sourceMappedStack" in enhancedError).toBe(false)
|
|
})
|
|
})
|
|
})
|