From 582c9d1141cb29b7d2393d3645e5d76e1cb7129d Mon Sep 17 00:00:00 2001 From: Mark Date: Fri, 22 May 2026 14:57:44 +0200 Subject: [PATCH] fix(router): preserve development exception status --- .../src/Exceptions/DevelopmentException.php | 3 +-- .../Http/Exceptions/HtmlExceptionRendererTest.php | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/packages/router/src/Exceptions/DevelopmentException.php b/packages/router/src/Exceptions/DevelopmentException.php index 659bf49d00..e10c15f740 100644 --- a/packages/router/src/Exceptions/DevelopmentException.php +++ b/packages/router/src/Exceptions/DevelopmentException.php @@ -10,7 +10,6 @@ use Tempest\Http\IsResponse; use Tempest\Http\Request; use Tempest\Http\Response; -use Tempest\Http\Status; use Tempest\Support\Filesystem; use Tempest\View\Exceptions\ViewCompilationFailed; use Tempest\View\GenericView; @@ -27,7 +26,7 @@ final class DevelopmentException implements Response public function __construct(Throwable $throwable, Response $response, Request $request) { - $this->status = Status::INTERNAL_SERVER_ERROR; + $this->status = $response->status; if (! Filesystem\exists(__DIR__ . '/local/dist/main.js')) { $this->body = 'The development exception interface is not built.'; diff --git a/tests/Integration/Http/Exceptions/HtmlExceptionRendererTest.php b/tests/Integration/Http/Exceptions/HtmlExceptionRendererTest.php index 509393b7dc..19dbd21f3a 100644 --- a/tests/Integration/Http/Exceptions/HtmlExceptionRendererTest.php +++ b/tests/Integration/Http/Exceptions/HtmlExceptionRendererTest.php @@ -120,6 +120,21 @@ public function renders_development_exception_in_local_environment(): void ); } + #[Test] + public function development_exception_preserves_http_request_failed_status(): void + { + $this->container->singleton(Environment::class, Environment::LOCAL); + $this->container->singleton(GenericRequest::class, new GenericRequest( + method: Method::GET, + uri: '/', + )); + + $response = $this->renderer->render(new HttpRequestFailed(Status::NOT_ACCEPTABLE)); + + $this->assertInstanceOf(DevelopmentException::class, $response); + $this->assertSame(Status::NOT_ACCEPTABLE, $response->status); + } + #[Test] public function does_not_render_development_exception_for_not_found_in_local(): void {