diff options
Diffstat (limited to 'lib/stdlib/test')
| -rw-r--r-- | lib/stdlib/test/filelib_SUITE.erl | 55 | ||||
| -rw-r--r-- | lib/stdlib/test/filename_SUITE.erl | 6 | ||||
| -rw-r--r-- | lib/stdlib/test/shell_SUITE.erl | 2 | 
3 files changed, 58 insertions, 5 deletions
| diff --git a/lib/stdlib/test/filelib_SUITE.erl b/lib/stdlib/test/filelib_SUITE.erl index 4f8936edbf..87fba815d2 100644 --- a/lib/stdlib/test/filelib_SUITE.erl +++ b/lib/stdlib/test/filelib_SUITE.erl @@ -25,7 +25,8 @@  	 init_per_testcase/2,end_per_testcase/2,  	 wildcard_one/1,wildcard_two/1,wildcard_errors/1,  	 fold_files/1,otp_5960/1,ensure_dir_eexist/1,ensure_dir_symlink/1, -	 wildcard_symlink/1, is_file_symlink/1, file_props_symlink/1]). +	 wildcard_symlink/1, is_file_symlink/1, file_props_symlink/1, +         find_source/1]).  -import(lists, [foreach/2]). @@ -45,7 +46,8 @@ suite() ->  all() ->       [wildcard_one, wildcard_two, wildcard_errors,       fold_files, otp_5960, ensure_dir_eexist, ensure_dir_symlink, -     wildcard_symlink, is_file_symlink, file_props_symlink]. +     wildcard_symlink, is_file_symlink, file_props_symlink, +     find_source].  groups() ->       []. @@ -503,3 +505,52 @@ file_props_symlink(Config) ->  	    FileSize = filelib:file_size(Alias, erl_prim_loader),  	    FileSize = filelib:file_size(Alias, prim_file)      end. + +find_source(Config) when is_list(Config) -> +    BeamFile = code:which(lists), +    BeamName = filename:basename(BeamFile), +    BeamDir = filename:dirname(BeamFile), +    SrcName = filename:basename(BeamFile, ".beam") ++ ".erl", + +    {ok, BeamFile} = filelib:find_file(BeamName, BeamDir), +    {ok, BeamFile} = filelib:find_file(BeamName, BeamDir, []), +    {ok, BeamFile} = filelib:find_file(BeamName, BeamDir, [{"",""},{"ebin","src"}]), +    {error, not_found} = filelib:find_file(BeamName, BeamDir, [{"ebin","src"}]), + +    {ok, SrcFile} = filelib:find_file(SrcName, BeamDir), +    {ok, SrcFile} = filelib:find_file(SrcName, BeamDir, []), +    {ok, SrcFile} = filelib:find_file(SrcName, BeamDir, [{"foo","bar"},{"ebin","src"}]), +    {error, not_found} = filelib:find_file(SrcName, BeamDir, [{"",""}]), + +    {ok, SrcFile} = filelib:find_source(BeamFile), +    {ok, SrcFile} = filelib:find_source(BeamName, BeamDir), +    {ok, SrcFile} = filelib:find_source(BeamName, BeamDir, +                                         [{".erl",".yrl",[{"",""}]}, +                                          {".beam",".erl",[{"ebin","src"}]}]), +    {error, not_found} = filelib:find_source(BeamName, BeamDir, +                                              [{".erl",".yrl",[{"",""}]}]), + +    {ok, ParserErl} = filelib:find_source(code:which(erl_parse)), +    {ok, ParserYrl} = filelib:find_source(ParserErl), +    "lry." ++ _ = lists:reverse(ParserYrl), +    {ok, ParserYrl} = filelib:find_source(ParserErl, +                                           [{".beam",".erl",[{"ebin","src"}]}, +                                            {".erl",".yrl",[{"",""}]}]), + +    %% find_source automatically checks the local directory regardless of rules +    {ok, ParserYrl} = filelib:find_source(ParserErl), +    {ok, ParserYrl} = filelib:find_source(ParserErl, +                                          [{".beam",".erl",[{"ebin","src"}]}]), + +    %% find_file does not check the local directory unless in the rules +    ParserYrlName = filename:basename(ParserYrl), +    ParserYrlDir = filename:dirname(ParserYrl), +    {ok, ParserYrl} = filelib:find_file(ParserYrlName, ParserYrlDir, +                                        [{"",""}]), +    {error, not_found} = filelib:find_file(ParserYrlName, ParserYrlDir, +                                           [{"ebin","src"}]), + +    %% local directory is in the default list for find_file +    {ok, ParserYrl} = filelib:find_file(ParserYrlName, ParserYrlDir), +    {ok, ParserYrl} = filelib:find_file(ParserYrlName, ParserYrlDir, []), +    ok. diff --git a/lib/stdlib/test/filename_SUITE.erl b/lib/stdlib/test/filename_SUITE.erl index b7c4d3a6e5..54066021fb 100644 --- a/lib/stdlib/test/filename_SUITE.erl +++ b/lib/stdlib/test/filename_SUITE.erl @@ -421,8 +421,10 @@ t_nativename(Config) when is_list(Config) ->  find_src(Config) when is_list(Config) ->      {Source,_} = filename:find_src(file),      ["file"|_] = lists:reverse(filename:split(Source)), -    {_,_} = filename:find_src(init, [{".","."}, {"ebin","src"}]), -     +    {Source,_} = filename:find_src(file, [{"",""}, {"ebin","src"}]), +    {Source,_} = filename:find_src(Source), +    {Source,_} = filename:find_src(Source ++ ".erl"), +      %% Try to find the source for a preloaded module.      {error,{preloaded,init}} = filename:find_src(init), diff --git a/lib/stdlib/test/shell_SUITE.erl b/lib/stdlib/test/shell_SUITE.erl index 15ccdea284..4864bc3d72 100644 --- a/lib/stdlib/test/shell_SUITE.erl +++ b/lib/stdlib/test/shell_SUITE.erl @@ -282,7 +282,7 @@ restricted_local(Config) when is_list(Config) ->  	comm_err(<<"begin F=fun() -> hello end, foo(F) end.">>),      "exception error: undefined shell command banan/1" =  	comm_err(<<"begin F=fun() -> hello end, banan(F) end.">>), -    "{error,"++_ = t(<<"begin F=fun() -> hello end, c(F) end.">>), +    "Recompiling "++_ = t(<<"c(shell_SUITE).">>),      "exception exit: restricted shell does not allow l(" ++ _ =  	comm_err(<<"begin F=fun() -> hello end, l(F) end.">>),      "exception error: variable 'F' is unbound" = | 
