[Win] Unable to reliably run tests in parallel
authorpvollan@apple.com <pvollan@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 4 Aug 2016 17:02:42 +0000 (17:02 +0000)
committerpvollan@apple.com <pvollan@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 4 Aug 2016 17:02:42 +0000 (17:02 +0000)
https://bugs.webkit.org/show_bug.cgi?id=140914

Reviewed by Brent Fulgham.

The cygpath utility function can fail badly when running with multiple DumpRenderTree
processes. We can use string replacement to convert the Cygwin path to a Windows path
instead.

* Scripts/webkitpy/common/system/path.py:
(cygpathFast):
* Scripts/webkitpy/port/driver.py:
(Driver._command_from_driver_input):

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

Tools/ChangeLog
Tools/Scripts/webkitpy/common/system/path.py
Tools/Scripts/webkitpy/port/driver.py

index 5a9d5ce..eb09000 100644 (file)
@@ -1,3 +1,19 @@
+2016-08-04  Per Arne Vollan  <pvollan@apple.com>
+
+        [Win] Unable to reliably run tests in parallel
+        https://bugs.webkit.org/show_bug.cgi?id=140914
+
+        Reviewed by Brent Fulgham.
+
+        The cygpath utility function can fail badly when running with multiple DumpRenderTree
+        processes. We can use string replacement to convert the Cygwin path to a Windows path
+        instead.
+        * Scripts/webkitpy/common/system/path.py:
+        (cygpathFast):
+        * Scripts/webkitpy/port/driver.py:
+        (Driver._command_from_driver_input):
+
 2016-08-03  Aakash Jain  <aakash_jain@apple.com>
 
         Document instructions for increasing process and file limits
index efbf8f3..45f4a5a 100644 (file)
@@ -30,6 +30,7 @@
 
 import atexit
 import os
+import re
 import subprocess
 import sys
 import logging
@@ -51,6 +52,13 @@ def cygpath(path):
     return path
 
 
+def cygpathFast(path):
+    """Converts an absolute cygwin path to an absolute Windows path with string replacement."""
+    if sys.platform == 'cygwin':
+        path = re.sub('/cygdrive/c', 'c:', path)
+        path = re.sub('/', r'\\', path)
+    return path
+
 # Note that this object is not threadsafe and must only be called
 # from multiple threads under protection of a lock (as is done in cygpath())
 class _CygPath(object):
index 8d9630b..40f424d 100644 (file)
@@ -456,7 +456,7 @@ class Driver(object):
         else:
             command = self._port.abspath_for_test(driver_input.test_name)
             if sys.platform == 'cygwin':
-                command = path.cygpath(command)
+                command = path.cygpathFast(command)
 
         assert not driver_input.image_hash or driver_input.should_run_pixel_test