Просмотр исходного кода

test: delete emqx_ft_fs_utils_SUITE_data from source code

zhongwencool 2 лет назад
Родитель
Сommit
a10107045f

+ 49 - 0
apps/emqx_ft/test/emqx_ft_fs_util_SUITE.erl

@@ -26,6 +26,51 @@
 all() ->
     emqx_common_test_helpers:all(?MODULE).
 
+%%├── a
+%%│   ├── b
+%%│   │  └── foo
+%%│   │     ├── 42
+%%│   │     └── Я
+%%│   └── link -> ../c
+%%├── c
+%%│   ├── bar
+%%│   │  └── 中文
+%%│   └── link -> ../a
+%%└── d
+%%    ├── e
+%%    │  └── baz
+%%    │      └── needle
+%%    └── haystack
+
+init_per_suite(Config) ->
+    Root = ?config(data_dir, Config),
+    A = filename:join([Root, "a", "b", "foo"]),
+    C = filename:join([Root, "c", "bar"]),
+    D = filename:join([Root, "d", "e", "baz"]),
+
+    F42 = filename:join([A, "42"]),
+    F42_1 = filename:join([A, "Я"]),
+    FBar = filename:join([C, "中文"]),
+    FNeedle = filename:join([D, "needle"]),
+    FHayStack = filename:join([Root, "d", "haystack"]),
+    Files = [F42, F42_1, FBar, FNeedle, FHayStack],
+    lists:foreach(fun filelib:ensure_dir/1, Files),
+    %% create files
+    lists:foreach(fun(File) -> file:write_file(File, <<"">>, [write]) end, Files),
+    %% create links
+    ALink = filename:join([Root, "a", "link"]),
+    CLink = filename:join([Root, "c", "link"]),
+    make_symlink("../c", ALink),
+    make_symlink("../a", CLink),
+    Config.
+
+end_per_suite(Config) ->
+    Root = ?config(data_dir, Config),
+    ok = file:del_dir_r(filename:join([Root, "a"])),
+    ok = file:del_dir_r(filename:join([Root, "c"])),
+    ok = file:del_dir_r(filename:join([Root, "d"])),
+    ok.
+
 t_fold_single_level(Config) ->
     Root = ?config(data_dir, Config),
     ?assertMatch(
@@ -248,3 +293,7 @@ cons(Entry, Acc) ->
 
 sort(L) when is_list(L) ->
     lists:sort(L).
+
+make_symlink(FileOrDir, NewLink) ->
+    _ = file:delete(NewLink),
+    ok = file:make_symlink(FileOrDir, NewLink).

+ 0 - 0
apps/emqx_ft/test/emqx_ft_fs_util_SUITE_data/a/b/foo/42


+ 0 - 1
apps/emqx_ft/test/emqx_ft_fs_util_SUITE_data/a/b/foo/Я

@@ -1 +0,0 @@
-Ты

+ 0 - 1
apps/emqx_ft/test/emqx_ft_fs_util_SUITE_data/a/link

@@ -1 +0,0 @@
-../c

+ 0 - 1
apps/emqx_ft/test/emqx_ft_fs_util_SUITE_data/c/bar/中文

@@ -1 +0,0 @@
-Zhōngwén

+ 0 - 1
apps/emqx_ft/test/emqx_ft_fs_util_SUITE_data/c/link

@@ -1 +0,0 @@
-../a

+ 0 - 1
apps/emqx_ft/test/emqx_ft_fs_util_SUITE_data/d/e/baz/needle

@@ -1 +0,0 @@
-haystack

+ 0 - 1
apps/emqx_ft/test/emqx_ft_fs_util_SUITE_data/d/haystack

@@ -1 +0,0 @@
-needle

+ 21 - 21
apps/emqx_utils/test/emqx_utils_fs_SUITE.erl

@@ -34,31 +34,23 @@ init_per_suite(Config) ->
     F2 = filename:join([D1, "2"]),
     DeepDir = filename:join([Root, "nonempty", "d2", "deep", "down/"]),
     DeepFile = filename:join([DeepDir, "here"]),
-    ok = filelib:ensure_dir(F1),
-    ok = filelib:ensure_dir(F2),
-    ok = filelib:ensure_dir(DeepFile),
-    D1Mutrec = filename:join([D1, "mutrec"]),
-    D2Mutrec = filename:join([D2, "deep", "mutrec"]),
-    ok = file:write_file(F1, <<"">>, [write]),
-    ok = file:write_file(F2, <<"">>, [write]),
-    ok = file:write_file(DeepFile, <<"">>, [write]),
-    {ok, D1FileInfo} = file:read_file_info(D1),
-    ok = file:write_file_info(D1, D1FileInfo#file_info{mode = 8#00777}),
-    _ = file:delete(D1Mutrec),
-    _ = file:delete(D2Mutrec),
-    ok = file:make_symlink(DeepDir, D1Mutrec),
-    %% can't file:make_link("../../d1", D2Mutrec) on mac, it return {error, eperm}
-    ok = file:make_symlink("../../d1", D2Mutrec),
-    {ok, DeepFileInfo} = file:read_file_info(DeepFile),
-    ok = file:write_file_info(DeepFile, DeepFileInfo#file_info{mode = 8#00600}),
-    {ok, D2MutrecInfo} = file:read_link_info(D2Mutrec),
-    ct:pal("~p~n", [D2MutrecInfo]),
-    %ok = file:write_link_info(D2Mutrec, D2MutrecInfo#file_info{mode = 8#00777}),
+    Files = [F1, F2, DeepFile],
+    lists:foreach(fun filelib:ensure_dir/1, Files),
+    D1LinkMutrec = filename:join([D1, "mutrec"]),
+    D2LinkMutrec = filename:join([D2, "deep", "mutrec"]),
+    lists:foreach(fun(File) -> file:write_file(File, <<"">>, [write]) end, Files),
+    chmod_file(D1, 8#00777),
+    chmod_file(DeepFile, 8#00600),
+    make_symlink(DeepDir, D1LinkMutrec),
+    %% can't file:make_link("../../d1", D2Mutrec) on mac, return {error, eperm}
+    make_symlink("../../d1", D2LinkMutrec),
+    {ok, D2MutrecInfo} = file:read_link_info(D2LinkMutrec),
+    ct:pal("~ts 's file_info is ~p~n", [D2LinkMutrec, D2MutrecInfo]),
     Config.
 
 end_per_suite(Config) ->
     Root = ?config(data_dir, Config),
-    %ok = file:del_dir_r(filename:join([Root, "nonempty"])),
+    ok = file:del_dir_r(filename:join([Root, "nonempty"])),
     ok.
 
 %%
@@ -150,3 +142,11 @@ t_canonicalize_non_utf8(_) ->
         badarg,
         emqx_utils_fs:canonicalize(<<128, 128, 128>>)
     ).
+
+chmod_file(File, Mode) ->
+    {ok, FileInfo} = file:read_file_info(File),
+    ok = file:write_file_info(File, FileInfo#file_info{mode = Mode}).
+
+make_symlink(FileOrDir, NewLink) ->
+    _ = file:delete(NewLink),
+    ok = file:make_symlink(FileOrDir, NewLink).