@ -51,9 +51,13 @@ eunit(Config, _File) ->
% % Make sure ? EUNIT_DIR / directory exists ( tack on dummy module )
ok = filelib : ensure_dir ( ? EUNIT_DIR ++ " /foo " ) ,
% % grab all the test modules for inclusion in the compile stage
TestErls = rebar_utils : find_files ( " test " , " .* \\ .erl \ $ " ) ,
% % Compile erlang code to ? EUNIT_DIR , using a tweaked config
% % with appropriate defines for eunit
rebar_erlc_compiler : doterl_compile ( eunit_config ( Config ) , ? EUNIT_DIR ) ,
% % with appropriate defines for eunit , and include all the test modules
% % as well .
rebar_erlc_compiler : doterl_compile ( eunit_config ( Config ) , ? EUNIT_DIR , TestErls ) ,
% % Build a list of all the . beams in ? EUNIT_DIR -- use this for cover
% % and eunit testing . Normally you can just tell cover and / or eunit to
@ -62,8 +66,35 @@ eunit(Config, _File) ->
% % we do it by hand . : (
% %
% % TODO : Not currently compatible with package modules
Modules = [ list_to_atom ( filename : basename ( N , " .beam " ) ) | |
N < - filelib : wildcard ( " *.beam " , ? EUNIT_DIR ) ] ,
Beams = [ filename : basename ( N , " .beam " ) | | N < - filelib : wildcard ( " *.beam " , ? EUNIT_DIR ) ] ,
% % Grab two lists of test and non - test beam files
{ TestBeams , ModuleBeams } = lists : partition ( fun ( B ) - >
lists : suffix ( " _tests " , B ) end , Beams ) ,
case rebar_config : get_global ( suite , undefined ) of
undefined - >
% % no suite defined , so include all modules
RealModules = ModuleBeams ,
% % exclude any test modules that have a matching module
TestModules = [ T | | T < - TestBeams ,
lists : member ( string : left ( T , length ( T ) - 6 ) , RealModules ) == false ] ;
SuiteName - >
% % suite defined , so only specify the module that relates to the
% % suite ( if any )
RealModules = [ M | | M < - ModuleBeams , SuiteName =:= M ] ,
% % only include the test suite if the main module doesn ' t exist
TestModules = case length ( RealModules ) of
0 - > [ T | | T < - TestBeams , T =:= SuiteName ++ " _tests " ] ;
_ - > [ ]
end
end ,
% % combine the modules and associated test modules into the resulting list
% % of modules to run tests on .
Modules = [ list_to_atom ( M ) | | M < - RealModules ++ TestModules ] ,
% % TODO : If there are other wildcards specified in eunit_sources , compile them