]> git.ipfire.org Git - thirdparty/suricata-verify.git/commitdiff
test/run: Support `gt-version` verb
authorJeff Lucovsky <jlucovsky@oisf.net>
Wed, 19 Apr 2023 12:43:36 +0000 (08:43 -0400)
committerJason Ish <jason.ish@oisf.net>
Fri, 12 May 2023 18:42:01 +0000 (12:42 -0600)
This commit adds support for the `gt-version` verb. This verb is used
when the current version is X but the test(s) is(are) only supported in
versions greater than X.

run.py

diff --git a/run.py b/run.py
index 2319e339ecbe177c37cacf418ad42098e8d57a63..4779aaa3799c51c1b001360e06f7ce20419e9c27 100755 (executable)
--- a/run.py
+++ b/run.py
@@ -100,6 +100,21 @@ class SelfTest(unittest.TestCase):
         self.assertTrue(Version().is_equal(SuricataVersion(5, 1, 0), SuricataVersion(5, None, None)))
         self.assertFalse(Version().is_equal(SuricataVersion(4, 1, 0), SuricataVersion(5, None, None)))
 
+    def test_version_gt(self):
+        comp = Version()
+        self.assertTrue(comp.is_gt(SuricataVersion(6, None, None), SuricataVersion(5, None, None)))
+        self.assertTrue(comp.is_gt(SuricataVersion(6, None, None), SuricataVersion(5, 0, 3)))
+        self.assertTrue(comp.is_gt(SuricataVersion(6, 0, 1), SuricataVersion(6, 0, 0)))
+        self.assertFalse(comp.is_gt(SuricataVersion(6, 0, 1), SuricataVersion(6, 0, 1)))
+        self.assertTrue(comp.is_gt(SuricataVersion(6, 1, 0), SuricataVersion(6, 0, 1)))
+
+    def test_version_gte(self):
+        comp = Version()
+        self.assertTrue(comp.is_gte(SuricataVersion(6, None, None), SuricataVersion(5, None, None)))
+        self.assertTrue(comp.is_gte(SuricataVersion(6, 0, 1), SuricataVersion(6, 0, 0)))
+        self.assertTrue(comp.is_gte(SuricataVersion(6, 0, 1), SuricataVersion(6, 0, 1)))
+        self.assertTrue(comp.is_gte(SuricataVersion(6, 1, 0), SuricataVersion(6, 0, 1)))
+
     def test_version_lt(self):
         comp = Version()
         self.assertTrue(comp.is_lt(SuricataVersion(5, 0, 3), SuricataVersion(6, None, None)))
@@ -204,7 +219,7 @@ class Version:
         return True
 
     def is_gte(self, v1, v2):
-        """Return True if v1 is great than or equal to v2."""
+        """Return True if v1 is greater than or equal to v2."""
         if v1.major < v2.major:
             return False
         elif v1.major > v2.major:
@@ -220,6 +235,25 @@ class Version:
 
         return True
 
+    def is_gt(self, v1, v2):
+        """Return True if v1 is greater than v2."""
+        if v1.major < v2.major:
+            return False
+        elif v1.major > v2.major:
+            return True
+
+        if v1.minor < v2.minor:
+            return False
+        elif v1.minor > v2.minor:
+            return True
+
+        if v1.patch < v2.patch:
+            return False
+        elif v1.patch == v2.patch:
+            return False
+
+        return True
+
     def is_lt(self, v1, v2):
         """Return True if v1 is less than v2."""
         if v1.major < v2.major:
@@ -287,6 +321,12 @@ def check_requires(requires, suricata_config: SuricataConfig):
                     suri_version=suri_version, expr="lt"):
                 raise UnsatisfiedRequirementError(
                         "for version less than {}".format(lt_version))
+        elif key == "gt-version":
+            gt_version = requires["gt-version"]
+            if not is_version_compatible(version=gt_version,
+                    suri_version=suri_version, expr="gt"):
+                raise UnsatisfiedRequirementError(
+                        "for version great than {}".format(gt_version))
         elif key == "version":
             req_version = requires["version"]
             if not is_version_compatible(version=req_version,