From 09bccf1a9355ee408a58099ce21d2e51dfc82add Mon Sep 17 00:00:00 2001 From: Stanislaw Klekot Date: Mon, 10 Oct 2016 22:49:24 +0200 Subject: [PATCH] Added original value to error reports. This should make errors more readable. --- src/estap.erl | 48 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/src/estap.erl b/src/estap.erl index 0b13195..8df57d6 100644 --- a/src/estap.erl +++ b/src/estap.erl @@ -58,9 +58,7 @@ Value :: value(). ok(Value, Description) -> - TestRun = get_test_run(), - estap_server:running(TestRun, Description), - estap_server:report_result(TestRun, estap_test:success_or_failure(Value)), + report(estap_test:success_or_failure(Value), Description), Value. %% @doc Mark the test as a success unconditionally. @@ -69,7 +67,8 @@ ok(Value, Description) -> true. pass(Description) -> - ok(true, Description). + report({success, explicit}, Description), + true. %% @doc Mark the test as a failure unconditionally. @@ -77,7 +76,8 @@ pass(Description) -> false. fail(Description) -> - ok(false, Description). + report({failure, explicit}, Description), + false. %% @doc Check if `Value' is the same as `Expected'. @@ -86,8 +86,8 @@ fail(Description) -> is(Value, Expected, Description) -> case Value of - Expected -> pass(Description); - _ -> fail(Description) + Expected -> report({success, Value}, Description); + _ -> report({failure, Value}, Description) end, Value. @@ -98,8 +98,8 @@ is(Value, Expected, Description) -> isnt(Value, Expected, Description) -> case Value of - Expected -> fail(Description); - _ -> pass(Description) + Expected -> report({failure, Value}, Description); + _ -> report({success, Value}, Description) end, Value. @@ -135,7 +135,11 @@ cmp(Value, Cmp, Expected, Description) -> '==' -> Value == Expected; '=:=' -> Value =:= Expected end, - ok(CmpResult, Description), + % FIXME: better reporting for failures + case CmpResult of + true -> report({success, Value}, Description); + false -> report({failure, Value}, Description) + end, Value. %% @doc Check if `Value' matches a regexp. @@ -149,8 +153,8 @@ like(Value, Expected, Description) -> TestRun = get_test_run(), estap_server:running(TestRun, Description), case re:run(Value, Expected) of - {match, _Capture} -> estap_server:report_result(TestRun, {success, true}); - nomatch -> estap_server:report_result(TestRun, {failure, false}) + {match, _Capture} -> estap_server:report_result(TestRun, {success, Value}); + nomatch -> estap_server:report_result(TestRun, {failure, Value}) end, Value. @@ -165,8 +169,8 @@ unlike(Value, Expected, Description) -> TestRun = get_test_run(), estap_server:running(TestRun, Description), case re:run(Value, Expected) of - {match, _Capture} -> estap_server:report_result(TestRun, {failure, false}); - nomatch -> estap_server:report_result(TestRun, {success, true}) + {match, _Capture} -> estap_server:report_result(TestRun, {failure, Value}); + nomatch -> estap_server:report_result(TestRun, {success, Value}) end, Value. @@ -183,10 +187,10 @@ matches(Value, MatchSpec, Description) -> estap_server:running(TestRun, Description), try MatchSpec(Value), - estap_server:report_result(TestRun, {success, true}) + estap_server:report_result(TestRun, {success, Value}) catch error:function_clause -> - estap_server:report_result(TestRun, {failure, false}) + estap_server:report_result(TestRun, {failure, Value}) end, Value. @@ -391,5 +395,17 @@ get_test_run_or_parent() -> TestRun end. +%% @doc Send a test report to {@link estap_server}. + +-spec report({success | failure | dubious, Value :: value()}, description()) -> + ok. + +report({T,_V} = Report, Description) +when T == success; T == failure; T == dubious -> + TestRun = get_test_run(), + estap_server:running(TestRun, Description), + estap_server:report_result(TestRun, Report), + ok. + %%%--------------------------------------------------------------------------- %%% vim:ft=erlang:foldmethod=marker -- 1.7.10.4