diff options
author | Mickaël Rémond <mremond@process-one.net> | 2015-02-22 19:41:17 +0300 |
---|---|---|
committer | Mickaël Rémond <mremond@process-one.net> | 2015-02-22 19:41:17 +0300 |
commit | 510a717dbb2f45431c2bcc3b22138ebe6cb43532 (patch) | |
tree | e2f0dd14b725d2778a7444124282f007f9413f0e /test | |
parent | d8b048663d7bd7f9549129a751d382073a9f7af0 (diff) |
Support for running Elixir ExUnit tests from Common Test
Diffstat (limited to 'test')
-rw-r--r-- | test/elixir_SUITE.erl | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/test/elixir_SUITE.erl b/test/elixir_SUITE.erl new file mode 100644 index 000000000..70500b162 --- /dev/null +++ b/test/elixir_SUITE.erl @@ -0,0 +1,55 @@ +%%%------------------------------------------------------------------- +%%% @author Mickael Remond <mremond@process-one.net> +%%% @copyright (C) 2002-2015, ProcessOne +%%% @doc +%%% This is a common test wrapper to run our ejabberd tests written in +%%% Elixir from standard common test code. +%%% +%%% Example: Is run with: +%%% ./rebar skip_deps=true ct suites=test/elixir_SUITE +%%% @end +%%% Created : 19 Feb 2015 by Mickael Remond <mremond@process-one.net> +%%%------------------------------------------------------------------- + +-module(elixir_SUITE). + +-compile(export_all). + +init_per_testcase(_TestCase, Config) -> + process_flag(error_handler, ?MODULE), + Config. + +all() -> + case is_elixir_available() of + true -> + Dir = test_dir(), + filelib:fold_files(Dir, ".*\.exs", false, + fun(Filename, Acc) -> [list_to_atom(filename:basename(Filename)) | Acc] end, + []); + false -> + [] + end. + +is_elixir_available() -> + case catch elixir:module_info() of + {'EXIT',{undef,_}} -> + false; + ModInfo when is_list(ModInfo) -> + true + end. + +undefined_function(?MODULE, Func, Args) -> + case lists:suffix(".exs", atom_to_list(Func)) of + true -> + 'Elixir.ExUnit':start([]), + 'Elixir.Code':load_file(list_to_binary(filename:join(test_dir(), atom_to_list(Func)))), + 'Elixir.ExUnit':run(); + false -> + error_handler:undefined_function(?MODULE, Func, Args) + end; +undefined_function(Module, Func, Args) -> + error_handler:undefined_function(Module, Func,Args). + +test_dir() -> + {ok, CWD} = file:get_cwd(), + filename:join(CWD, "../../test"). |