Skip to content

Commit 1688d91

Browse files
authored
Merge pull request #4369 from esl/ct_mongoose_log_hook-without-extra-files
Add HTML link to the MIM log file without extra redirection file
2 parents 03107db + 4693313 commit 1688d91

File tree

1 file changed

+14
-22
lines changed

1 file changed

+14
-22
lines changed

Diff for: big_tests/src/ct_mongoose_log_hook.erl

+14-22
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535

3636
-record(state, { node_name, reader, writer,
3737
current_line_num, out_file, url_file, group, suite,
38-
priv_dir, log_flags = [] }).
38+
log_flags = [] }).
3939
-include_lib("exml/include/exml.hrl").
4040

4141
%% @doc Return a unique id for this CTH.
@@ -74,8 +74,7 @@ post_end_per_group(Group,_Config,Return,State) ->
7474
pre_init_per_testcase(TC,Config,State=#state{}) ->
7575
maybe_print_log_on_mim_node(testcase, starting, TC, State),
7676
Dog = test_server:timetrap(test_server:seconds(10)),
77-
State2 = keep_priv_dir(Config, State),
78-
State3 = ensure_initialized(Config, State2),
77+
State3 = ensure_initialized(Config, State),
7978
State4 = pre_insert_line_numbers_into_report(State3, TC),
8079
test_server:timetrap_cancel(Dog),
8180
{Config, State4}.
@@ -174,17 +173,13 @@ ensure_initialized(Config, State=#state{node_name=Node, out_file=undefined}) ->
174173
ensure_initialized(_Config, State=#state{}) ->
175174
State.
176175

177-
keep_priv_dir(Config, State) ->
178-
PrivDir = proplists:get_value(priv_dir, Config),
179-
State#state{priv_dir=PrivDir}.
180-
181176
pre_insert_line_numbers_into_report(State=#state{writer=undefined}, _TC) ->
182177
State; % Invalid state
183178
pre_insert_line_numbers_into_report(State=#state{node_name=Node, reader=Reader, writer=Writer,
184179
current_line_num=CurrentLineNum, url_file=UrlFile,
185-
priv_dir=PrivDir, group=Group, suite=Suite}, TC) ->
180+
group=Group, suite=Suite}, TC) ->
186181
CurrentLineNum2 = read_and_write_lines(Node, Reader, Writer, CurrentLineNum),
187-
add_log_link_to_line(PrivDir, UrlFile, CurrentLineNum2, Node, " when started"),
182+
add_log_link_to_line(UrlFile, CurrentLineNum2, Node, " when started"),
188183
Message = io_lib:format(
189184
"<font color=gray>INIT suite=~p group=~p testcase=~p</font>~n",
190185
[Suite, Group, TC]),
@@ -195,9 +190,9 @@ post_insert_line_numbers_into_report(State=#state{writer=undefined}, _TC) ->
195190
State; % Invalid state
196191
post_insert_line_numbers_into_report(State=#state{node_name=Node, reader=Reader, writer=Writer,
197192
current_line_num=CurrentLineNum, url_file=UrlFile,
198-
group=Group, suite=Suite, priv_dir=PrivDir}, TC) ->
193+
group=Group, suite=Suite}, TC) ->
199194
CurrentLineNum2 = read_and_write_lines(Node, Reader, Writer, CurrentLineNum),
200-
add_log_link_to_line(PrivDir, UrlFile, CurrentLineNum2, Node, " when finished"),
195+
add_log_link_to_line(UrlFile, CurrentLineNum2, Node, " when finished"),
201196
%% Write a message after the main part
202197
Message = io_lib:format(
203198
"<font color=gray>DONE suite=~p group=~p testcase=~p</font>~n",
@@ -214,25 +209,22 @@ insert_line_numbers_into_report(State=#state{node_name=Node, reader=Reader, writ
214209
%% allows to add simple links.
215210
%%
216211
%% We can't add link with label (i.e. index.html#LABEL), because it would be escaped.
217-
%% Let's create an HTML file for each link we want to insert, and insert our custom
218-
%% redirect code inside.
219212
%%
220213
%% Args:
221214
%% `Heading' - some description for the link
222-
%% `PrivDir' - current log_private directory
223-
%% `LinkName' - filename where to write our redirect code inside log_private
224215
%% `UrlFile' - destination URL to redirect to
225216
%% `Label' - position in the document
226-
add_log_link_to_line(PrivDir, UrlFile, LogLine, Node, ExtraDescription) ->
217+
add_log_link_to_line(UrlFile, LogLine, Node, ExtraDescription) ->
227218
Label = "L" ++ integer_to_list(LogLine),
228219
Heading = "View log from node " ++ atom_to_list(Node) ++ ExtraDescription,
229-
%% We need to invent something unique enough here :)
230-
LinkName = atom_to_list(Node) ++ "_" ++ integer_to_list(LogLine) ++ ".html",
220+
LinkText = atom_to_list(Node) ++ "#" ++ integer_to_list(LogLine),
231221
URL = UrlFile ++ "#" ++ Label,
232-
RedirectCode = "<meta http-equiv='refresh' content='0; url=../" ++ URL ++ "' />",
233-
WhereToWrite = filename:join(PrivDir, LinkName),
234-
file:write_file(WhereToWrite, RedirectCode),
235-
escalus_ct:add_log_link(Heading, LinkName, "text/html").
222+
ct_add_link(Heading, URL, LinkText, "text/html").
223+
224+
%% ct_logs:add_link/3 but without URL escaping
225+
ct_add_link(Heading, URL, LinkText, Type) ->
226+
Link = io_lib:format(" <a href=\"~ts\" type=~tp>~ts</a>", [URL, Type, LinkText]),
227+
ct_logs:log(Heading ++ binary_to_list(iolist_to_binary(Link)), "", []).
236228

237229
open_out_file(OutFile) ->
238230
open_file_without_linking(node(), OutFile, [write, delayed_write]).

0 commit comments

Comments
 (0)