@ -513,44 +513,39 @@ inject_test_dir(Opts, Dir) ->
rebar_opts : set ( Opts , extra_src_dirs , ExtraSrcDirs ++ [ Dir ] ) .
translate_paths ( State , Opts ) - >
case { proplists : get_value ( suite , Opts ) , proplists : get_value ( dir , Opts ) } of
{ _ Suites , undefined } - > translate_suites ( State , Opts , [ ] ) ;
{ undefined , _ Dirs } - > translate_dirs ( State , Opts , [ ] ) ;
% % both dirs and suites are defined , only translate dir paths
_ - > translate_dirs ( State , Opts , [ ] )
case proplists : get_value ( spec , Opts ) of
undefined - >
case { proplists : get_value ( suite , Opts ) , proplists : get_value ( dir , Opts ) } of
{ _ Suites , undefined } - > translate_paths ( State , suite , Opts , [ ] ) ;
{ undefined , _ Dirs } - > translate_paths ( State , dir , Opts , [ ] ) ;
% % both dirs and suites are defined , only translate dir paths
_ - > translate_paths ( State , dir , Opts , [ ] )
end ;
_ Specs - >
translate_paths ( State , spec , Opts , [ ] )
end .
translate_dirs ( _ State , [ ] , Acc ) - > lists : reverse ( Acc ) ;
translate_dirs ( State , [ { dir , Dir } | Rest ] , Acc ) when is_integer ( hd ( Dir ) ) - >
% % single dir
Apps = rebar_state : project_apps ( State ) ,
translate_dirs ( State , Rest , [ { dir , translate ( State , Apps , Dir ) } | Acc ] ) ;
translate_dirs ( State , [ { dir , Dirs } | Rest ] , Acc ) - >
% % multiple dirs
Apps = rebar_state : project_apps ( State ) ,
NewDirs = { dir , lists : map ( fun ( Dir ) - > translate ( State , Apps , Dir ) end , Dirs ) } ,
translate_dirs ( State , Rest , [ NewDirs | Acc ] ) ;
translate_dirs ( State , [ Test | Rest ] , Acc ) - >
translate_dirs ( State , Rest , [ Test | Acc ] ) .
translate_suites ( _ State , [ ] , Acc ) - > lists : reverse ( Acc ) ;
translate_suites ( State , [ { suite , Suite } | Rest ] , Acc ) when is_integer ( hd ( Suite ) ) - >
% % single suite
translate_paths ( _ State , _ Type , [ ] , Acc ) - > lists : reverse ( Acc ) ;
translate_paths ( State , Type , [ { Type , Val } | Rest ] , Acc ) when is_integer ( hd ( Val ) ) - >
% % single file or dir
translate_paths ( State , Type , [ { Type , [ Val ] } | Rest ] , Acc ) ;
translate_paths ( State , dir , [ { dir , Dirs } | Rest ] , Acc ) - >
Apps = rebar_state : project_apps ( State ) ,
translate_suites ( State , Rest , [ { suite , translate_suite ( State , Apps , Suite ) } | Acc ] ) ;
translate_suites ( State , [ { suite , Suites } | Rest ] , Acc ) - >
% % multiple suites
New = { dir , lists : map ( fun ( Dir ) - > translate ( State , Apps , Dir ) end , Dirs ) } ,
translate_paths ( State , dir , Rest , [ New | Acc ] ) ;
translate_paths ( State , Type , [ { Type , Files } | Rest ] , Acc ) - >
% % Type = suites | specs
Apps = rebar_state : project_apps ( State ) ,
NewSuites = { suit e, lists : map ( fun ( Suit e) - > translate_suit e ( State , Apps , Suit e) end , Suit es) } ,
translate_suite s ( State , Rest , [ NewSuites | Acc ] ) ;
translate_suite s ( State , [ Test | Rest ] , Acc ) - >
translate_suite s ( State , Rest , [ Test | Acc ] ) .
translate_suit e ( State , Apps , Suit e) - >
Dirname = filename : dirname ( Suit e) ,
Basename = filename : basename ( Suit e) ,
New = { Type , lists : map ( fun ( File ) - > translate_file ( State , Apps , File ) end , Files ) } ,
translate_paths ( State , Type , Rest , [ New | Acc ] ) ;
translate_paths ( State , Type , [ Test | Rest ] , Acc ) - >
translate_paths ( State , Type , Rest , [ Test | Acc ] ) .
translate_fil e ( State , Apps , Fil e) - >
Dirname = filename : dirname ( Fil e) ,
Basename = filename : basename ( Fil e) ,
case Dirname of
" . " - > Suit e;
" . " - > Fil e;
_ - > filename : join ( [ translate ( State , Apps , Dirname ) , Basename ] )
end .