aboutsummaryrefslogtreecommitdiffstats
path: root/lib/common_test
diff options
context:
space:
mode:
Diffstat (limited to 'lib/common_test')
-rwxr-xr-xlib/common_test/src/ct_config.erl22
-rw-r--r--lib/common_test/src/ct_testspec.erl23
2 files changed, 37 insertions, 8 deletions
diff --git a/lib/common_test/src/ct_config.erl b/lib/common_test/src/ct_config.erl
index 63e44b6301..8e2f71647f 100755
--- a/lib/common_test/src/ct_config.erl
+++ b/lib/common_test/src/ct_config.erl
@@ -188,9 +188,7 @@ process_user_configs(Opts, Acc)->
process_user_configs(NewOpts, [{Callback, Files} | Acc]);
{value, {userconfig, {Callback, File=[C|_]}}, NewOpts} when
is_integer(C)->
- process_user_configs(NewOpts, [{Callback, [File]} | Acc]);
- {value, {userconfig, {_Callback, []}}, NewOpts}->
- process_user_configs(NewOpts, Acc)
+ process_user_configs(NewOpts, [{Callback, [File]} | Acc])
end.
get_config_file_list(Opts)->
@@ -675,12 +673,26 @@ random_bytes(N) ->
random_bytes_1(0, Acc) -> Acc;
random_bytes_1(N, Acc) -> random_bytes_1(N-1, [random:uniform(255)|Acc]).
+check_callback_load(Callback)->
+ case code:is_loaded(Callback) of
+ {file, _Filename}->
+ {ok, Callback};
+ false->
+ case code:load_file(Callback) of
+ {module, Callback}->
+ {ok, Callback};
+ {error, Error}->
+ {error, Error}
+ end
+ end.
+
check_config_files(Configs)->
+ ct:pal("ct_config:check_config_files(~p)", [Configs]),
lists:keysearch(nok, 1,
lists:flatten(
lists:map(fun({Callback, Files})->
- case code:load_file(Callback) of
- {module, Callback}->
+ case check_callback_load(Callback) of
+ {ok, Callback}->
lists:map(fun(File)->
Callback:check_parameter(File)
end,
diff --git a/lib/common_test/src/ct_testspec.erl b/lib/common_test/src/ct_testspec.erl
index 4378ec5a52..169c614955 100644
--- a/lib/common_test/src/ct_testspec.erl
+++ b/lib/common_test/src/ct_testspec.erl
@@ -417,23 +417,40 @@ add_tests([{cover,File}|Ts],Spec) ->
%% --- config ---
add_tests([{config,all_nodes,Files}|Ts],Spec) ->
- Tests = lists:map(fun(N) -> {config,N,Files} end, list_nodes(Spec)),
+ io:format("1: add_tests([{config,all_nodes,~p}|~p],~p~n", [Files, Ts, Spec]),
+ Tests = lists:map(fun(N) -> {config,N,{ct_config_plain,Files}} end, list_nodes(Spec)),
add_tests(Tests++Ts,Spec);
add_tests([{config,Nodes,Files}|Ts],Spec) when is_list(Nodes) ->
+ io:format("2: add_tests([{config,~p,~p}|~p],~p) when is_list(Nodes)~n", [Nodes,Files,Spec,Nodes]),
Ts1 = separate(Nodes,config,[Files],Ts,Spec#testspec.nodes),
add_tests(Ts1,Spec);
-add_tests([{config,Node,[F|Fs]}|Ts],Spec) when is_list(F) ->
+add_tests([{config,Node,[{Callback,F}|Fs]}|Ts],Spec) when is_list(F) ->
+ io:format("3: add_tests([{config,~p,[~p|~p]}|~p],~p) when is_list(~p)~n", [Node, F, Fs, Ts, Spec, F]),
Cfgs = Spec#testspec.config,
Node1 = ref2node(Node,Spec#testspec.nodes),
add_tests([{config,Node,Fs}|Ts],
- Spec#testspec{config=[{Node1,get_absfile(F,Spec)}|Cfgs]});
+% TODO FIX IT SOMEHOW! There SHOULD be absolute paths,
+% but it can't be applied to the config parameters
+% probably, that's a good idea to call Callback:check_parameter/1
+% and proceed according to the results
+% Spec#testspec{config=[{Node1,{Callback, get_absfile(F,Spec)}}|Cfgs]});
+ Spec#testspec{config=[{Node1,{Callback,[F]}}|Cfgs]});
add_tests([{config,_Node,[]}|Ts],Spec) ->
+ io:format("4: add_tests([{config,_,[]}|~p],~p)~n", [Ts, Spec]),
add_tests(Ts,Spec);
add_tests([{config,Node,F}|Ts],Spec) ->
+ io:format("5: add_tests([{config,~p,~p}|~p],~p)~n", [Node, F, Ts, Spec]),
add_tests([{config,Node,[F]}|Ts],Spec);
add_tests([{config,Files}|Ts],Spec) ->
+ io:format("6: add_tests([{config,~p}|~p],~p)~n", [Files, Ts, Spec]),
add_tests([{config,all_nodes,Files}|Ts],Spec);
+%% --- userconfig ---
+add_tests([{userconfig, {Callback, Files}}|Ts], Spec)->
+ io:format("add_tests([{userconfig, {~p, ~p}}|~p], ~p)~n", [Callback, Files, Ts, Spec]),
+ Tests = lists:map(fun(N) -> {config,N,{Callback,Files}} end, list_nodes(Spec)),
+ add_tests(Tests++Ts,Spec);
+
%% --- event_handler ---
add_tests([{event_handler,all_nodes,Hs}|Ts],Spec) ->
Tests = lists:map(fun(N) -> {event_handler,N,Hs,[]} end, list_nodes(Spec)),