Bug 1268798 part 2 - Add result summary for WebIDL parser test. r?khuey draft
authorXidorn Quan <quanxunzhen@gmail.com>
Thu, 05 May 2016 19:36:39 +1000
changeset 363677 5bbdb0e996c29867a16e59747d64f4947bf0af93
parent 363676 51683f8ccec315cda30ec4f776f888e1b9e3941d
child 363678 7e661883c87ffee39bd783632749966bdb37d1c6
push id17285
push userxquan@mozilla.com
push dateThu, 05 May 2016 10:34:05 +0000
reviewerskhuey
bugs1268798
milestone49.0a1
Bug 1268798 part 2 - Add result summary for WebIDL parser test. r?khuey MozReview-Commit-ID: DMgATDa9yXX
dom/bindings/parser/runtests.py
--- a/dom/bindings/parser/runtests.py
+++ b/dom/bindings/parser/runtests.py
@@ -8,70 +8,91 @@ import optparse
 import traceback
 import WebIDL
 
 class TestHarness(object):
     def __init__(self, test, verbose):
         self.test = test
         self.verbose = verbose
         self.printed_intro = False
+        self.passed = 0
+        self.failures = []
 
     def start(self):
         if self.verbose:
             self.maybe_print_intro()
 
     def finish(self):
         if self.verbose or self.printed_intro:
             print "Finished test %s" % self.test
 
     def maybe_print_intro(self):
         if not self.printed_intro:
             print "Starting test %s" % self.test
             self.printed_intro = True
 
     def test_pass(self, msg):
+        self.passed += 1
         if self.verbose:
             print "TEST-PASS | %s" % msg
 
     def test_fail(self, msg):
         self.maybe_print_intro()
+        self.failures.append(msg)
         print "TEST-UNEXPECTED-FAIL | %s" % msg
 
     def ok(self, condition, msg):
         if condition:
             self.test_pass(msg)
         else:
             self.test_fail(msg)
 
     def check(self, a, b, msg):
         if a == b:
             self.test_pass(msg)
         else:
-            self.test_fail(msg)
-            print "\tGot %s expected %s" % (a, b)
+            self.test_fail(msg + " | Got %s expected %s" % (a, b))
 
 def run_tests(tests, verbose):
     testdir = os.path.join(os.path.dirname(__file__), 'tests')
     if not tests:
         tests = glob.iglob(os.path.join(testdir, "*.py"))
     sys.path.append(testdir)
 
+    all_passed = 0
+    failed_tests = []
+
     for test in tests:
         (testpath, ext) = os.path.splitext(os.path.basename(test))
         _test = __import__(testpath, globals(), locals(), ['WebIDLTest'])
 
         harness = TestHarness(test, verbose)
         harness.start()
         try:
             _test.WebIDLTest.__call__(WebIDL.Parser(), harness)
         except Exception, ex:
-            print "TEST-UNEXPECTED-FAIL | Unhandled exception in test %s: %s" % (testpath, ex)
+            harness.test_fail("Unhandled exception in test %s: %s" %
+                              (testpath, ex))
             traceback.print_exc()
         finally:
             harness.finish()
+        all_passed += harness.passed
+        if harness.failures:
+            failed_tests.append((test, harness.failures))
+
+    if verbose or failed_tests:
+        print
+        print 'Result summary:'
+        print 'Successful: %d' % all_passed
+        print 'Unexpected: %d' % \
+                sum(len(failures) for _, failures in failed_tests)
+        for test, failures in failed_tests:
+            print '%s:' % test
+            for failure in failures:
+                print 'TEST-UNEXPECTED-FAIL | %s' % failure
 
 if __name__ == '__main__':
     usage = """%prog [OPTIONS] [TESTS]
                Where TESTS are relative to the tests directory."""
     parser = optparse.OptionParser(usage=usage)
     parser.add_option('-q', '--quiet', action='store_false', dest='verbose', default=True,
                       help="Don't print passing tests.")
     options, tests = parser.parse_args()