From ace9db40f92920d9a7767197d8967d6d01df3eb9 Mon Sep 17 00:00:00 2001 From: Pavel Reichl Date: Tue, 20 Apr 2021 00:04:03 +0200 Subject: [PATCH] common/rc: Add _require_{chown,chmod}() Add helper functions that ensure that test is only executed on file systems that implement chown, chmod and symbolic links. Fixed test are: generic/{87,88,125,126,128,193,314,317,355,597,598} [Eryu: remove _require_test and declare variable as local] Signed-off-by: Pavel Reichl Reviewed-by: Eryu Guan Signed-off-by: Eryu Guan --- common/rc | 34 ++++++++++++++++++++++++++++++++++ tests/generic/087 | 1 + tests/generic/088 | 1 + tests/generic/125 | 1 + tests/generic/126 | 1 + tests/generic/128 | 1 + tests/generic/193 | 1 + tests/generic/314 | 1 + tests/generic/317 | 1 + tests/generic/355 | 1 + tests/generic/597 | 1 + tests/generic/598 | 1 + 12 files changed, 45 insertions(+) diff --git a/common/rc b/common/rc index 11ff7635..bed322fe 100644 --- a/common/rc +++ b/common/rc @@ -2185,6 +2185,40 @@ _require_user() [ "$?" == "0" ] || _notrun "$qa_user cannot execute commands." } +# check for a chown support +# +_require_chown() +{ + local rnd_uid=4242 + local file="$TEST_DIR/chown_testfile" + + rm -f $file + touch $file + chown ${rnd_uid}:${rnd_uid} $file >/dev/null 2>&1 \ + || _notrun "chown is not supported ${FSTYP}" +} + + +# check for a chmod support +# Since chmod sometimes fails silently actual functionality test is done +# +_require_chmod() +{ + local file="$TEST_DIR/chmod_testfile" + + rm -f $file + touch $file + + # get original file mode + local mode=`stat --format="0%a" $file` + # flip the user's read bit + let mode^=0400 + chmod `printf '%o' "$mode"` $file + # check that the chmod actually flipped the bit + [ `stat --format="0%a" $file` == `printf '0%o' "$mode"` ] \ + || _notrun "chmod is not supported ${FSTYP}" +} + # check for a group on the machine, fsgqa as default # _require_group() diff --git a/tests/generic/087 b/tests/generic/087 index 1f30dbf4..c3576117 100755 --- a/tests/generic/087 +++ b/tests/generic/087 @@ -37,6 +37,7 @@ _cleanup() # real QA test starts here _supported_fs generic _require_test +_require_chown QA_FS_PERMS=$here/src/fs_perms diff --git a/tests/generic/088 b/tests/generic/088 index 9388a083..ad99bd7e 100755 --- a/tests/generic/088 +++ b/tests/generic/088 @@ -29,6 +29,7 @@ _filter() # real QA test starts here _supported_fs generic _require_test +_require_chown path=$TEST_DIR/t_access $here/src/t_access_root $path | tee $seqres.full | _filter diff --git a/tests/generic/125 b/tests/generic/125 index e84248d3..8c8f5cd7 100755 --- a/tests/generic/125 +++ b/tests/generic/125 @@ -25,6 +25,7 @@ _supported_fs generic _require_test _require_user _require_odirect +_require_chmod TESTDIR=$TEST_DIR/ftrunc TESTFILE=$TESTDIR/ftrunc.tmp diff --git a/tests/generic/126 b/tests/generic/126 index ac25d294..636ca00d 100755 --- a/tests/generic/126 +++ b/tests/generic/126 @@ -27,6 +27,7 @@ _cleanup() # real QA test starts here _supported_fs generic _require_test +_require_chown QA_FS_PERMS=$here/src/fs_perms diff --git a/tests/generic/128 b/tests/generic/128 index b3e49eff..c1eae77a 100755 --- a/tests/generic/128 +++ b/tests/generic/128 @@ -24,6 +24,7 @@ _supported_fs generic _require_scratch _require_user +_require_chmod _scratch_mkfs >/dev/null 2>&1 _scratch_mount "-o nosuid" diff --git a/tests/generic/193 b/tests/generic/193 index 3125efdd..fd0ebbf6 100755 --- a/tests/generic/193 +++ b/tests/generic/193 @@ -56,6 +56,7 @@ _supported_fs generic _require_test _require_user +_require_chown test_root=$TEST_DIR/$seq.$$.root test_user=$TEST_DIR/$seq.$$.user diff --git a/tests/generic/314 b/tests/generic/314 index 03df81ce..540f0feb 100755 --- a/tests/generic/314 +++ b/tests/generic/314 @@ -29,6 +29,7 @@ _cleanup() _supported_fs generic _require_test _require_user +_require_chown rm -rf $TEST_DIR/$seq-dir diff --git a/tests/generic/317 b/tests/generic/317 index 29c37a57..289dfabe 100755 --- a/tests/generic/317 +++ b/tests/generic/317 @@ -45,6 +45,7 @@ _require_scratch _require_user _require_ugid_map _require_userns +_require_chown qa_user_id=`id -u $qa_user` _filter_output() diff --git a/tests/generic/355 b/tests/generic/355 index 161dd042..74fba0f9 100755 --- a/tests/generic/355 +++ b/tests/generic/355 @@ -32,6 +32,7 @@ _supported_fs generic _require_test _require_user _require_odirect +_require_chown testfile=$TEST_DIR/$seq.test rm -f $testfile diff --git a/tests/generic/597 b/tests/generic/597 index ba769d73..6602dc70 100755 --- a/tests/generic/597 +++ b/tests/generic/597 @@ -43,6 +43,7 @@ _require_sysctl_variable fs.protected_hardlinks _require_user fsgqa2 # Do this SECOND so that qa_user is fsgqa, and _user_do uses that account _require_user fsgqa +_require_symlinks OWNER=fsgqa2 OTHER=fsgqa diff --git a/tests/generic/598 b/tests/generic/598 index 6b765275..230c3ac7 100755 --- a/tests/generic/598 +++ b/tests/generic/598 @@ -43,6 +43,7 @@ _require_sysctl_variable fs.protected_fifos _require_user fsgqa2 # Do this SECOND so that qa_user is fsgqa, and _user_do uses that account _require_user fsgqa +_require_chmod USER1=fsgqa2 USER2=fsgqa -- 2.30.2