diff options
author | Zandra Hird <[email protected]> | 2015-05-06 13:01:07 +0200 |
---|---|---|
committer | Zandra Hird <[email protected]> | 2015-05-06 13:01:07 +0200 |
commit | 0440e0e45835de5adbe790f9437492d734c6c4e1 (patch) | |
tree | 978ff1a48ae243e69fca96cce5eb2654b66c8076 /lib/test_server/src/test_server.erl | |
parent | 83ff5ec3ced8ce1c456bfdf75fcbf5be01385388 (diff) | |
parent | efbfe9602983ff451b864e557bdf3733222b78ba (diff) | |
download | otp-0440e0e45835de5adbe790f9437492d734c6c4e1.tar.gz otp-0440e0e45835de5adbe790f9437492d734c6c4e1.tar.bz2 otp-0440e0e45835de5adbe790f9437492d734c6c4e1.zip |
Merge branch 'maint'
Conflicts:
OTP_VERSION
erts/vsn.mk
lib/test_server/src/erl2html2.erl
Diffstat (limited to 'lib/test_server/src/test_server.erl')
-rw-r--r-- | lib/test_server/src/test_server.erl | 33 |
1 files changed, 27 insertions, 6 deletions
diff --git a/lib/test_server/src/test_server.erl b/lib/test_server/src/test_server.erl index 7f2da7755a..7cb9c4bb5a 100644 --- a/lib/test_server/src/test_server.erl +++ b/lib/test_server/src/test_server.erl @@ -1313,12 +1313,30 @@ get_loc(Pid) -> Stk = [rewrite_loc_item(Loc) || Loc <- Stk0], case get(test_server_loc) of [{Suite,Case}] -> - %% location info unknown, check if {Suite,Case,Line} - %% is available in stacktrace. and if so, use stacktrace - %% instead of current test_server_loc + %% Location info unknown, check if {Suite,Case,Line} + %% is available in stacktrace and if so, use stacktrace + %% instead of current test_server_loc. + %% If location is the last expression in a test case + %% function, the info is not available due to tail call + %% elimination. We need to check if the test case has been + %% called by ts_tc/3 and, if so, insert the test case info + %% at that position. case [match || {S,C,_L} <- Stk, S == Suite, C == Case] of - [match|_] -> put(test_server_loc, Stk); - _ -> ok + [match|_] -> + put(test_server_loc, Stk); + _ -> + {PreTC,PostTC} = + lists:splitwith(fun({test_server,ts_tc,_}) -> + false; + (_) -> + true + end, Stk), + if PostTC == [] -> + ok; + true -> + put(test_server_loc, + PreTC++[{Suite,Case,last_expr} | PostTC]) + end end; _ -> put(test_server_loc, Stk) @@ -1380,7 +1398,10 @@ lookup_config(Key,Config) -> undefined end. -%% timer:tc/3 +%% +%% IMPORTANT: get_loc/1 uses the name of this function when analysing +%% stack traces. If the name changes, get_loc/1 must be updated! +%% ts_tc(M, F, A) -> Before = erlang:monotonic_time(), Result = try |