summaryrefslogtreecommitdiff
path: root/lib/ssh/test/ssh_cth.erl
blob: 09d863cc5136f77da1dffcfeb1ed828bce571589 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
-module(ssh_cth).

-export([id/1,
         init/2,
         pre_init_per_suite/3,
         pre_end_per_suite/3,
         pre_init_per_group/4,
         pre_end_per_group/4,
         post_end_per_group/5,
         pre_init_per_testcase/3,
         pre_end_per_testcase/4
        ]).

-record(c, {
          suite, % suite name
          groups = [], % Group path in reversed order
          n % test case number
         }).

id(Opts) ->
    proplists:get_value(filename, Opts, "/tmp/file.log").

init(_Id, _Opts) ->
    {ok, #c{n=1}}.

pre_init_per_suite(Suite, Config, CTHState) ->
    {Config, CTHState#c{suite=Suite}}.

pre_end_per_suite(Suite, Config, State) ->
    ct:pal("BEGIN ~p:end_per_suite(...)", [Suite]),
     {Config, State}.


pre_init_per_group(_Suite, Group, Config ,State) ->
     {Config, State#c{groups = (State#c.groups ++ [Group])}}.

pre_end_per_group(Suite, Group, Config, State) ->
    ct:pal("BEGIN ~p:end_per_group(~p,...)", [Suite,Group]),
    {Config, State}.

post_end_per_group(_Suite, Group, _Config, Return, State) ->
     {Return, State#c{groups = lists:reverse(lists:reverse(State#c.groups)--[Group])}}.


pre_init_per_testcase(SuiteName, Config, CTHState) ->
    ct:pal("########## ~p ~p ~s ~p~n", [CTHState#c.suite, CTHState#c.n, groups(Config), SuiteName]),
    {Config, CTHState#c{n = CTHState#c.n + 1}}.

pre_end_per_testcase(Suite,TC,Config,State) ->
    ct:pal("BEGIN ~p:end_per_testcase(~p,...)", [Suite,TC]),
    {Config, State}.


groups(Config) ->
    F = fun(X) -> io_lib:format("~w",[X]) end,
    io_lib:format("~s", [lists:join("/", lists:map(F,get_groups(Config)))]).

get_groups(Config) ->
    P = proplists:get_value(tc_group_path, Config, []) ++
        [proplists:get_value(tc_group_properties, Config, [])],
    [Name || L <- P,
             is_list(L),
             {name,Name} <- L].