Merge pull request #12667 from cv3d:fix/ts_report
authorHamdi Sahloul <42140441+cv3d@users.noreply.github.com>
Sat, 29 Sep 2018 17:03:54 +0000 (02:03 +0900)
committerAlexander Alekhin <alexander.a.alekhin@gmail.com>
Sat, 29 Sep 2018 17:03:54 +0000 (20:03 +0300)
TS: fix Python v2/v3 compatibility (#12667)

* TS: fix Python2.7 compatibility

* TS: fix Python3 compatibility

* py3: use integer division '/' => '//' instead of cast

modules/ts/misc/report.py
modules/ts/misc/summary.py
modules/ts/misc/table_formatter.py
modules/ts/misc/testlog_parser.py

index 5c962b7..f0a87f2 100755 (executable)
@@ -66,7 +66,7 @@ if __name__ == "__main__":
             tbl.newColumn(m, metrix_table[m][0], align = "center")
 
     needNewRow = True
-    for case in sorted(tests):
+    for case in sorted(tests, key=lambda x: str(x)):
         if needNewRow:
             tbl.newRow()
             if not options.showall:
index f03b62b..5549b6c 100755 (executable)
@@ -177,7 +177,7 @@ if __name__ == "__main__":
     prevGroupName = None
     needNewRow = True
     lastRow = None
-    for name in sorted(test_cases.iterkeys(), key=alphanum_keyselector):
+    for name in sorted(test_cases.keys(), key=alphanum_keyselector):
         cases = test_cases[name]
         if needNewRow:
             lastRow = tbl.newRow()
index 6069dea..1c1fd78 100755 (executable)
@@ -98,7 +98,7 @@ class table(object):
 
     def layoutTable(self):
         columns = self.columns.values()
-        columns.sort(key=lambda c: c.index)
+        columns = sorted(columns, key=lambda c: c.index)
 
         colspanned = []
         rowspanned = []
@@ -206,7 +206,7 @@ class table(object):
         cell.width = len(max(cell.text, key = lambda line: len(line)))
 
     def reformatTextValue(self, value):
-        if sys.version_info > (3,):  # PY3 fix
+        if sys.version_info >= (2,7):
             unicode = str
         if isinstance(value, str):
             vstr = value
@@ -340,7 +340,7 @@ class table(object):
         if align == "right":
             pattern = "%" + str(width) + "s"
         elif align == "center":
-            pattern = "%" + str((width - len(line)) / 2 + len(line)) + "s" + " " * (width - len(line) - (width - len(line)) / 2)
+            pattern = "%" + str((width - len(line)) // 2 + len(line)) + "s" + " " * (width - len(line) - (width - len(line)) // 2)
         else:
             pattern = "%-" + str(width) + "s"
 
@@ -354,7 +354,7 @@ class table(object):
         if valign == "bottom":
             return height - space
         if valign == "middle":
-            return (height - space + 1) / 2
+            return (height - space + 1) // 2
         return 0
 
     def htmlPrintTable(self, out, embeedcss = False):
index 5f44140..80c5a0b 100755 (executable)
@@ -202,7 +202,7 @@ def parseLogFile(filename):
         if attr_name.startswith('cv_')
     }
 
-    tests = map(TestInfo, log.getElementsByTagName("testcase"))
+    tests = list(map(TestInfo, log.getElementsByTagName("testcase")))
 
     return TestRunInfo(properties, tests)