Browse Source

gunittest: store returncode, color for percentages

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@61395 15284696-431f-4ddb-bdfa-cd5b030d7da7
Vaclav Petras 10 years ago
parent
commit
7b35961cad
2 changed files with 26 additions and 9 deletions
  1. 4 1
      lib/python/gunittest/invoker.py
  2. 22 8
      lib/python/gunittest/reporters.py

+ 4 - 1
lib/python/gunittest/invoker.py

@@ -63,7 +63,10 @@ def update_keyval_file(filename, module, returncode):
 
 
     # always owerwrite name and ok
     # always owerwrite name and ok
     keyval['name'] = module.name
     keyval['name'] = module.name
-    keyval['status'] = 'failed' if returncode else 'passed'
+    keyval['tested_dir'] = module.tested_dir
+    if 'status' not in keyval.keys():
+        keyval['status'] = 'failed' if returncode else 'passed'
+    keyval['returncode'] = returncode
     with open(filename, 'w') as keyval_file:
     with open(filename, 'w') as keyval_file:
         keyval_file.write(keyvalue_to_text(keyval))
         keyval_file.write(keyvalue_to_text(keyval))
     return keyval
     return keyval

+ 22 - 8
lib/python/gunittest/reporters.py

@@ -232,6 +232,19 @@ class GrassTestFilesCountingReporter(object):
         self._start_file_test_called = False
         self._start_file_test_called = False
 
 
 
 
+def percent_to_html(percent):
+    if percent > 100 or percent < 0:
+        return "? {:.2f}% ?".format(percent)
+    elif percent < 40:
+        color = 'red'
+    elif percent < 70:
+        color = 'orange'
+    else:
+        color = 'green'
+    return '<span style="color: {color}">{percent:.0f}%</span>'.format(
+        percent=percent, color=color)
+
+
 class GrassTestFilesHtmlReporter(GrassTestFilesCountingReporter):
 class GrassTestFilesHtmlReporter(GrassTestFilesCountingReporter):
 
 
     unknown_number = '<span style="font-size: 60%">unknown</span>'
     unknown_number = '<span style="font-size: 60%">unknown</span>'
@@ -287,26 +300,27 @@ class GrassTestFilesHtmlReporter(GrassTestFilesCountingReporter):
 
 
         if self.total:
         if self.total:
             pass_per = 100 * (float(self.successes) / self.total)
             pass_per = 100 * (float(self.successes) / self.total)
-            pass_per = '{:.2f}%'.format(pass_per)
+            pass_per = percent_to_html(pass_per)
         else:
         else:
             pass_per = self.unknown_number
             pass_per = self.unknown_number
         tfoot = ('<tfoot>'
         tfoot = ('<tfoot>'
                  '<tr>'
                  '<tr>'
                  '<td>Summary</td>'
                  '<td>Summary</td>'
                  '<td>{nfiles} test files</td>'
                  '<td>{nfiles} test files</td>'
-                 '<td>{nsper:.2f}% successful</td>'
+                 '<td>{nsper}</td>'
                  '<td>{total}</td><td>{st}</td><td>{ft}</td><td>{pt}</td>'
                  '<td>{total}</td><td>{st}</td><td>{ft}</td><td>{pt}</td>'
                  '</tr>'
                  '</tr>'
                  '</tfoot>'.format(
                  '</tfoot>'.format(
-                     nfiles=self.test_files, nsper=self.file_pass_per,
+                     nfiles=self.test_files,
+                     nsper=percent_to_html(self.file_pass_per),
                      st=self.successes, ft=self.failures + self.errors,
                      st=self.successes, ft=self.failures + self.errors,
                      total=self.total, pt=pass_per
                      total=self.total, pt=pass_per
                      ))
                      ))
 
 
         summary_sentence = ('Executed {nfiles} test files in {time:}.'
         summary_sentence = ('Executed {nfiles} test files in {time:}.'
                             ' From them'
                             ' From them'
-                            ' {nsfiles} files ({nsper:.2f}%) were successful'
-                            ' and {nffiles} files ({nfper:.2f}%) failed.'
+                            ' {nsfiles} files ({nsper:.0f}%) were successful'
+                            ' and {nffiles} files ({nfper:.0f}%) failed.'
                             .format(
                             .format(
                                 nfiles=self.test_files,
                                 nfiles=self.test_files,
                                 time=self.main_time,
                                 time=self.main_time,
@@ -385,7 +399,7 @@ class GrassTestFilesHtmlReporter(GrassTestFilesCountingReporter):
             self.total += total
             self.total += total
 
 
             pass_per = 100 * (float(successes) / total)
             pass_per = 100 * (float(successes) / total)
-            pass_per = '{:.2f}%'.format(pass_per)
+            pass_per = percent_to_html(pass_per)
         else:
         else:
             total = successes = pass_per = self.unknown_number
             total = successes = pass_per = self.unknown_number
         bad_ones = failures + errors
         bad_ones = failures + errors
@@ -443,8 +457,8 @@ class GrassTestFilesTextReporter(GrassTestFilesCountingReporter):
 
 
         summary_sentence = ('\nExecuted {nfiles} test files in {time:}.'
         summary_sentence = ('\nExecuted {nfiles} test files in {time:}.'
                             '\nFrom them'
                             '\nFrom them'
-                            ' {nsfiles} files ({nsper:.2f}%) were successful'
-                            ' and {nffiles} files ({nfper:.2f}%) failed.\n'
+                            ' {nsfiles} files ({nsper:.0f}%) were successful'
+                            ' and {nffiles} files ({nfper:.0f}%) failed.\n'
                             .format(
                             .format(
                                 nfiles=self.test_files,
                                 nfiles=self.test_files,
                                 time=self.main_time,
                                 time=self.main_time,