From: Bobby Eshleman <[email protected]>

The current vng version check uses a discrete allowlist of "1.33",
"1.36", and "1.37", which forces a script update on every new release
even though all post-1.36 releases work.

Replace the discrete list with: "1.33", or any version >= 1.36. 1.34
and 1.35 are skipped because they were not tested. Add a version_lt()
helper that compares MAJOR.MINOR numerically, so the check reads as a
straightforward version comparison.

Signed-off-by: Bobby Eshleman <[email protected]>
---
 tools/testing/selftests/vsock/vmtest.sh | 39 +++++++++++++++++++--------------
 1 file changed, 23 insertions(+), 16 deletions(-)

diff --git a/tools/testing/selftests/vsock/vmtest.sh 
b/tools/testing/selftests/vsock/vmtest.sh
index d97913a6bdc7..ee69ac9dd3dc 100755
--- a/tools/testing/selftests/vsock/vmtest.sh
+++ b/tools/testing/selftests/vsock/vmtest.sh
@@ -330,27 +330,34 @@ check_netns() {
        return 0
 }
 
+# Compare MAJOR.MINOR versions numerically. Returns 0 (true) if $1 < $2.
+version_lt() {
+       local -a a=(${1//./ })
+       local -a b=(${2//./ })
+
+       if [[ "${a[0]}" -lt "${b[0]}" ]]; then
+               return 0
+       elif [[ "${a[0]}" -gt "${b[0]}" ]]; then
+               return 1
+       elif [[ "${a[1]}" -lt "${b[1]}" ]]; then
+               return 0
+       fi
+
+       return 1
+}
+
 check_vng() {
-       local tested_versions
        local version
-       local ok
 
-       tested_versions=("1.33" "1.36" "1.37")
-       version="$(vng --version)"
+       version="$(vng --version | awk '{print $2}')"
 
-       ok=0
-       for tv in "${tested_versions[@]}"; do
-               if [[ "${version}" == *"${tv}"* ]]; then
-                       ok=1
-                       break
-               fi
-       done
-
-       if [[ ! "${ok}" -eq 1 ]]; then
-               printf "warning: vng version '%s' has not been tested and may " 
"${version}" >&2
-               printf "not function properly.\n\tThe following versions have 
been tested: " >&2
-               echo "${tested_versions[@]}" >&2
+       # Supported: 1.33, or any version >= 1.36. 1.34 and 1.35 are untested.
+       if [[ "${version}" == "1.33" ]] || ! version_lt "${version}" "1.36"; 
then
+               return
        fi
+
+       printf "warning: vng version '%s' has not been tested and may " 
"${version}" >&2
+       printf "not function properly.\n\tSupported: 1.33 or >= 1.36\n" >&2
 }
 
 check_socat() {

-- 
2.53.0-Meta


Reply via email to