@ -42,6 +42,8 @@
deps_build_in_prod / 1 ,
include_file_relative_to_working_directory / 1 ,
include_file_in_src / 1 ,
include_file_relative_to_working_directory_test / 1 ,
include_file_in_src_test / 1 ,
always_recompile_when_erl_compiler_options_set / 1 ,
recompile_when_parse_transform_inline_changes / 1 ,
recompile_when_parse_transform_as_opt_changes / 1 ] ) .
@ -68,6 +70,7 @@ all() ->
umbrella_mib_first_test , only_default_transitive_deps ,
clean_all , override_deps , profile_override_deps , deps_build_in_prod ,
include_file_relative_to_working_directory , include_file_in_src ,
include_file_relative_to_working_directory_test , include_file_in_src_test ,
recompile_when_parse_transform_as_opt_changes ,
recompile_when_parse_transform_inline_changes ] ++
case erlang : function_exported ( os , unsetenv , 1 ) of
@ -769,7 +772,7 @@ dont_recompile_when_opts_dont_change(Config) ->
NewModTime = [ filelib : last_modified ( filename : join ( [ EbinDir , F ] ) )
| | F < - NewFiles , filename : extension ( F ) == " .beam " ] ,
? assert ( ModTime == NewModTime ) .
? assertEqual ( ModTime , NewModTime ) .
dont_recompile_yrl_or_xrl ( Config ) - >
AppDir = ? config ( apps , Config ) ,
@ -1314,6 +1317,72 @@ include_file_in_src(Config) ->
[ " compile " ] ,
{ ok , [ { app , Name } ] } ) .
% % verify that the proper include path is defined
% % according the erlang doc which states :
% % If the filename File is absolute ( possibly after variable substitution ) ,
% % the include file with that name is included . Otherwise , the specified file
% % is searched for in the following directories , and in this order :
% % * The current working directory
% % * The directory where the module is being compiled
% % * The directories given by the include option
% %
% % This test ensures that things keep working when additional directories
% % are used for apps , such as the test / directory within the test profile .
include_file_relative_to_working_directory_test ( Config ) - >
AppDir = ? config ( apps , Config ) ,
Name = rebar_test_utils : create_random_name ( " app1_ " ) ,
Vsn = rebar_test_utils : create_random_vsn ( ) ,
rebar_test_utils : create_app ( AppDir , Name , Vsn , [ kernel , stdlib ] ) ,
Src = < < " -module(test). \n "
" \n "
" -include( \" include/test.hrl \" ). \n "
" \n "
" test() -> ?TEST_MACRO. \n "
" \n " > > ,
Include = < < " -define(TEST_MACRO, test). \n " > > ,
ok = filelib : ensure_dir ( filename : join ( [ AppDir , " src " , " dummy " ] ) ) ,
ok = filelib : ensure_dir ( filename : join ( [ AppDir , " test " , " dummy " ] ) ) ,
ok = file : write_file ( filename : join ( [ AppDir , " test " , " test.erl " ] ) , Src ) ,
ok = filelib : ensure_dir ( filename : join ( [ AppDir , " include " , " dummy " ] ) ) ,
ok = file : write_file ( filename : join ( [ AppDir , " include " , " test.hrl " ] ) , Include ) ,
RebarConfig = [ ] ,
rebar_test_utils : run_and_check ( Config , RebarConfig ,
[ " as " , " test " , " compile " ] ,
{ ok , [ { app , Name } ] } ) .
% % Same as ` include_file_in_src / 1 ' but using the `test/' directory
% % within the test profile .
include_file_in_src_test ( Config ) - >
AppDir = ? config ( apps , Config ) ,
Name = rebar_test_utils : create_random_name ( " app1_ " ) ,
Vsn = rebar_test_utils : create_random_vsn ( ) ,
rebar_test_utils : create_app ( AppDir , Name , Vsn , [ kernel , stdlib ] ) ,
Src = < < " -module(test). \n "
" \n "
" -include( \" test.hrl \" ). \n "
" \n "
" test() -> ?TEST_MACRO. \n "
" \n " > > ,
Include = < < " -define(TEST_MACRO, test). \n " > > ,
ok = filelib : ensure_dir ( filename : join ( [ AppDir , " src " , " dummy " ] ) ) ,
ok = filelib : ensure_dir ( filename : join ( [ AppDir , " test " , " dummy " ] ) ) ,
ok = file : write_file ( filename : join ( [ AppDir , " test " , " test.erl " ] ) , Src ) ,
ok = file : write_file ( filename : join ( [ AppDir , " src " , " test.hrl " ] ) , Include ) ,
RebarConfig = [ ] ,
rebar_test_utils : run_and_check ( Config , RebarConfig ,
[ " as " , " test " , " compile " ] ,
{ ok , [ { app , Name } ] } ) .
always_recompile_when_erl_compiler_options_set ( Config ) - >
% % save existing env to restore after test
ExistingEnv = os : getenv ( " ERL_COMPILER_OPTIONS " ) ,