@@ -7,8 +7,8 @@ defmodule Phoenix.Endpoint.RenderErrorsTest do
7
7
import ExUnit.CaptureLog
8
8
view = __MODULE__
9
9
10
- def render ( "app.html" , % { view_template: view_template } = assigns ) do
11
- "Layout: " <> render ( view_template , assigns )
10
+ def render ( "app.html" , assigns ) do
11
+ "Layout: " <> ( Map . get ( assigns , :inner_content ) || render ( assigns . view_template , assigns ) )
12
12
end
13
13
14
14
def render ( "404.html" , % { kind: kind , reason: _reason , stack: _stack , status: 404 , conn: conn } ) do
@@ -56,6 +56,12 @@ defmodule Phoenix.Endpoint.RenderErrorsTest do
56
56
_ -> System . stacktrace ( )
57
57
end
58
58
59
+ # Those are always ignored and must be explicitly opted-in.
60
+ conn =
61
+ conn
62
+ |> Phoenix.Controller . put_layout ( { Unknown , "layout" } )
63
+ |> Phoenix.Controller . put_root_layout ( { Unknown , "root" } )
64
+
59
65
reason = ArgumentError . exception ( "oops" )
60
66
raise Plug.Conn.WrapperError , conn: conn , kind: :error , stack: stack , reason: reason
61
67
end
@@ -252,6 +258,14 @@ defmodule Phoenix.Endpoint.RenderErrorsTest do
252
258
assert body == "Layout: Got 500 from throw with GET"
253
259
end
254
260
261
+ test "exception page with root layout" do
262
+ body = assert_render ( 500 , conn ( :get , "/" ) , [ root_layout: { __MODULE__ , :app } ] , fn ->
263
+ throw :hello
264
+ end )
265
+
266
+ assert body == "Layout: Got 500 from throw with GET"
267
+ end
268
+
255
269
test "exception page is shown even with invalid format" do
256
270
conn = conn ( :get , "/" ) |> put_req_header ( "accept" , "unknown/unknown" )
257
271
body = assert_render ( 500 , conn , [ ] , fn -> throw :hello end )
0 commit comments