test-webkit-scripts should show the failing tests and use an appropriate exit code
authorossy@webkit.org <ossy@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 29 Nov 2013 11:41:02 +0000 (11:41 +0000)
committerossy@webkit.org <ossy@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 29 Nov 2013 11:41:02 +0000 (11:41 +0000)
https://bugs.webkit.org/show_bug.cgi?id=124840

Patch by Jozsef Berta <jberta@inf.u-szeged.hu> on 2013-11-29
Reviewed by Ryosuke Niwa.

A fixme in test-webkit-scripts asked that the script should display success or failiure
and exit with a 0 or 1 value accordingly after all of the tests have completed.

* Scripts/test-webkit-scripts:
(ScriptsTester.run_test_script):
The outcome of the currently run script is returned to the main as a boolean value. A boolean is returned,
because at this point we don't need to pass on more information other than success or failiure.
(ScriptsTester.main):
The return values are now stored for each script and when all tests have completed successfully,
the script indicates success and returns 0. Otherwise it will display the name(s) of the failing script(s) and return 1.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@159868 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Tools/ChangeLog
Tools/Scripts/test-webkit-scripts

index a0fe5eb..9283bb4 100644 (file)
@@ -1,3 +1,21 @@
+2013-11-29  Jozsef Berta  <jberta@inf.u-szeged.hu>
+
+        test-webkit-scripts should show the failing tests and use an appropriate exit code
+        https://bugs.webkit.org/show_bug.cgi?id=124840
+
+        Reviewed by Ryosuke Niwa.
+
+        A fixme in test-webkit-scripts asked that the script should display success or failiure
+        and exit with a 0 or 1 value accordingly after all of the tests have completed.
+
+        * Scripts/test-webkit-scripts:
+        (ScriptsTester.run_test_script):
+        The outcome of the currently run script is returned to the main as a boolean value. A boolean is returned,
+        because at this point we don't need to pass on more information other than success or failiure.
+        (ScriptsTester.main):
+        The return values are now stored for each script and when all tests have completed successfully,
+        the script indicates success and returns 0. Otherwise it will display the name(s) of the failing script(s) and return 1.
+
 2013-11-29  Krzysztof Czech  <k.czech@samsung.com>
 
         [ATK] Added support for isAttributeSettable in AccessibilityUIElementAtk
index baba059..4154b17 100755 (executable)
@@ -59,8 +59,9 @@ class ScriptsTester(object):
         call_args = [script_path]
         if args:
             call_args.extend(args)
-        subprocess.call(call_args)
+        return_code = subprocess.call(call_args)
         print(70 * "*") # dividing line
+        return not bool(return_code)
 
     def main(self):
         parser = OptionParser(description=__doc__)
@@ -69,17 +70,25 @@ class ScriptsTester(object):
                           'including those suppressed by default')
         (options, args) = parser.parse_args()
 
-        self.run_test_script('Perl scripts', self.script_path('test-webkitperl'))
-        self.run_test_script('Python scripts', self.script_path('test-webkitpy'),
+        webkitperl_success = self.run_test_script('Perl scripts', self.script_path('test-webkitperl'))
+        webkitpy_success = self.run_test_script('Python scripts', self.script_path('test-webkitpy'),
                              ['--all'] if options.all else None)
-        self.run_test_script('Ruby scripts', self.script_path('test-webkitruby'))
-
-        # FIXME: Display a cumulative indication of success or failure.
-        #        In addition, call sys.exit() with 0 or 1 depending on that
-        #        cumulative success or failure.
-        print('Note: Perl, Python, and Ruby results appear separately above.')
-
+        webkitruby_success = self.run_test_script('Ruby scripts', self.script_path('test-webkitruby'))
 
+        if webkitperl_success and webkitpy_success and webkitruby_success:
+            print('All tests completed successfully')
+            sys.exit(0)
+        else:
+            print('The following test scripts have failed: ')
+            if not webkitperl_success:
+                print('test-webkitperl')
+            if not webkitpy_success:
+                print('test-webkitpy')
+            if not webkitruby_success:
+                print('test-webkitruby')
+            print('Detailed results appear separately above.')
+            sys.exit(1)
+            
 if __name__ == '__main__':
     # The scripts directory is the directory containing this file.
     tester = ScriptsTester(os.path.dirname(__file__))