%% -*- erlang-indent-level: 4;indent-tabs-mode: nil -*-
%% ex: ts=4 sw=4 et
%% -------------------------------------------------------------------
%%
%% rebar: Erlang Build Tools
%%
%% Copyright (c) 2009, 2010 Dave Smith (dizzyd@dizzyd.com)
%%
%% Permission is hereby granted, free of charge, to any person obtaining a copy
%% of this software and associated documentation files (the "Software"), to deal
%% in the Software without restriction, including without limitation the rights
%% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
%% copies of the Software, and to permit persons to whom the Software is
%% furnished to do so, subject to the following conditions:
%%
%% The above copyright notice and this permission notice shall be included in
%% all copies or substantial portions of the Software.
%%
%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
%% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
%% THE SOFTWARE.
%% -------------------------------------------------------------------
%% @author Juhani Rankimies <juhani@juranki.com>
%% @doc Tests functionality of rebar_file_utils module.
%% @copyright 2009, 2010 Dave Smith
%% -------------------------------------------------------------------
-module(rebar_file_utils_tests).

-compile(export_all).

-include_lib("eunit/include/eunit.hrl").

-define(TMP_DIR, "tmp_file_utils").

-define(SRC, "source dir?").
-define(DST, "dest (dir)").
-define(FILE1, "file 1").
-define(FILE2, "file(2)").
-define(DIR_TREE, [{d,?SRC,[{f,?FILE1},
                            {f,?FILE2}]},
                   {d,?DST,[]}]).
-define(FILE_CONTENT, <<"1234567890">>).

%% ====================================================================
%% delete_each tests
%% ====================================================================

delete_bogus_test_() ->
    {"delete_each survives nonexisting files",
     [?_assertMatch(ok, rebar_file_utils:delete_each(["bogus"])),
      ?_assertMatch(ok, rebar_file_utils:delete_each(["bogus1","bogus2"]))]}.

delete_each_test_() ->
    {"delete_each removes files",
     setup,
     fun() ->
             setup(),
             rebar_file_utils:delete_each(file_list())
     end,
     fun teardown/1,
     [assert_files_not_in(?SRC, file_list())]}.

%% ====================================================================
%% rm_rf tests
%% ====================================================================

rm_rf_wildcard_test_() ->
    {"rm_rf removes files based on wildcard spec",
     setup,
     fun() ->
             setup(),
             rebar_file_utils:rm_rf(filename:join([?TMP_DIR,?SRC,"file*"]))
     end,
     fun teardown/1,
     [assert_files_not_in(?SRC, file_list())]}.

rm_rf_dir_test_() ->
    {"rm_rf removes directory tree",
     setup,
     fun() ->
             setup(),
             rebar_file_utils:rm_rf(filename:join([?TMP_DIR,?SRC]))
     end,
     fun teardown/1,
     [?_assertNot(filelib:is_dir(filename:join([?TMP_DIR,?SRC])))]}.

%% ====================================================================
%% cp_r tests
%% ====================================================================

cp_r_file_to_file_test_() ->
    {"cp_r copies a file to file",
     setup,
     fun() ->
             setup(),
             rebar_file_utils:cp_r([filename:join([?TMP_DIR,?SRC,?FILE1])],
                                   filename:join([?TMP_DIR,?DST,"new_file"]))
     end,
     fun teardown/1,
     [?_assert(filelib:is_regular(filename:join([?TMP_DIR,?DST,"new_file"])))]}.

cp_r_file_to_dir_test_() ->
    {"cp_r copies a file to directory",
     setup,
     fun() ->
             setup(),
             rebar_file_utils:cp_r([filename:join([?TMP_DIR,?SRC,?FILE1])],
                                   filename:join([?TMP_DIR,?DST]))
     end,
     fun teardown/1,
     [?_assert(filelib:is_regular(filename:join([?TMP_DIR,?DST,?FILE1])))]}.

cp_r_dir_to_dir_test_() ->
    {"cp_r copies a directory to directory",
     setup,
     fun() ->
             setup(),
             rebar_file_utils:cp_r([filename:join([?TMP_DIR,?SRC])],
                                   filename:join([?TMP_DIR,?DST]))
     end,
     fun teardown/1,
     [?_assert(filelib:is_dir(filename:join([?TMP_DIR,?DST,?SRC]))),
      assert_files_in("dest/source",
                      [filename:join([?TMP_DIR,?DST,?SRC,F]) ||
                          F <- [?FILE1,?FILE2]])]}.

cp_r_wildcard_file_to_dir_test_() ->
    {"cp_r copies wildcard files to directory",
     setup,
     fun() ->
             setup(),
             rebar_file_utils:cp_r([filename:join([?TMP_DIR,?SRC,"*1"])],
                                   filename:join([?TMP_DIR,?DST]))
     end,
     fun teardown/1,
     [?_assert(filelib:is_regular(filename:join([?TMP_DIR,?DST,?FILE1])))]}.

cp_r_wildcard_dir_to_dir_test_() ->
    {"cp_r copies wildcard directory to directory",
     setup,
     fun() ->
             setup(),
             rebar_file_utils:cp_r([filename:join([?TMP_DIR,"sour*"])],
                                   filename:join([?TMP_DIR,?DST]))
     end,
     fun teardown/1,
     [?_assert(filelib:is_dir(filename:join([?TMP_DIR,?DST,?SRC]))),
      assert_files_in("dest/source",
                      [filename:join([?TMP_DIR,?DST,?SRC,F]) ||
                          F <- [?FILE1,?FILE2]])]}.

cp_r_overwrite_file_test_() ->
    {"cp_r overwrites destination file",
     setup,
     fun() ->
             setup(),
             ok = file:write_file(filename:join([?TMP_DIR,?DST,?FILE1]),
                                  <<"test">>),
             rebar_file_utils:cp_r([filename:join([?TMP_DIR,?SRC,?FILE1])],
                                   filename:join([?TMP_DIR,?DST]))
     end,
     fun teardown/1,
     [?_assertMatch({ok,?FILE_CONTENT},
                    file:read_file(
                      filename:join([?TMP_DIR,?DST,?FILE1])))]}.

cp_r_overwrite_dir_test_() ->
    {"cp_r overwrites destination file (xcopy case on win32)",
     setup,
     fun() ->
             setup(),
             ok = file:make_dir(filename:join([?TMP_DIR,?DST,?SRC])),
             ok = file:write_file(
                    filename:join([?TMP_DIR,?DST,?SRC,?FILE1]),
                    <<"test">>),
             rebar_file_utils:cp_r([filename:join([?TMP_DIR,?SRC])],
                                   filename:join([?TMP_DIR,?DST]))
     end,
     fun teardown/1,
     [?_assertMatch({ok,?FILE_CONTENT},
                    file:read_file(
                      filename:join([?TMP_DIR,?DST,?SRC,?FILE1])))]}.

cp_r_overwrite_file_fail_test_() ->
    {"cp_r fails to fs permission errors (file:copy/2 case on win32)",
     setup,
     fun() ->
             setup(),
             ok = file:write_file(
                    filename:join([?TMP_DIR,?DST,?FILE1]),<<"test">>),
             ok = file:change_mode(
                    filename:join([?TMP_DIR,?DST,?FILE1]),0)
     end,
     fun teardown/1,
     [?_assertThrow(rebar_abort,
                    rebar_file_utils:cp_r(
                      [filename:join([?TMP_DIR,?SRC,?FILE1])],
                      filename:join([?TMP_DIR,?DST])))]}.

cp_r_overwrite_dir_fail_test_() ->
    {"cp_r fails to fs permission error (xcopy case on win32)",
     setup,
     fun() ->
             setup(),
             ok = file:make_dir(
                    filename:join([?TMP_DIR,?DST,?SRC])),
             ok = file:write_file(
                    filename:join([?TMP_DIR,?DST,?SRC,?FILE1]),
                    <<"test">>),
             ok = file:change_mode(
                    filename:join([?TMP_DIR,?DST,?SRC,?FILE1]),0)
     end,
     fun teardown/1,
     [?_assertThrow(rebar_abort,
                    rebar_file_utils:cp_r(
                      [filename:join([?TMP_DIR,?SRC])],
                      filename:join([?TMP_DIR,?DST])))]}.

mv_file_test_() ->
    {"move a file to folder",
     setup,
     fun() ->
             setup(),
             rebar_file_utils:mv(filename:join([?TMP_DIR,?SRC,?FILE1]),
                                 filename:join([?TMP_DIR,?DST]))
     end,
     fun teardown/1,
     [?_assert(filelib:is_regular(filename:join([?TMP_DIR,?DST,?FILE1]))),
      ?_assertNot(filelib:is_regular(
                    filename:join([?TMP_DIR,?SRC,?FILE1])))]}.

%% ====================================================================
%% Utilities
%% ====================================================================

file_list() ->
    [filename:join([?TMP_DIR,?SRC,F]) || F <- [?FILE1,?FILE2]].

%% ====================================================================
%% Setup and Teardown
%% ====================================================================

setup() ->
    make_dir_tree(?TMP_DIR,?DIR_TREE).

make_dir_tree(Parent, [{d,Dir,Contents} | Rest]) ->
    NewDir = filename:join(Parent,Dir),
    ok = filelib:ensure_dir(filename:join(NewDir, "tmp")),
    ok = make_dir_tree(NewDir,Contents),
    ok = make_dir_tree(Parent,Rest);
make_dir_tree(Parent, [{f,File} | Rest]) ->
    ok = file:write_file(filename:join(Parent,File),?FILE_CONTENT),
    ok = make_dir_tree(Parent,Rest);
make_dir_tree(_,[]) ->
    ok.

teardown(_) ->
    case os:type() of
        {unix, _} ->
            os:cmd("rm -rf " ++ ?TMP_DIR ++ " 2>/dev/null");
        {win32, _} ->
            os:cmd("rmdir /S /Q " ++ filename:nativename(?TMP_DIR))
    end.

%% ====================================================================
%% Assert helpers
%% ====================================================================

assert_files_in(Name, [File|T]) ->
    [{Name ++ " has file: " ++ File, ?_assert(filelib:is_regular(File))} |
     assert_files_in(Name, T)];
assert_files_in(_, []) -> [].

assert_files_not_in(Name, [File|T]) ->
    [{Name ++ " does not have file: " ++ File,
      ?_assertNot(filelib:is_regular(File))} |
     assert_files_not_in(Name, T)];
assert_files_not_in(_, []) -> [].
