Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

86 строки
2.6 KiB

  1. -module(rebar_file_utils_SUITE).
  2. -export([all/0,
  3. groups/0,
  4. init_per_group/2,
  5. end_per_group/2,
  6. raw_tmpdir/1,
  7. empty_tmpdir/1,
  8. simple_tmpdir/1,
  9. multi_tmpdir/1,
  10. reset_nonexistent_dir/1,
  11. reset_empty_dir/1,
  12. reset_dir/1]).
  13. -include_lib("common_test/include/ct.hrl").
  14. -include_lib("eunit/include/eunit.hrl").
  15. -include_lib("kernel/include/file.hrl").
  16. all() ->
  17. [{group, tmpdir},
  18. {group, reset_dir}].
  19. groups() ->
  20. [{tmpdir, [], [raw_tmpdir, empty_tmpdir, simple_tmpdir, multi_tmpdir]},
  21. {reset_dir, [], [reset_nonexistent_dir, reset_empty_dir, reset_dir]}].
  22. init_per_group(reset_dir, Config) ->
  23. TmpDir = rebar_file_utils:system_tmpdir(["rebar_file_utils_SUITE", "resetable"]),
  24. [{tmpdir, TmpDir}|Config];
  25. init_per_group(_, Config) -> Config.
  26. end_per_group(_, Config) -> Config.
  27. raw_tmpdir(_Config) ->
  28. case rebar_file_utils:system_tmpdir() of
  29. "/tmp" -> ok;
  30. "./tmp" -> ok
  31. end.
  32. empty_tmpdir(_Config) ->
  33. case rebar_file_utils:system_tmpdir([]) of
  34. "/tmp" -> ok;
  35. "./tmp" -> ok
  36. end.
  37. simple_tmpdir(_Config) ->
  38. case rebar_file_utils:system_tmpdir(["test"]) of
  39. "/tmp/test" -> ok;
  40. "./tmp/test" -> ok
  41. end.
  42. multi_tmpdir(_Config) ->
  43. case rebar_file_utils:system_tmpdir(["a", "b", "c"]) of
  44. "/tmp/a/b/c" -> ok;
  45. "./tmp/a/b/c" -> ok
  46. end.
  47. reset_nonexistent_dir(Config) ->
  48. TmpDir = ?config(tmpdir, Config),
  49. _ = ec_file:remove(TmpDir, [recursive]),
  50. ?assertNot(filelib:is_dir(TmpDir)),
  51. ok = rebar_file_utils:reset_dir(TmpDir),
  52. ?assert(filelib:is_dir(TmpDir)),
  53. {ok, []} = file:list_dir(TmpDir).
  54. reset_empty_dir(Config) ->
  55. TmpDir = ?config(tmpdir, Config),
  56. _ = ec_file:remove(TmpDir, [recursive]),
  57. _ = filelib:ensure_dir(filename:join([TmpDir, "dummy.beam"])),
  58. ?assert(filelib:is_dir(TmpDir)),
  59. ok = rebar_file_utils:reset_dir(TmpDir),
  60. ?assert(filelib:is_dir(TmpDir)),
  61. {ok, []} = file:list_dir(TmpDir).
  62. reset_dir(Config) ->
  63. TmpDir = ?config(tmpdir, Config),
  64. _ = ec_file:remove(TmpDir, [recursive]),
  65. _ = filelib:ensure_dir(filename:join([TmpDir, "dummy.beam"])),
  66. ?assert(filelib:is_dir(TmpDir)),
  67. lists:foreach(fun(Name) -> file:write_file(filename:join([TmpDir, Name]), <<>>) end,
  68. ["a", "b", "c"]),
  69. lists:foreach(fun(File) -> ?assert(filelib:is_file(filename:join([TmpDir, File]))) end,
  70. ["a", "b", "c"]),
  71. ok = rebar_file_utils:reset_dir(TmpDir),
  72. ?assert(filelib:is_dir(TmpDir)),
  73. {ok, []} = file:list_dir(TmpDir).