common/rc: Add _require_{chown,chmod}()
authorPavel Reichl <preichl@redhat.com>
Mon, 19 Apr 2021 22:04:03 +0000 (00:04 +0200)
committerEryu Guan <guaneryu@gmail.com>
Sun, 25 Apr 2021 04:53:55 +0000 (12:53 +0800)
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 <preichl@redhat.com>
Reviewed-by: Eryu Guan <guaneryu@gmail.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
12 files changed:
common/rc
tests/generic/087
tests/generic/088
tests/generic/125
tests/generic/126
tests/generic/128
tests/generic/193
tests/generic/314
tests/generic/317
tests/generic/355
tests/generic/597
tests/generic/598

index 11ff7635700bd3b740c3efc3b565d059feeb3f6b..bed322fe11c4eccd894c0b197ce93e4cde64e517 100644 (file)
--- 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()
index 1f30dbf496e6ec15d9a2991e0d5d4502b1e452c7..c35761177ac42769f2f027e5e23d19f219d68152 100755 (executable)
@@ -37,6 +37,7 @@ _cleanup()
 # real QA test starts here
 _supported_fs generic
 _require_test
+_require_chown
 
 QA_FS_PERMS=$here/src/fs_perms
 
index 9388a0839892bb91280751db4e498c281db91e62..ad99bd7e24b41cb1aeee34b69982a46ed3f3c5a8 100755 (executable)
@@ -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
index e84248d331492d1b42e2002faf6c827a28dc0768..8c8f5cd75bd3c91a95923c688deb17849dc5e4c0 100755 (executable)
@@ -25,6 +25,7 @@ _supported_fs generic
 _require_test
 _require_user
 _require_odirect
+_require_chmod
 
 TESTDIR=$TEST_DIR/ftrunc
 TESTFILE=$TESTDIR/ftrunc.tmp
index ac25d2947d4afb7fb860de6b9b48796da6d319d4..636ca00d38dfc656e3d78d698ddd604c6f8b1d2e 100755 (executable)
@@ -27,6 +27,7 @@ _cleanup()
 # real QA test starts here
 _supported_fs generic
 _require_test
+_require_chown
 
 QA_FS_PERMS=$here/src/fs_perms
 
index b3e49eff1c11dbe6e2b851496c15cba50395aa01..c1eae77af55de39f23a436394b04baab3de7d09a 100755 (executable)
@@ -24,6 +24,7 @@ _supported_fs generic
 
 _require_scratch
 _require_user
+_require_chmod
 
 _scratch_mkfs >/dev/null 2>&1
 _scratch_mount "-o nosuid"
index 3125efddaf5a8e17478354c0f835fe52efb5416b..fd0ebbf64239987ec4e8de96bafda3e0e2aa7301 100755 (executable)
@@ -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
index 03df81ce58ba553dff2a59b43a2e70beb326bb87..540f0feb111a4ba83a4e1308777e6c0bbda166b3 100755 (executable)
@@ -29,6 +29,7 @@ _cleanup()
 _supported_fs generic
 _require_test
 _require_user
+_require_chown
 
 rm -rf $TEST_DIR/$seq-dir
 
index 29c37a57c0bc2fe6641c1b1a683033a7b73e3091..289dfabed9bca4b2263c086e901ec1b32ddad7e0 100755 (executable)
@@ -45,6 +45,7 @@ _require_scratch
 _require_user
 _require_ugid_map
 _require_userns
+_require_chown
 qa_user_id=`id -u $qa_user`
 
 _filter_output()
index 161dd0429967a22169bfdb873eb17b03548bb356..74fba0f913aa526eddf29d4ba64f30e2b7b366cf 100755 (executable)
@@ -32,6 +32,7 @@ _supported_fs generic
 _require_test
 _require_user
 _require_odirect
+_require_chown
 
 testfile=$TEST_DIR/$seq.test
 rm -f $testfile
index ba769d732f72c173707dbec757b2322e55de7f88..6602dc708cef52167fb77b40e1ac3279845ed8a1 100755 (executable)
@@ -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
index 6b765275cc9fb92530c0cec27b2b0df1221f0c46..230c3ac70c4c5b7c19c0c88e75de1e7413bfefbe 100755 (executable)
@@ -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