Erlang-Parser
view release on metacpan or search on metacpan
gettempdir(RestF, Normalize);
gettempdir([{F, [L | RestL]} | RestF], Normalize) ->
case Normalize(F(L)) of
false ->
gettempdir([{F, RestL} | RestF], Normalize);
Dir ->
Dir
end.
normalize_dir(False) when False =:= false orelse False =:= "" ->
%% Erlang doesn't have an unsetenv, wtf.
false;
normalize_dir(L) ->
Dir = filename:absname(L),
case filelib:is_dir(Dir) of
false ->
false;
true ->
Dir
end.
%%
%% Tests
%%
-ifdef(TEST).
-include_lib("eunit/include/eunit.hrl").
pushenv(L) ->
[{K, os:getenv(K)} || K <- L].
popenv(L) ->
F = fun ({K, false}) ->
%% Erlang doesn't have an unsetenv, wtf.
os:putenv(K, "");
({K, V}) ->
os:putenv(K, V)
end,
lists:foreach(F, L).
gettempdir_fallback_test() ->
?assertEqual(
"/",
gettempdir([{fun gettempdir_identity/1, ["/--not-here--/"]},
( run in 0.571 second using v1.01-cache-2.11-cpan-3989ada0592 )