aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/handlers/crash_h.erl3
-rw-r--r--test/plain_handler_SUITE.erl11
2 files changed, 14 insertions, 0 deletions
diff --git a/test/handlers/crash_h.erl b/test/handlers/crash_h.erl
index b687aba..57d4d85 100644
--- a/test/handlers/crash_h.erl
+++ b/test/handlers/crash_h.erl
@@ -7,6 +7,9 @@
-export([init/2]).
-spec init(_, _) -> no_return().
+init(_, external_exit) ->
+ ct_helper:ignore(?MODULE, init, 2),
+ exit(self(), ct_helper_ignore);
init(_, no_reply) ->
ct_helper:ignore(?MODULE, init, 2),
error(crash);
diff --git a/test/plain_handler_SUITE.erl b/test/plain_handler_SUITE.erl
index 756c0a6..2dc1e23 100644
--- a/test/plain_handler_SUITE.erl
+++ b/test/plain_handler_SUITE.erl
@@ -45,6 +45,7 @@ end_per_group(Name, _) ->
init_dispatch(_) ->
cowboy_router:compile([{"localhost", [
+ {"/crash/external_exit", crash_h, external_exit},
{"/crash/no_reply", crash_h, no_reply},
{"/crash/reply", crash_h, reply}
]}]).
@@ -78,3 +79,13 @@ crash_before_reply(Config) ->
]),
{response, fin, 500, _} = gun:await(ConnPid, Ref),
gun:close(ConnPid).
+
+external_exit_before_reply(Config) ->
+ doc("A plain handler exits externally before a response was sent "
+ "results in a 500 response."),
+ ConnPid = gun_open(Config),
+ Ref = gun:get(ConnPid, "/crash/external_exit", [
+ {<<"accept-encoding">>, <<"gzip">>}
+ ]),
+ {response, fin, 500, _} = gun:await(ConnPid, Ref),
+ gun:close(ConnPid).