(t *testing.T)
| 2267 | } |
| 2268 | |
| 2269 | func Test_App_ReloadViews_PanicUnlocksRender(t *testing.T) { |
| 2270 | t.Parallel() |
| 2271 | |
| 2272 | view := &panicLoadView{} |
| 2273 | app := New(Config{Views: view}) |
| 2274 | app.Get("/", func(c Ctx) error { |
| 2275 | return c.Render("home", nil) |
| 2276 | }) |
| 2277 | handler := app.Handler() |
| 2278 | |
| 2279 | type reloadResult struct { |
| 2280 | err error |
| 2281 | recovered any |
| 2282 | } |
| 2283 | |
| 2284 | reloadDone := make(chan reloadResult, 1) |
| 2285 | go func() { |
| 2286 | result := reloadResult{} |
| 2287 | defer func() { |
| 2288 | result.recovered = recover() |
| 2289 | reloadDone <- result |
| 2290 | }() |
| 2291 | |
| 2292 | result.err = app.ReloadViews() |
| 2293 | }() |
| 2294 | |
| 2295 | select { |
| 2296 | case result := <-reloadDone: |
| 2297 | require.NoError(t, result.err) |
| 2298 | require.Equal(t, "panic load", result.recovered) |
| 2299 | case <-time.After(time.Second): |
| 2300 | t.Fatal("reload panic was not recovered") |
| 2301 | } |
| 2302 | |
| 2303 | renderDone := make(chan int, 1) |
| 2304 | go func() { |
| 2305 | renderDone <- runGetHandlerRequest(handler, "/") |
| 2306 | }() |
| 2307 | |
| 2308 | select { |
| 2309 | case status := <-renderDone: |
| 2310 | require.Equal(t, StatusOK, status) |
| 2311 | case <-time.After(time.Second): |
| 2312 | t.Fatal("render request did not finish after reload panic") |
| 2313 | } |
| 2314 | } |
| 2315 | |
| 2316 | func Test_App_InitPanicUnlocksRouteRegistration(t *testing.T) { |
| 2317 | t.Parallel() |
nothing calls this directly
no test coverage detected