Try `import distutils.LooseVersion` and use that to do the comparison.<br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Feb 13, 2019 at 4:49 PM Frederic Riss via Phabricator <<a href="mailto:reviews@reviews.llvm.org">reviews@reviews.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">friss created this revision.<br>
friss added reviewers: zturner, labath.<br>
Herald added a reviewer: serge-sans-paille.<br>
Herald added a subscriber: jdoerfert.<br>
<br>
dotest's version comparision function is just a lexicographical compare<br>
of the version strings. This is obviously wrong. This patch implements<br>
a numerical comparision of the individual version components instead.<br>
<br>
Python is not my language of choice, please suggest a better implementation!<br>
<br>
<br>
<a href="https://reviews.llvm.org/D58219" rel="noreferrer" target="_blank">https://reviews.llvm.org/D58219</a><br>
<br>
Files:<br>
  packages/Python/lldbsuite/test/lldbtest.py<br>
<br>
<br>
Index: packages/Python/lldbsuite/test/lldbtest.py<br>
===================================================================<br>
--- packages/Python/lldbsuite/test/lldbtest.py<br>
+++ packages/Python/lldbsuite/test/lldbtest.py<br>
@@ -1351,14 +1351,31 @@<br>
<br>
         if (version is None):<br>
             return True<br>
+<br>
+        def compare_version_strings(v1, v2):<br>
+            split1 = v1.split('.')<br>
+            split2 = v2.split('.')<br>
+            while len(split1) > len(split2):<br>
+                split2.append("0")<br>
+            while len(split2) > len(split1):<br>
+                split1.append("0")<br>
+<br>
+            versions = zip(split1, split2)<br>
+            for (subv1, subv2) in versions:<br>
+                diff = int(subv1) - int(subv2)<br>
+                if diff != 0:<br>
+                    return diff<br>
+<br>
+            return 0<br>
+<br>
         if (operator == '>'):<br>
-            return self.getCompilerVersion() > version<br>
+            return compare_version_strings(self.getCompilerVersion(), version) > 0<br>
         if (operator == '>=' or operator == '=>'):<br>
-            return self.getCompilerVersion() >= version<br>
+            return compare_version_strings(self.getCompilerVersion(), version) >= 0<br>
         if (operator == '<'):<br>
-            return self.getCompilerVersion() < version<br>
+            return compare_version_strings(self.getCompilerVersion(), version) < 0<br>
         if (operator == '<=' or operator == '=<'):<br>
-            return self.getCompilerVersion() <= version<br>
+            return compare_version_strings(self.getCompilerVersion(), version) <= 0<br>
         if (operator == '!=' or operator == '!' or operator == 'not'):<br>
             return str(version) not in str(self.getCompilerVersion())<br>
         return str(version) in str(self.getCompilerVersion())<br>
<br>
<br>
</blockquote></div>