all_ok() returns more meaningful error report.
authorStanislaw Klekot <dozzie@jarowit.net>
Mon, 10 Oct 2016 20:57:28 +0000 (22:57 +0200)
committerStanislaw Klekot <dozzie@jarowit.net>
Mon, 10 Oct 2016 20:57:28 +0000 (22:57 +0200)
src/estap.erl

index f1deb08..aff899d 100644 (file)
@@ -277,13 +277,22 @@ plan(TestCount) when is_integer(TestCount) ->
 %%   indicate that the test sequence passed or failed.
 
 -spec all_ok() ->
-  true | false.
+  ok | {error, term()}.
 
 all_ok() ->
   TestRun = get_test_run(),
   {Planned, Total, Failed, _TODO} = estap_server:get_status(TestRun),
   estap_server:done(TestRun), % this ends estap_server, so it goes last
-  (Failed == 0) and ((Planned == undefined) or (Planned == Total)).
+  case Failed of
+    0 when Planned == undefined ->
+      ok;
+    0 when Planned == Total ->
+      ok;
+    0 when Planned /= Total ->
+      {error, {bad_plan, [{plan, Planned}, {run, Total}]}};
+    _ ->
+      {error, {failures, [{failed, Failed}, {plan, Planned}, {run, Total}]}}
+  end.
 
 %%%---------------------------------------------------------------------------