Print stack traces from inside request handler.

This commit is contained in:
Sam Rose 2024-02-29 09:19:14 +00:00
parent e309282ff7
commit 8488ff4144
No known key found for this signature in database
2 changed files with 36 additions and 13 deletions

View File

@ -1,5 +1,6 @@
import { APIError } from "@budibase/types"
import * as errors from "../errors"
import environment from "../environment"
export async function errorHandling(ctx: any, next: any) {
try {
@ -14,15 +15,21 @@ export async function errorHandling(ctx: any, next: any) {
console.error(err)
}
const error = errors.getPublicError(err)
const body: APIError = {
message: err.message,
status: status,
validationErrors: err.validation,
error,
if (environment.isTest()) {
ctx.body = {
message: err.message,
status: status,
error: errors.getPublicError(err),
stack: err.stack,
}
} else {
ctx.body = {
message: err.message,
status: status,
validationErrors: err.validation,
error: errors.getPublicError(err),
}
}
ctx.body = body
}
}

View File

@ -126,11 +126,27 @@ export abstract class TestAPI {
const response = await request
if (response.status !== status) {
throw new Error(
`Expected status ${status} but got ${
response.status
} with body ${JSON.stringify(response.body)}`
)
let message = `Expected status ${status} but got ${response.status}`
const stack = response.body.stack
delete response.body.stack
if (response.body) {
message += `\n\nBody:`
const body = JSON.stringify(response.body, null, 2)
for (const line of body.split("\n")) {
message += `\n⏐ ${line}`
}
}
if (stack) {
message += `\n\nStack from request handler:`
for (const line of stack.split("\n")) {
message += `\n⏐ ${line}`
}
}
throw new Error(message)
}
if (expectations?.headersNotPresent) {