]> granicus.if.org Git - strace/commitdiff
tests: introduce require_min_kernel_version_or_skip function
authorDmitry V. Levin <ldv@altlinux.org>
Wed, 7 Dec 2016 18:05:28 +0000 (18:05 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Wed, 7 Dec 2016 19:46:12 +0000 (19:46 +0000)
* tests/init.sh (kernel_version_code,
require_min_kernel_version_or_skip): New functions.
* tests/threads-execve.test: Use require_min_kernel_version_or_skip.

tests/init.sh
tests/threads-execve.test

index 03b7692eeec215b042f477d6856428d2af4d19b5..3fe5a886d7113b4b89e86abbd7e1bc6033e0539d 100644 (file)
@@ -216,6 +216,32 @@ run_strace_match_diff()
        rm -f "$EXP"
 }
 
+# Print kernel version code.
+# usage: kernel_version_code $(uname -r)
+kernel_version_code()
+{
+       (
+               set -f
+               IFS=.
+               set -- $1
+               v1="${1%%[!0-9]*}" && [ -n "$v1" ] || v1=0
+               v2="${2%%[!0-9]*}" && [ -n "$v2" ] || v2=0
+               v3="${3%%[!0-9]*}" && [ -n "$v3" ] || v3=0
+               echo "$(($v1 * 65536 + $v2 * 256 + $v3))"
+       )
+}
+
+# Usage: require_min_kernel_version_or_skip 3.0
+require_min_kernel_version_or_skip()
+{
+       local uname_r
+       uname_r="$(uname -r)"
+
+       [ "$(kernel_version_code "$uname_r")" -ge \
+         "$(kernel_version_code "$1")" ] ||
+               skip_ "the kernel release $uname_r is not $1 or newer"
+}
+
 check_prog cat
 check_prog rm
 
index 36381e7c1d9934302bc835ff9e013b905fe3c021..4a771467a6319010a755f391187260aec5993196 100755 (executable)
 
 # Check that PTRACE_EVENT_EXEC support in kernel is good enough.
 # The kernel before commit v3.1-rc1~308^2~7 reported 0 instead of old pid.
-uname_r="$(uname -r)"
-case "$uname_r" in
-       3.[2-9]*|3.1[0-9]*|[4-9].*|[123][0-9]*) ;;
-       *) skip_ "the kernel release $uname_r is not 3.1 or newer" ;;
-esac
+require_min_kernel_version_or_skip 3.1
 
 check_prog diff
 run_prog > /dev/null