run-javascriptcore-tests won't report test results for testmasm, testair, testb3, testdfg and test api
https://bugs.webkit.org/show_bug.cgi?id=199489
<rdar://problem/47891081>

Patch by Zhifei Fang <zhifei_fang@apple.com> on 2019-07-12
Reviewed by Aakash Jain.

* BuildSlaveSupport/build.webkit.org-config/steps.py:
(RunJavaScriptCoreTests.countFailures):
* BuildSlaveSupport/build.webkit.org-config/steps_unittest.py:
* Scripts/run-javascriptcore-tests:
(runTest):
(reportTestFailures):
(runJSCStressTests):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@247393 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/steps.py b/Tools/BuildSlaveSupport/build.webkit.org-config/steps.py
index c27d262..a605af2 100644
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/steps.py
+++ b/Tools/BuildSlaveSupport/build.webkit.org-config/steps.py
@@ -331,6 +331,10 @@
 
     def start(self):
         platform = self.getProperty('platform')
+        architecture = self.getProperty("architecture")
+        # Currently run-javascriptcore-test doesn't support run those binaries remotely
+        if architecture in ['mips', 'armv7', 'aarch64']:
+            self.command += ['--no-testmasm', '--no-testair', '--no-testb3', '--no-testdfg', '--no-testapi']
         # Linux bots have currently problems with JSC tests that try to use large amounts of memory.
         # Check: https://bugs.webkit.org/show_bug.cgi?id=175140
         if platform in ('gtk', 'wpe'):
@@ -344,16 +348,21 @@
 
     def countFailures(self, cmd):
         logText = cmd.logs['stdio'].getText()
+        count = 0
 
         match = re.search(r'^Results for JSC stress tests:\r?\n\s+(\d+) failure', logText, re.MULTILINE)
         if match:
-            return int(match.group(1))
+            count += int(match.group(1))
+
+        match = re.search(r'Results for JSC test binaries:\r?\n\s+(\d+) failure', logText, re.MULTILINE)
+        if match:
+            count += int(match.group(1))
 
         match = re.search(r'^Results for Mozilla tests:\r?\n\s+(\d+) regression', logText, re.MULTILINE)
         if match:
-            return int(match.group(1))
+            count += int(match.group(1))
 
-        return 0
+        return count
 
 
 class RunRemoteJavaScriptCoreTests(RunJavaScriptCoreTests):
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/steps_unittest.py b/Tools/BuildSlaveSupport/build.webkit.org-config/steps_unittest.py
index 4f875d3..65315bd 100755
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/steps_unittest.py
+++ b/Tools/BuildSlaveSupport/build.webkit.org-config/steps_unittest.py
@@ -122,6 +122,18 @@
         self.assertResults(FAILURE, ["5 JSC tests failed"], 1,  """Results for JSC stress tests:
     5 failures found.""")
 
+    def test_jsc_stress_failures_with_binary_results_output(self):
+        self.assertResults(FAILURE, ["8 JSC tests failed"], 1,  """Results for JSC stress tests:
+    5 failures found.
+Results for JSC test binaries:
+    3 failures found.""")
+
+    def test_jsc_stress_failures_with_binary_result_output(self):
+        self.assertResults(FAILURE, ["6 JSC tests failed"], 1,  """Results for JSC stress tests:
+    5 failures found.
+Results for JSC test binaries:
+    1 failure found.""")
+
 
 class RunTest262TestsTest(unittest.TestCase):
     def assertResults(self, expected_result, expected_text, rc, stdio):
diff --git a/Tools/ChangeLog b/Tools/ChangeLog
index dfa3d67..96071b4 100644
--- a/Tools/ChangeLog
+++ b/Tools/ChangeLog
@@ -1,3 +1,19 @@
+2019-07-12  Zhifei Fang  <zhifei_fang@apple.com>
+
+        run-javascriptcore-tests won't report test results for testmasm, testair, testb3, testdfg and test api
+        https://bugs.webkit.org/show_bug.cgi?id=199489
+        <rdar://problem/47891081>
+
+        Reviewed by Aakash Jain.
+
+        * BuildSlaveSupport/build.webkit.org-config/steps.py:
+        (RunJavaScriptCoreTests.countFailures):
+        * BuildSlaveSupport/build.webkit.org-config/steps_unittest.py:
+        * Scripts/run-javascriptcore-tests:
+        (runTest):
+        (reportTestFailures):
+        (runJSCStressTests):
+
 2019-07-12  Aakash Jain  <aakash_jain@apple.com>
 
         [ews-build] Make layout-tests' full_results.json accessible in Buildbot
diff --git a/Tools/Scripts/run-javascriptcore-tests b/Tools/Scripts/run-javascriptcore-tests
index cfe61a2..6f63d1a 100755
--- a/Tools/Scripts/run-javascriptcore-tests
+++ b/Tools/Scripts/run-javascriptcore-tests
@@ -92,6 +92,8 @@
 my $remoteHost = 0;
 my $failFast = 1;
 my %jsonData = ();
+my @testResults = ();
+my $isTestFailed = 0;
 my $remoteConfigFile;
 my $jsonFileName;
 my $verbose = 0;
@@ -398,17 +400,39 @@
     my $exitStatus = exitStatus($testResult);
     print "$testName completed with rc=$testResult ($exitStatus)\n\n";
 
+    my $testStatus = ($exitStatus == 0)? JSON::PP::true: JSON::PP::false;
+    if ($testResult) {
+        $isTestFailed = 1;
+        push @testResults, $testName;
+    }
     if (defined($jsonFileName)) {
-        my $testStatus = ($exitStatus == 0)? JSON::PP::true: JSON::PP::false;
         $jsonData{$jsonTestStatusName} = $testStatus;
     }
 
     if ($testResult && $failFast) {
+        reportTestFailures();
         writeJsonDataIfApplicable();
         exit exitStatus($testResult);
     }
 }
 
+sub reportTestFailures {
+  my $numJSCtestFailures = @testResults;
+  if ($numJSCtestFailures) {
+      print "\n** The following JSC test binaries failures have been introduced:\n";
+      foreach my $testFailure (@testResults) {
+          print "\t$testFailure\n";
+      }
+  }
+  print "\n";
+
+  print "Results for JSC test binaries:\n";
+  printThingsFound($numJSCtestFailures, "failure", "failures", "found");
+  print "    OK.\n" if $numJSCtestFailures == 0;
+
+  print "\n";
+}
+
 if ($runTestMasm) { runTest("testmasm", "allMasmTestsPassed") }
 if ($runTestAir) { runTest("testair", "allAirTestsPassed") }
 if ($runTestB3) { runTest("testb3", "allB3TestsPassed") }
@@ -420,6 +444,11 @@
 chdirWebKit();
 
 runJSCStressTests();
+reportTestFailures();
+
+if ($isTestFailed) {
+  exit(1);
+}
 
 sub runJSCStressTests
 {
@@ -573,6 +602,7 @@
     my $numJSCStressFailures = @jscStressFailList;
 
     if ($numJSCStressFailures) {
+        $isTestFailed = 1;
         print "\n** The following JSC stress test failures have been introduced:\n";
         foreach my $testFailure (@jscStressFailList) {
             print "\t$testFailure\n";
@@ -591,7 +621,6 @@
     }
 
     writeJsonDataIfApplicable();
-    exit(1) if $numJSCStressFailures;
 }
 
 sub readAllLines