From a4ceb21b38412cda488133b383c49717f3c35075 Mon Sep 17 00:00:00 2001 From: Luke Bakken Date: Tue, 30 Jul 2019 10:53:11 -0700 Subject: [PATCH] Fix rotate_file_fail_test on win32 --- src/lager_rotator_default.erl | 22 +++++++++++++++++----- src/lager_util.erl | 13 ++++++++++++- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/src/lager_rotator_default.erl b/src/lager_rotator_default.erl index 7a18de9..45921e9 100644 --- a/src/lager_rotator_default.erl +++ b/src/lager_rotator_default.erl @@ -138,22 +138,33 @@ rotate_file_zero_count_test() -> rotate_file_fail_test() -> TestDir = lager_util:create_test_dir(), TestLog = filename:join(TestDir, "rotation.log"), + %% set known permissions on it - os:cmd("chmod -R u+rwx " ++ TestDir), + ok = lager_util:set_dir_permissions("u+rwx", TestDir), + %% write a file file:write_file(TestLog, "hello"), - %% hose up the permissions - os:cmd("chmod -R u-w " ++ TestDir), - ?assertMatch({error, _}, rotate_logfile(TestLog, 10)), + + case os:type() of + {win32, _} -> ok; + _ -> + %% hose up the permissions + ok = lager_util:set_dir_permissions("u-w", TestDir), + ?assertMatch({error, _}, rotate_logfile(TestLog, 10)) + end, + %% check we still only have one file, rotation.log ?assertEqual([TestLog], filelib:wildcard(TestLog++"*")), ?assert(filelib:is_regular(TestLog)), + %% fix the permissions - os:cmd("chmod -R u+w " ++ TestDir), + ok = lager_util:set_dir_permissions("u+w", TestDir), + ?assertMatch(ok, rotate_logfile(TestLog, 10)), ?assert(filelib:is_regular(TestLog ++ ".0")), ?assertEqual(true, filelib:is_regular(TestLog)), ?assertEqual(2, length(filelib:wildcard(TestLog++"*"))), + %% assert the new file is 0 size: case file:read_file_info(TestLog) of {ok, FInfo} -> @@ -161,6 +172,7 @@ rotate_file_fail_test() -> _ -> ?assert(false) end, + %% check that the .0 file now has the contents "hello" ?assertEqual({ok, <<"hello">>}, file:read_file(TestLog++".0")), lager_util:delete_test_dir(TestDir). diff --git a/src/lager_util.erl b/src/lager_util.erl index 372565c..f11dbc8 100644 --- a/src/lager_util.erl +++ b/src/lager_util.erl @@ -31,7 +31,9 @@ ]). -ifdef(TEST). --export([create_test_dir/0, delete_test_dir/1]). +-export([create_test_dir/0, + delete_test_dir/1, + set_dir_permissions/2]). -include_lib("eunit/include/eunit.hrl"). -endif. @@ -861,4 +863,13 @@ do_delete_test_dir(Dir) -> end, Entries), ?assertEqual(ok, file:del_dir(Dir)). +set_dir_permissions(Perms, Dir) -> + do_set_dir_permissions(os:type(), Perms, Dir). + +do_set_dir_permissions({win32, _}, _Perms, _Dir) -> + ok; +do_set_dir_permissions({unix, _}, Perms, Dir) -> + os:cmd("chmod -R " ++ Perms ++ " " ++ Dir), + ok. + -endif.