-
Notifications
You must be signed in to change notification settings - Fork 32
/
ctsuite.erl
131 lines (118 loc) · 3.71 KB
/
ctsuite.erl
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
%%%' HEADER
%%% @author {{author_name}} <{{author_email}}>
%%% @since {{date}}
%%% @copyright {{copyright_year}} {{author_name}}
%%% @doc {{description}}
%%% @end
-module({{name}}_SUITE).
%% Note: This directive should only be used in test suites.
-compile(export_all).
-include_lib("common_test/include/ct.hrl").
%%%.
%%%' CALLBACKS
%% @doc returns list of tuples to set default properties for the suite.
-spec suite() -> Config
when
Config :: proplist().
suite() ->
[{timetrap,{minutes,10}}].
%% @doc runs initialization before matching test suite is executed.
%% This function may add key/value pairs to Config.
-spec init_per_suite(Config0) ->
Config1 | {skip, Reason} | {skip_and_save, Reason, Config1}
when
Config0 :: proplist(),
Config1 :: proplist(),
Reason :: term().
init_per_suite(Config) ->
Config.
%% @doc runs cleanup after matching test suite is executed.
-spec end_per_suite(Config0) -> ok | {save_config, Config1}
when
Config0 :: proplist(),
Config1 :: proplist().
end_per_suite(_Config) ->
ok.
%% @doc runs initialization before matching test group is executed.
-spec init_per_group(GroupName, Config0) ->
Config1 | {skip, Reason} | {skip_and_save, Reason, Config1}
when
GroupName :: string(),
Config0 :: proplist(),
Config1 :: proplist(),
Reason :: term().
init_per_group(_GroupName, Config) ->
Config.
%% @doc runs cleanup after matching test group is fully executed.
-spec end_per_group(GroupName, Config0) -> ok | {save_config, Config1}
when
GroupName :: string(),
Config0 :: proplist(),
Config1 :: proplist().
end_per_group(_GroupName, _Config) ->
ok.
%% @doc runs initialization before matching test case. Should not alter or
%% remove any key/value pairs to the Config, but may add to it.
-spec init_per_testcase(TestCase, Config0) ->
when
TestCase :: atom(),
Config0 :: proplist(),
Config1 :: proplist(),
Reason :: term().
init_per_testcase(_TestCase, Config) ->
Config.
%% @doc runs cleanup for matching test case.
-spec end_per_testcase(TestCase, Config0) ->
ok | {save_config, Config1} | {fail, Reason}
when
TestCase :: atom(),
Config0 :: proplist(),
Config1 :: proplist(),
Reason :: term().
end_per_testcase(_TestCase, _Config) ->
ok.
%% @doc returns list of test case group definitions.
-spec groups() -> [Group]
when
Group :: {GroupName, Properties, Members},
GroupName :: atom(),
Properties :: [parallel | sequence | Shuffle | {RepeatType, N}],
Members :: [Group | {group, GroupName} | TestCase],
TestCase :: atom(),
Shuffle :: shuffle | {shuffle, Seed},
Seed :: {integer(), integer(), integer()},
RepeatType :: repeat | repeat_until_all_ok | repeat_until_all_fail |
repeat_until_any_ok | repeat_until_any_fail
N :: integer() | forever.
groups() ->
[].
%% @doc returns list of tests (group or testcase) to be run for all of suite.
-spec all() -> Tests | {skip, Reason}
when
Test :: {group, GroupName} | TestCase,
Tests :: [Test],
GroupName :: atom(),
TestCase :: atom(),
Reason :: term().
all() ->
[my_test_case].
%%%.
%%%' TESTCASES
%% @doc returns list of tuples to set info properties for the test case.
-spec my_test_case() -> Info
when
Info :: proplist().
my_test_case() ->
[].
%% @doc the test function.
@spec TestCase(Config0) ->
ok | exit() | {skip, Reason} | {comment, Comment} |
{save_config, Config} | {skip_and_save, Reason, Config1}
when
Config0 :: Config1 :: proplist(),
Reason :: term(),
Comment :: term()
my_test_case(_Config) ->
ok.
%%%.
%%% vim: set filetype=erlang tabstop=2 foldmarker=%%%',%%%. foldmethod=marker: