From: Jeff Lucovsky Date: Wed, 19 Apr 2023 12:43:36 +0000 (-0400) Subject: test/run: Support `gt-version` verb X-Git-Tag: suricata-6.0.13~41 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=aa8b609d245a19b518f74e177bb441bff503e3e7;p=thirdparty%2Fsuricata-verify.git test/run: Support `gt-version` verb 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. --- diff --git a/run.py b/run.py index 2319e339e..4779aaa37 100755 --- 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,