From d93e1a3e214253cffb1a99e8e3dff8d378ace8ac Mon Sep 17 00:00:00 2001 From: Egor Tensin Date: Thu, 25 Nov 2021 21:09:26 +0300 Subject: add links-chmod --- test/test.sh | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'test/test.sh') diff --git a/test/test.sh b/test/test.sh index 37167ec..db094ad 100755 --- a/test/test.sh +++ b/test/test.sh @@ -65,6 +65,10 @@ call_unlink() { call_bin_script "$script_dir/../links-remove" } +call_chmod() { + call_bin_script "$script_dir/../links-chmod" "$@" +} + verify_output() { if [ "$#" -lt 1 ] || [ "$#" -gt 2 ]; then echo "usage: ${FUNCNAME[0]} EXPECTED_OUTPUT [DEST_DIR]" >&2 @@ -308,6 +312,40 @@ test_symlink_unlink_works() { test "$copy_content" = '3' } +test_chmod_works() { + # Test that links-chmod works. + new_test + call_update + + local expected_output="$test_dest_dir-> +$test_dest_dir/1.txt->$test_src_dir/%DEST%/1.txt +$test_dest_dir/bar-> +$test_dest_dir/bar/3.txt->$test_src_dir/%DEST%/bar/3.txt +$test_dest_dir/bar/baz-> +$test_dest_dir/bar/baz/4.txt->$test_src_dir/%DEST%/bar/baz/4.txt +$test_dest_dir/foo-> +$test_dest_dir/foo/2.txt->$test_src_dir/%DEST%/foo/2.txt" + verify_output "$expected_output" + + echo + echo 'Verifying 1.txt (the shared file) permissions...' + + local mode + + mode="$( stat -c '%a' -- "$test_src_dir/%DEST%/1.txt" )" + echo "Actual permissions: $mode" + test "$mode" = '644' + + call_chmod --mode 0600 + + echo + echo 'Verifying 1.txt (the shared file) permissions have changed...' + + mode="$( stat -c '%a' -- "$test_src_dir/%DEST%/1.txt" )" + echo "Actual permissions: $mode" + test "$mode" = '600' +} + main() { test_update_works test_unlink_works @@ -320,6 +358,8 @@ main() { test_symlink_update_works test_symlink_unlink_works + + test_chmod_works } main -- cgit v1.2.3 From 6b98b6f0b90088f276af4b3a392ca59dd8051fb9 Mon Sep 17 00:00:00 2001 From: Egor Tensin Date: Thu, 25 Nov 2021 21:56:13 +0300 Subject: test/test.sh: best practices --- test/test.sh | 1 + 1 file changed, 1 insertion(+) (limited to 'test/test.sh') diff --git a/test/test.sh b/test/test.sh index db094ad..efe4315 100755 --- a/test/test.sh +++ b/test/test.sh @@ -83,6 +83,7 @@ verify_output() { local dest_dir="$test_dest_dir" [ "$#" -ge 2 ] && dest_dir="$2" + local actual_output actual_output="$( find "$dest_dir" -printf '%h/%f->%l\n' | sort )" echo echo 'Actual directory structure:' -- cgit v1.2.3 From a556264de6ddab9bcd47023b1d3daa2e2b683505 Mon Sep 17 00:00:00 2001 From: Egor Tensin Date: Thu, 25 Nov 2021 21:57:57 +0300 Subject: links-update: add --mode parameter --- test/test.sh | 60 ++++++++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 48 insertions(+), 12 deletions(-) (limited to 'test/test.sh') diff --git a/test/test.sh b/test/test.sh index efe4315..de4dd85 100755 --- a/test/test.sh +++ b/test/test.sh @@ -58,7 +58,7 @@ call_bin_script() { } call_update() { - call_bin_script "$script_dir/../links-update" + call_bin_script "$script_dir/../links-update" "$@" } call_unlink() { @@ -98,6 +98,33 @@ verify_output() { fi } +verify_mode() { + if [ "$#" -ne 2 ]; then + echo "usage: ${FUNCNAME[0]} EXPECTED_MODE FILE" >&2 + return 1 + fi + + local expected_mode="$1" + local path="$2" + + echo + echo "Checking permissions for file: $path" + echo "Expected mode: $expected_mode" + + local actual_mode + actual_mode="$( stat -c '%a' -- "$path" )" + actual_mode="0$actual_mode" + + echo "Actual mode: $actual_mode" + + if [ "$actual_mode" = "$expected_mode" ]; then + echo "... They match!" + else + echo "... They don't match." + return 1 + fi +} + test_update_works() { # Basic test to make sure update.sh actually creates the proper symlinks. @@ -331,20 +358,28 @@ $test_dest_dir/foo/2.txt->$test_src_dir/%DEST%/foo/2.txt" echo echo 'Verifying 1.txt (the shared file) permissions...' - local mode - - mode="$( stat -c '%a' -- "$test_src_dir/%DEST%/1.txt" )" - echo "Actual permissions: $mode" - test "$mode" = '644' - + verify_mode 0644 "$test_src_dir/%DEST%/1.txt" call_chmod --mode 0600 + verify_mode 0600 "$test_src_dir/%DEST%/1.txt" +} - echo - echo 'Verifying 1.txt (the shared file) permissions have changed...' +test_update_chmod() { + # Test that links-update --mode works. + new_test + local expected_mode='0622' + call_update --mode "$expected_mode" + + local expected_output="$test_dest_dir-> +$test_dest_dir/1.txt->$test_src_dir/%DEST%/1.txt +$test_dest_dir/bar-> +$test_dest_dir/bar/3.txt->$test_src_dir/%DEST%/bar/3.txt +$test_dest_dir/bar/baz-> +$test_dest_dir/bar/baz/4.txt->$test_src_dir/%DEST%/bar/baz/4.txt +$test_dest_dir/foo-> +$test_dest_dir/foo/2.txt->$test_src_dir/%DEST%/foo/2.txt" + verify_output "$expected_output" - mode="$( stat -c '%a' -- "$test_src_dir/%DEST%/1.txt" )" - echo "Actual permissions: $mode" - test "$mode" = '600' + verify_mode "$expected_mode" "$test_src_dir/%DEST%/1.txt" } main() { @@ -361,6 +396,7 @@ main() { test_symlink_unlink_works test_chmod_works + test_update_chmod } main -- cgit v1.2.3