diff options
author | Fredrik Gustafsson <[email protected]> | 2012-08-10 10:58:45 +0200 |
---|---|---|
committer | Fredrik Gustafsson <[email protected]> | 2012-08-10 10:58:45 +0200 |
commit | f968ff87b1d6fb74237010bffa0390953337425e (patch) | |
tree | cd31772649b8f1e599e7fbe2cf7b76b1c2dc7a7b /lib/eunit/src/eunit_test.erl | |
parent | f20c64056d2f36d1ea7b07faf2a104378f4c97ee (diff) | |
parent | 95a78de4810ca25f7175d8eb7bb8f05e38034122 (diff) | |
download | otp-f968ff87b1d6fb74237010bffa0390953337425e.tar.gz otp-f968ff87b1d6fb74237010bffa0390953337425e.tar.bz2 otp-f968ff87b1d6fb74237010bffa0390953337425e.zip |
Merge branch 'rc/eunit-2.2.3/OTP-10173' into maint
* rc/eunit-2.2.3/OTP-10173:
Include fixture setup and cleanup errors in Eunit Surefire report
documentation fixes
add {test,M,F} as a better variant of {M,F} and make the latter obsolete
minor cleanup
Write chars as UTF-8 to file
detect and report bad return values from generators and instantiators
eunit_tests should not be listed in eunit.app
improved layout of error messages - stack trace before error term
bumped revision
make stack trace pruning know about the new format
Make EUnit print stacktraces with location information
Add option 'no_tty' to silent the default tty report
Diffstat (limited to 'lib/eunit/src/eunit_test.erl')
-rw-r--r-- | lib/eunit/src/eunit_test.erl | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/lib/eunit/src/eunit_test.erl b/lib/eunit/src/eunit_test.erl index bca49ae626..9cf40a738d 100644 --- a/lib/eunit/src/eunit_test.erl +++ b/lib/eunit/src/eunit_test.erl @@ -21,8 +21,7 @@ -module(eunit_test). --export([run_testfun/1, function_wrapper/2, enter_context/4, - multi_setup/1]). +-export([run_testfun/1, mf_wrapper/2, enter_context/4, multi_setup/1]). -include("eunit.hrl"). @@ -43,8 +42,12 @@ get_stacktrace(Ts) -> prune_trace([{eunit_data, _, _} | Rest], Tail) -> prune_trace(Rest, Tail); +prune_trace([{eunit_data, _, _, _} | Rest], Tail) -> + prune_trace(Rest, Tail); prune_trace([{?MODULE, _, _} | _Rest], Tail) -> Tail; +prune_trace([{?MODULE, _, _, _} | _Rest], Tail) -> + Tail; prune_trace([T | Ts], Tail) -> [T | prune_trace(Ts, Tail)]; prune_trace([], Tail) -> @@ -258,7 +261,7 @@ macro_test_() -> %% @type wrapperError() = {no_such_function, mfa()} %% | {module_not_found, moduleName()} -function_wrapper(M, F) -> +mf_wrapper(M, F) -> fun () -> try M:F() catch @@ -289,12 +292,12 @@ fail(Term) -> wrapper_test_() -> {"error handling in function wrapper", [?_assertException(throw, {module_not_found, eunit_nonexisting}, - run_testfun(function_wrapper(eunit_nonexisting,test))), + run_testfun(mf_wrapper(eunit_nonexisting,test))), ?_assertException(throw, {no_such_function, {?MODULE,nonexisting_test,0}}, - run_testfun(function_wrapper(?MODULE,nonexisting_test))), + run_testfun(mf_wrapper(?MODULE,nonexisting_test))), ?_test({error, {error, undef, _T}} - = run_testfun(function_wrapper(?MODULE,wrapper_test_exported_))) + = run_testfun(mf_wrapper(?MODULE,wrapper_test_exported_))) ]}. %% this must be exported (done automatically by the autoexport transform) @@ -319,6 +322,17 @@ enter_context(Setup, Cleanup, Instantiate, Callback) -> R -> try Instantiate(R) of T -> + case eunit_lib:is_not_test(T) of + true -> + catch throw(error), % generate a stack trace + {module,M} = erlang:fun_info(Instantiate, module), + {name,N} = erlang:fun_info(Instantiate, name), + {arity,A} = erlang:fun_info(Instantiate, arity), + context_error({bad_instantiator, {{M,N,A},T}}, + error, badarg); + false -> + ok + end, try Callback(T) %% call back to client code after %% Always run cleanup; client may be an idiot |