Fix WebKitTestRunner's testPath with Windows full paths
authorHironori.Fujii@sony.com <Hironori.Fujii@sony.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 31 Jan 2019 10:27:20 +0000 (10:27 +0000)
committerHironori.Fujii@sony.com <Hironori.Fujii@sony.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 31 Jan 2019 10:27:20 +0000 (10:27 +0000)
https://bugs.webkit.org/show_bug.cgi?id=194012

Reviewed by Alex Christensen.

updateTestOptionsFromTestHeader failed to open test files because
testPath returned wrong file paths. It returned a path "/C:/..."
if a URL "file:///C:/..." was given.

* WebKitTestRunner/TestController.cpp:
(WTR::testPath): Removed the first '/' if the path starts with something like "/C:/".

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

Tools/ChangeLog
Tools/WebKitTestRunner/TestController.cpp

index e10899f..2b4cc8d 100644 (file)
@@ -1,3 +1,17 @@
+2019-01-31  Fujii Hironori  <Hironori.Fujii@sony.com>
+
+        Fix WebKitTestRunner's testPath with Windows full paths
+        https://bugs.webkit.org/show_bug.cgi?id=194012
+
+        Reviewed by Alex Christensen.
+
+        updateTestOptionsFromTestHeader failed to open test files because
+        testPath returned wrong file paths. It returned a path "/C:/..."
+        if a URL "file:///C:/..." was given.
+
+        * WebKitTestRunner/TestController.cpp:
+        (WTR::testPath): Removed the first '/' if the path starts with something like "/C:/".
+
 2019-01-31  Carlos Garcia Campos  <cgarcia@igalia.com>
 
         [WPE] Bump font related dependencies to match the GTK+ port
 2019-01-31  Carlos Garcia Campos  <cgarcia@igalia.com>
 
         [WPE] Bump font related dependencies to match the GTK+ port
index 92e160a..6c7e97a 100644 (file)
@@ -1093,6 +1093,11 @@ static std::string testPath(WKURLRef url)
         auto path = adoptWK(WKURLCopyPath(url));
         auto buffer = std::vector<char>(WKStringGetMaximumUTF8CStringSize(path.get()));
         auto length = WKStringGetUTF8CString(path.get(), buffer.data(), buffer.size());
         auto path = adoptWK(WKURLCopyPath(url));
         auto buffer = std::vector<char>(WKStringGetMaximumUTF8CStringSize(path.get()));
         auto length = WKStringGetUTF8CString(path.get(), buffer.data(), buffer.size());
+#if OS(WINDOWS)
+        // Remove the first '/' if it starts with something like "/C:/".
+        if (length >= 4 && buffer[0] == '/' && buffer[2] == ':' && buffer[3] == '/')
+            return std::string(buffer.data() + 1, length - 1);
+#endif
         return std::string(buffer.data(), length);
     }
     return std::string();
         return std::string(buffer.data(), length);
     }
     return std::string();