mirror of
https://github.com/correl/rebar.git
synced 2024-11-27 11:09:55 +00:00
Add common_test suite template
This change adds a simple common_test suite template that can be instantiated with the name of a module under test like so: `rebar create template=ctsuite testmod=mymodule` The template creates an empty test suite in the test directory, automatically exports test functions and sets up a first, skipped test function.
This commit is contained in:
parent
1979da9ee2
commit
7810d7bf7c
2 changed files with 169 additions and 0 deletions
167
priv/templates/ctsuite.erl
Normal file
167
priv/templates/ctsuite.erl
Normal file
|
@ -0,0 +1,167 @@
|
||||||
|
%% common_test suite for {{testmod}}
|
||||||
|
|
||||||
|
-module({{testmod}}_SUITE).
|
||||||
|
-include_lib("common_test/include/ct.hrl").
|
||||||
|
|
||||||
|
-compile(export_all).
|
||||||
|
|
||||||
|
%%--------------------------------------------------------------------
|
||||||
|
%% Function: suite() -> Info
|
||||||
|
%%
|
||||||
|
%% Info = [tuple()]
|
||||||
|
%% List of key/value pairs.
|
||||||
|
%%
|
||||||
|
%% Description: Returns list of tuples to set default properties
|
||||||
|
%% for the suite.
|
||||||
|
%%
|
||||||
|
%% Note: The suite/0 function is only meant to be used to return
|
||||||
|
%% default data values, not perform any other operations.
|
||||||
|
%%--------------------------------------------------------------------
|
||||||
|
suite() -> [{timetrap, {seconds, 20}}].
|
||||||
|
|
||||||
|
%%--------------------------------------------------------------------
|
||||||
|
%% Function: groups() -> [Group]
|
||||||
|
%%
|
||||||
|
%% Group = {GroupName,Properties,GroupsAndTestCases}
|
||||||
|
%% GroupName = atom()
|
||||||
|
%% The name of the group.
|
||||||
|
%% Properties = [parallel | sequence | Shuffle | {RepeatType,N}]
|
||||||
|
%% Group properties that may be combined.
|
||||||
|
%% GroupsAndTestCases = [Group | {group,GroupName} | TestCase]
|
||||||
|
%% TestCase = atom()
|
||||||
|
%% The name of a test case.
|
||||||
|
%% Shuffle = shuffle | {shuffle,Seed}
|
||||||
|
%% To get cases executed in random order.
|
||||||
|
%% Seed = {integer(),integer(),integer()}
|
||||||
|
%% RepeatType = repeat | repeat_until_all_ok | repeat_until_all_fail |
|
||||||
|
%% repeat_until_any_ok | repeat_until_any_fail
|
||||||
|
%% To get execution of cases repeated.
|
||||||
|
%% N = integer() | forever
|
||||||
|
%%
|
||||||
|
%% Description: Returns a list of test case group definitions.
|
||||||
|
%%--------------------------------------------------------------------
|
||||||
|
groups() -> [].
|
||||||
|
|
||||||
|
%%--------------------------------------------------------------------
|
||||||
|
%% Function: all() -> GroupsAndTestCases
|
||||||
|
%%
|
||||||
|
%% GroupsAndTestCases = [{group,GroupName} | TestCase]
|
||||||
|
%% GroupName = atom()
|
||||||
|
%% Name of a test case group.
|
||||||
|
%% TestCase = atom()
|
||||||
|
%% Name of a test case.
|
||||||
|
%%
|
||||||
|
%% Description: Returns the list of groups and test cases that
|
||||||
|
%% are to be executed.
|
||||||
|
%%
|
||||||
|
%% NB: By default, we export all 1-arity user defined functions
|
||||||
|
%%--------------------------------------------------------------------
|
||||||
|
all() ->
|
||||||
|
[ {exports, Functions} | _ ] = ?MODULE:module_info(),
|
||||||
|
[ FName || {FName, _} <- lists:filter(
|
||||||
|
fun ({module_info,_}) -> false ;
|
||||||
|
({all,_}) -> false ;
|
||||||
|
({init_per_suite,1}) -> false ;
|
||||||
|
({end_per_suite,1}) -> false ;
|
||||||
|
({_,1}) -> true ;
|
||||||
|
({_,_}) -> false
|
||||||
|
end, Functions)].
|
||||||
|
|
||||||
|
%%--------------------------------------------------------------------
|
||||||
|
%% Function: init_per_suite(Config0) ->
|
||||||
|
%% Config1 | {skip,Reason} | {skip_and_save,Reason,Config1}
|
||||||
|
%%
|
||||||
|
%% Config0 = Config1 = [tuple()]
|
||||||
|
%% A list of key/value pairs, holding the test case configuration.
|
||||||
|
%% Reason = term()
|
||||||
|
%% The reason for skipping the suite.
|
||||||
|
%%
|
||||||
|
%% Description: Initialization before the suite.
|
||||||
|
%%
|
||||||
|
%% Note: This function is free to add any key/value pairs to the Config
|
||||||
|
%% variable, but should NOT alter/remove any existing entries.
|
||||||
|
%%--------------------------------------------------------------------
|
||||||
|
init_per_suite(Config) ->
|
||||||
|
Config.
|
||||||
|
|
||||||
|
%%--------------------------------------------------------------------
|
||||||
|
%% Function: end_per_suite(Config0) -> void() | {save_config,Config1}
|
||||||
|
%%
|
||||||
|
%% Config0 = Config1 = [tuple()]
|
||||||
|
%% A list of key/value pairs, holding the test case configuration.
|
||||||
|
%%
|
||||||
|
%% Description: Cleanup after the suite.
|
||||||
|
%%--------------------------------------------------------------------
|
||||||
|
end_per_suite(_Config) ->
|
||||||
|
ok.
|
||||||
|
|
||||||
|
%%--------------------------------------------------------------------
|
||||||
|
%% Function: init_per_group(GroupName, Config0) ->
|
||||||
|
%% Config1 | {skip,Reason} | {skip_and_save,Reason,Config1}
|
||||||
|
%%
|
||||||
|
%% GroupName = atom()
|
||||||
|
%% Name of the test case group that is about to run.
|
||||||
|
%% Config0 = Config1 = [tuple()]
|
||||||
|
%% A list of key/value pairs, holding configuration data for the group.
|
||||||
|
%% Reason = term()
|
||||||
|
%% The reason for skipping all test cases and subgroups in the group.
|
||||||
|
%%
|
||||||
|
%% Description: Initialization before each test case group.
|
||||||
|
%%--------------------------------------------------------------------
|
||||||
|
init_per_group(_group, Config) ->
|
||||||
|
Config.
|
||||||
|
|
||||||
|
%%--------------------------------------------------------------------
|
||||||
|
%% Function: end_per_group(GroupName, Config0) ->
|
||||||
|
%% void() | {save_config,Config1}
|
||||||
|
%%
|
||||||
|
%% GroupName = atom()
|
||||||
|
%% Name of the test case group that is finished.
|
||||||
|
%% Config0 = Config1 = [tuple()]
|
||||||
|
%% A list of key/value pairs, holding configuration data for the group.
|
||||||
|
%%
|
||||||
|
%% Description: Cleanup after each test case group.
|
||||||
|
%%--------------------------------------------------------------------
|
||||||
|
end_per_group(_group, Config) ->
|
||||||
|
Config.
|
||||||
|
|
||||||
|
%%--------------------------------------------------------------------
|
||||||
|
%% Function: init_per_testcase(TestCase, Config0) ->
|
||||||
|
%% Config1 | {skip,Reason} | {skip_and_save,Reason,Config1}
|
||||||
|
%%
|
||||||
|
%% TestCase = atom()
|
||||||
|
%% Name of the test case that is about to run.
|
||||||
|
%% Config0 = Config1 = [tuple()]
|
||||||
|
%% A list of key/value pairs, holding the test case configuration.
|
||||||
|
%% Reason = term()
|
||||||
|
%% The reason for skipping the test case.
|
||||||
|
%%
|
||||||
|
%% Description: Initialization before each test case.
|
||||||
|
%%
|
||||||
|
%% Note: This function is free to add any key/value pairs to the Config
|
||||||
|
%% variable, but should NOT alter/remove any existing entries.
|
||||||
|
%%--------------------------------------------------------------------
|
||||||
|
init_per_testcase(TestCase, Config) ->
|
||||||
|
Config.
|
||||||
|
|
||||||
|
%%--------------------------------------------------------------------
|
||||||
|
%% Function: end_per_testcase(TestCase, Config0) ->
|
||||||
|
%% void() | {save_config,Config1} | {fail,Reason}
|
||||||
|
%%
|
||||||
|
%% TestCase = atom()
|
||||||
|
%% Name of the test case that is finished.
|
||||||
|
%% Config0 = Config1 = [tuple()]
|
||||||
|
%% A list of key/value pairs, holding the test case configuration.
|
||||||
|
%% Reason = term()
|
||||||
|
%% The reason for failing the test case.
|
||||||
|
%%
|
||||||
|
%% Description: Cleanup after each test case.
|
||||||
|
%%--------------------------------------------------------------------
|
||||||
|
end_per_testcase(TestCase, Config) ->
|
||||||
|
Config.
|
||||||
|
|
||||||
|
test_{{testmod}}() ->
|
||||||
|
[{userdata,[{doc,"Testing the {{testmod}} module"}]}].
|
||||||
|
|
||||||
|
test_{{testmod}}(_Config) ->
|
||||||
|
{skip,"Not implemented."}.
|
2
priv/templates/ctsuite.template
Normal file
2
priv/templates/ctsuite.template
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
{variables, [{testmod, "mymodule"}]}.
|
||||||
|
{template, "ctsuite.erl", "test/{{testmod}}_SUITE.erl"}.
|
Loading…
Reference in a new issue