<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[190290] trunk/Tools</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/190290">190290</a></dd>
<dt>Author</dt> <dd>bfulgham@apple.com</dd>
<dt>Date</dt> <dd>2015-09-28 15:44:17 -0700 (Mon, 28 Sep 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>[Win] Allow Windows to run test-webkitpy without Cygwin
https://bugs.webkit.org/show_bug.cgi?id=149602

Reviewed by Alex Christensen.

These changes mostly shift from hard-coded paths using UNIX-style
separators to Python's &quot;os.path.join&quot; syntax that uses the correct
path separator for each platform.
        
* Scripts/webkitpy/common/system/path.py:
(cygpath): Don't pass paths through Cygpath on native Windows.
* Scripts/webkitpy/port/win.py:
(WinPort._path_to_apache): Use os.path.join.
(WinPort._ntsd_location): Support 64-bit environment (ProgramW6432 doesn't exist
in 64-bit environments).
* Scripts/webkitpy/style/checker.py: Use os.path.join.
* Scripts/webkitpy/style/checker_unittest.py:
(GlobalVariablesTest.test_path_rules_specifier.assertNoCheck): Use os.path.join.
(GlobalVariablesTest.test_path_rules_specifier): Ditto.
(GlobalVariablesTest): Ditto.
(GlobalVariablesTest.test_max_reports_per_category): Ditto.
(CheckerDispatcherSkipTest.test_should_skip_with_warning): Ditto.
(CheckerDispatcherDispatchTest.test_js_paths): Ditto.
(CheckerDispatcherDispatchTest.test_json_paths): Ditto.
(CheckerDispatcherDispatchTest.test_python_paths): Ditto.
(CheckerDispatcherDispatchTest.test_text_paths): Ditto.
(CheckerDispatcherDispatchTest.test_xml_paths): Ditto.
(StyleProcessor_CodeCoverageTest._create_carriage_checker_class): Ditto.
(StyleProcessor_CodeCoverageTest): Ditto.
(StyleProcessor_CodeCoverageTest.test_should_process__skip_without_warning): Ditto.
(StyleProcessor_CodeCoverageTest.test_should_process__skip_with_warning): Ditto.
(StyleProcessor_CodeCoverageTest.test_should_process__true_result): Ditto.
* Scripts/webkitpy/w3c/test_parser_unittest.py: Uses os.path.join rather than
manual string concatenation of paths.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsScriptswebkitpycommonsystempathpy">trunk/Tools/Scripts/webkitpy/common/system/path.py</a></li>
<li><a href="#trunkToolsScriptswebkitpyportwinpy">trunk/Tools/Scripts/webkitpy/port/win.py</a></li>
<li><a href="#trunkToolsScriptswebkitpystylecheckerpy">trunk/Tools/Scripts/webkitpy/style/checker.py</a></li>
<li><a href="#trunkToolsScriptswebkitpystylechecker_unittestpy">trunk/Tools/Scripts/webkitpy/style/checker_unittest.py</a></li>
<li><a href="#trunkToolsScriptswebkitpyw3ctest_parser_unittestpy">trunk/Tools/Scripts/webkitpy/w3c/test_parser_unittest.py</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (190289 => 190290)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog        2015-09-28 22:37:36 UTC (rev 190289)
+++ trunk/Tools/ChangeLog        2015-09-28 22:44:17 UTC (rev 190290)
</span><span class="lines">@@ -1,3 +1,40 @@
</span><ins>+2015-09-28  Brent Fulgham  &lt;bfulgham@apple.com&gt;
+
+        [Win] Allow Windows to run test-webkitpy without Cygwin
+        https://bugs.webkit.org/show_bug.cgi?id=149602
+
+        Reviewed by Alex Christensen.
+
+        These changes mostly shift from hard-coded paths using UNIX-style
+        separators to Python's &quot;os.path.join&quot; syntax that uses the correct
+        path separator for each platform.
+        
+        * Scripts/webkitpy/common/system/path.py:
+        (cygpath): Don't pass paths through Cygpath on native Windows.
+        * Scripts/webkitpy/port/win.py:
+        (WinPort._path_to_apache): Use os.path.join.
+        (WinPort._ntsd_location): Support 64-bit environment (ProgramW6432 doesn't exist
+        in 64-bit environments).
+        * Scripts/webkitpy/style/checker.py: Use os.path.join.
+        * Scripts/webkitpy/style/checker_unittest.py:
+        (GlobalVariablesTest.test_path_rules_specifier.assertNoCheck): Use os.path.join.
+        (GlobalVariablesTest.test_path_rules_specifier): Ditto.
+        (GlobalVariablesTest): Ditto.
+        (GlobalVariablesTest.test_max_reports_per_category): Ditto.
+        (CheckerDispatcherSkipTest.test_should_skip_with_warning): Ditto.
+        (CheckerDispatcherDispatchTest.test_js_paths): Ditto.
+        (CheckerDispatcherDispatchTest.test_json_paths): Ditto.
+        (CheckerDispatcherDispatchTest.test_python_paths): Ditto.
+        (CheckerDispatcherDispatchTest.test_text_paths): Ditto.
+        (CheckerDispatcherDispatchTest.test_xml_paths): Ditto.
+        (StyleProcessor_CodeCoverageTest._create_carriage_checker_class): Ditto.
+        (StyleProcessor_CodeCoverageTest): Ditto.
+        (StyleProcessor_CodeCoverageTest.test_should_process__skip_without_warning): Ditto.
+        (StyleProcessor_CodeCoverageTest.test_should_process__skip_with_warning): Ditto.
+        (StyleProcessor_CodeCoverageTest.test_should_process__true_result): Ditto.
+        * Scripts/webkitpy/w3c/test_parser_unittest.py: Uses os.path.join rather than
+        manual string concatenation of paths.
+
</ins><span class="cx"> 2015-09-28  Csaba Osztrogonác  &lt;ossy@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Add bugzilla addresses of committers to contributors.json
</span></span></pre></div>
<a id="trunkToolsScriptswebkitpycommonsystempathpy"></a>
<div class="modfile"><h4>Modified: trunk/Tools/Scripts/webkitpy/common/system/path.py (190289 => 190290)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/Scripts/webkitpy/common/system/path.py        2015-09-28 22:37:36 UTC (rev 190289)
+++ trunk/Tools/Scripts/webkitpy/common/system/path.py        2015-09-28 22:44:17 UTC (rev 190290)
</span><span class="lines">@@ -29,6 +29,7 @@
</span><span class="cx"> &quot;&quot;&quot;generic routines to convert platform-specific paths to URIs.&quot;&quot;&quot;
</span><span class="cx"> 
</span><span class="cx"> import atexit
</span><ins>+import os
</ins><span class="cx"> import subprocess
</span><span class="cx"> import sys
</span><span class="cx"> import logging
</span><span class="lines">@@ -44,7 +45,9 @@
</span><span class="cx"> 
</span><span class="cx"> def cygpath(path):
</span><span class="cx">     &quot;&quot;&quot;Converts an absolute cygwin path to an absolute Windows path.&quot;&quot;&quot;
</span><del>-    return _CygPath.convert_using_singleton(path)
</del><ins>+    if sys.platform == 'cygwin':
+        return _CygPath.convert_using_singleton(path)
+    return path
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> # Note that this object is not threadsafe and must only be called
</span></span></pre></div>
<a id="trunkToolsScriptswebkitpyportwinpy"></a>
<div class="modfile"><h4>Modified: trunk/Tools/Scripts/webkitpy/port/win.py (190289 => 190290)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/Scripts/webkitpy/port/win.py        2015-09-28 22:37:36 UTC (rev 190289)
+++ trunk/Tools/Scripts/webkitpy/port/win.py        2015-09-28 22:44:17 UTC (rev 190290)
</span><span class="lines">@@ -123,7 +123,7 @@
</span><span class="cx">         return True
</span><span class="cx"> 
</span><span class="cx">     def _path_to_apache(self):
</span><del>-        httpdPath = &quot;C:/xampp/apache/bin/httpd.exe&quot;
</del><ins>+        httpdPath = os.path.join('C:', 'xampp', 'apache', 'bin', 'httpd.exe')
</ins><span class="cx">         if self._filesystem.exists(httpdPath):
</span><span class="cx">             return httpdPath
</span><span class="cx">         _log.error(&quot;Could not find apache. Not installed or unknown path.&quot;)
</span><span class="lines">@@ -150,8 +150,9 @@
</span><span class="cx">             self._filesystem.join(os.environ['PROGRAMFILES'], &quot;Windows Kits&quot;, &quot;8.0&quot;, &quot;Debuggers&quot;, &quot;x86&quot;, &quot;ntsd.exe&quot;),
</span><span class="cx">             self._filesystem.join(os.environ['PROGRAMFILES'], &quot;Windows Kits&quot;, &quot;8.0&quot;, &quot;Debuggers&quot;, &quot;x64&quot;, &quot;ntsd.exe&quot;),
</span><span class="cx">             self._filesystem.join(os.environ['PROGRAMFILES'], &quot;Debugging Tools for Windows (x86)&quot;, &quot;ntsd.exe&quot;),
</span><del>-            self._filesystem.join(os.environ['ProgramW6432'], &quot;Debugging Tools for Windows (x64)&quot;, &quot;ntsd.exe&quot;),
</del><span class="cx">             self._filesystem.join(os.environ['SYSTEMROOT'], &quot;system32&quot;, &quot;ntsd.exe&quot;)]
</span><ins>+        if 'ProgramW6432' in os.environ:
+            possible_paths.append(self._filesystem.join(os.environ['ProgramW6432'], &quot;Debugging Tools for Windows (x64)&quot;, &quot;ntsd.exe&quot;))
</ins><span class="cx">         for path in possible_paths:
</span><span class="cx">             expanded_path = self._filesystem.expanduser(path)
</span><span class="cx">             if self._filesystem.exists(expanded_path):
</span></span></pre></div>
<a id="trunkToolsScriptswebkitpystylecheckerpy"></a>
<div class="modfile"><h4>Modified: trunk/Tools/Scripts/webkitpy/style/checker.py (190289 => 190290)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/Scripts/webkitpy/style/checker.py        2015-09-28 22:37:36 UTC (rev 190289)
+++ trunk/Tools/Scripts/webkitpy/style/checker.py        2015-09-28 22:44:17 UTC (rev 190290)
</span><span class="lines">@@ -1,7 +1,7 @@
</span><span class="cx"> # Copyright (C) 2009 Google Inc. All rights reserved.
</span><span class="cx"> # Copyright (C) 2010 Chris Jerdonek (chris.jerdonek@gmail.com)
</span><span class="cx"> # Copyright (C) 2010 ProFUSION embedded systems
</span><del>-# Copyright (C) 2013 Apple Inc. All rights reserved.
</del><ins>+# Copyright (C) 2013, 2015 Apple Inc. All rights reserved.
</ins><span class="cx"> #
</span><span class="cx"> # Redistribution and use in source and binary forms, with or without
</span><span class="cx"> # modification, are permitted provided that the following conditions are
</span><span class="lines">@@ -136,29 +136,29 @@
</span><span class="cx"> 
</span><span class="cx">     ([# TestNetscapePlugIn has no config.h and uses funny names like
</span><span class="cx">       # NPP_SetWindow.
</span><del>-      &quot;Tools/DumpRenderTree/TestNetscapePlugIn/&quot;,
</del><ins>+      os.path.join('Tools', 'DumpRenderTree', 'TestNetscapePlugIn'),
</ins><span class="cx">       # The API test harnesses have no config.h and use funny macros like
</span><span class="cx">       # TEST_CLASS_NAME.
</span><del>-      &quot;Tools/WebKitAPITest/&quot;,
-      &quot;Tools/TestWebKitAPI/&quot;],
</del><ins>+      os.path.join('Tools', 'WebKitAPITest'),
+      os.path.join('Tools', 'TestWebKitAPI')],
</ins><span class="cx">      [&quot;-build/include&quot;,
</span><span class="cx">       &quot;-readability/naming&quot;]),
</span><span class="cx">     ([# There is no clean way to avoid &quot;yy_*&quot; names used by flex.
</span><del>-      &quot;Source/WebCore/css/CSSParser.cpp&quot;],
</del><ins>+      os.path.join('Source', 'WebCore', 'css', 'CSSParser.cpp')],
</ins><span class="cx">      [&quot;-readability/naming&quot;]),
</span><span class="cx"> 
</span><span class="cx">     ([# The GTK+ APIs use GTK+ naming style, which includes
</span><span class="cx">       # lower-cased, underscore-separated values, whitespace before
</span><span class="cx">       # parens for function calls, and always having variable names.
</span><span class="cx">       # Also, GTK+ allows the use of NULL.
</span><del>-      &quot;Source/WebCore/bindings/gobject/WebKitDOMCustom.h&quot;,
-      &quot;Source/WebCore/bindings/gobject/WebKitDOMDeprecated.h&quot;,
-      &quot;Source/WebCore/bindings/gobject/WebKitDOMEventTarget.h&quot;,
-      &quot;Source/WebCore/bindings/gobject/WebKitDOMNodeFilter.h&quot;,
-      &quot;Source/WebCore/bindings/gobject/WebKitDOMXPathNSResolver.h&quot;,
-      &quot;Source/WebCore/bindings/scripts/test/GObject&quot;,
-      &quot;Source/WebKit/gtk/webkit/&quot;,
-      &quot;Tools/DumpRenderTree/gtk/&quot;],
</del><ins>+      os.path.join('Source', 'WebCore', 'bindings', 'gobject', 'WebKitDOMCustom.h'),
+      os.path.join('Source', 'WebCore', 'bindings', 'gobject', 'WebKitDOMDeprecated.h'),
+      os.path.join('Source', 'WebCore', 'bindings', 'gobject', 'WebKitDOMEventTarget.h'),
+      os.path.join('Source', 'WebCore', 'bindings', 'gobject', 'WebKitDOMNodeFilter.h'),
+      os.path.join('Source', 'WebCore', 'bindings', 'gobject', 'WebKitDOMXPathNSResolver.h'),
+      os.path.join('Source', 'WebCore', 'bindings', 'scripts', 'test', 'GObject'),
+      os.path.join('Source', 'WebKit', 'gtk', 'webkit'),
+      os.path.join('Tools', 'DumpRenderTree', 'gtk')],
</ins><span class="cx">      [&quot;-readability/naming&quot;,
</span><span class="cx">       &quot;-readability/parameter_name&quot;,
</span><span class="cx">       &quot;-readability/null&quot;,
</span><span class="lines">@@ -169,34 +169,34 @@
</span><span class="cx"> 
</span><span class="cx">     ([# The GTK+ API use upper case, underscore separated, words in
</span><span class="cx">       # certain types of enums (e.g. signals, properties).
</span><del>-      &quot;Source/WebKit2/UIProcess/API/gtk&quot;,
-      &quot;Source/WebKit2/WebProcess/InjectedBundle/API/gtk&quot;],
</del><ins>+      os.path.join('Source', 'WebKit2', 'UIProcess', 'API', 'gtk'),
+      os.path.join('Source', 'WebKit2', 'WebProcess', 'InjectedBundle', 'API', 'gtk')],
</ins><span class="cx">      [&quot;-readability/enum_casing&quot;]),
</span><span class="cx"> 
</span><span class="cx">     ([# Header files in ForwardingHeaders have no header guards or
</span><span class="cx">       # exceptional header guards (e.g., WebCore_FWD_Debugger_h).
</span><del>-      &quot;/ForwardingHeaders/&quot;],
</del><ins>+      os.path.join(os.path.sep, 'ForwardingHeaders')],
</ins><span class="cx">      [&quot;-build/header_guard&quot;]),
</span><span class="cx">     ([# assembler has lots of opcodes that use underscores, so
</span><span class="cx">       # we don't check for underscores in that directory.
</span><del>-      &quot;Source/JavaScriptCore/assembler/&quot;,
-      &quot;Source/JavaScriptCore/jit/JIT&quot;],
</del><ins>+      os.path.join('Source', 'JavaScriptCore', 'assembler'),
+      os.path.join('Source', 'JavaScriptCore', 'jit', 'JIT')],
</ins><span class="cx">      [&quot;-readability/naming/underscores&quot;]),
</span><span class="cx">     ([# JITStubs has an usual syntax which causes false alarms for a few checks.
</span><del>-      &quot;JavaScriptCore/jit/JITStubs.cpp&quot;],
</del><ins>+      os.path.join('JavaScriptCore', 'jit', 'JITStubs.cpp')],
</ins><span class="cx">      [&quot;-readability/parameter_name&quot;,
</span><span class="cx">       &quot;-whitespace/parens&quot;]),
</span><span class="cx"> 
</span><span class="cx">     ([# The EFL APIs use EFL naming style, which includes
</span><span class="cx">       # both lower-cased and camel-cased, underscore-sparated
</span><span class="cx">       # values.
</span><del>-      &quot;Source/WebKit2/UIProcess/API/efl/&quot;,
-      &quot;Source/WebKit2/WebProcess/InjectedBundle/API/efl/&quot;],
</del><ins>+      os.path.join('Source', 'WebKit2', 'UIProcess', 'API', 'efl'),
+      os.path.join('Source', 'WebKit2', 'WebProcess', 'InjectedBundle', 'API', 'efl')],
</ins><span class="cx">      [&quot;-readability/naming&quot;,
</span><span class="cx">       &quot;-readability/parameter_name&quot;]),
</span><span class="cx">     ([# MiniBrowser/efl are EFL simple application.
</span><span class="cx">       # They need to use efl coding style and they don't have config.h.
</span><del>-      &quot;Tools/MiniBrowser/efl/&quot;],
</del><ins>+      os.path.join('Tools', 'MiniBrowser', 'efl')],
</ins><span class="cx">      [&quot;-readability/naming&quot;,
</span><span class="cx">       &quot;-readability/parameter_name&quot;,
</span><span class="cx">       &quot;-runtime/ctype_function&quot;,
</span><span class="lines">@@ -206,33 +206,33 @@
</span><span class="cx">     # WebKit2 rules:
</span><span class="cx">     # WebKit2 and certain directories have idiosyncracies.
</span><span class="cx">     ([# NPAPI has function names with underscores.
</span><del>-      &quot;Source/WebKit2/WebProcess/Plugins/Netscape&quot;],
</del><ins>+      os.path.join('Source', 'WebKit2', 'WebProcess', 'Plugins', 'Netscape')],
</ins><span class="cx">      [&quot;-readability/naming&quot;]),
</span><span class="cx">     ([# The WebKit2 C API has names with underscores and whitespace-aligned
</span><span class="cx">       # struct members. Also, we allow unnecessary parameter names in
</span><span class="cx">       # WebKit2 APIs because we're matching CF's header style.
</span><span class="cx">       # Additionally, we use word which starts with non-capital letter 'k'
</span><span class="cx">       # for types of enums.
</span><del>-      &quot;Source/WebKit2/UIProcess/API/C/&quot;,
-      &quot;Source/WebKit2/Shared/API/c/&quot;,
-      &quot;Source/WebKit2/WebProcess/InjectedBundle/API/c/&quot;],
</del><ins>+      os.path.join('Source', 'WebKit2', 'UIProcess', 'API', 'C'),
+      os.path.join('Source', 'WebKit2', 'Shared', 'API', 'c'),
+      os.path.join('Source', 'WebKit2', 'WebProcess', 'InjectedBundle', 'API', 'c')],
</ins><span class="cx">      [&quot;-readability/enum_casing&quot;,
</span><span class="cx">       &quot;-readability/naming&quot;,
</span><span class="cx">       &quot;-readability/parameter_name&quot;,
</span><span class="cx">       &quot;-whitespace/declaration&quot;]),
</span><span class="cx">     ([# These files define GObjects, which implies some definitions of
</span><span class="cx">       # variables and functions containing underscores.
</span><del>-      &quot;Source/WebCore/bindings/gobject/WebKitDOMCustom.cpp&quot;,
-      &quot;Source/WebCore/bindings/gobject/WebKitDOMDeprecated.cpp&quot;,
-      &quot;Source/WebCore/bindings/gobject/WebKitDOMEventTarget.cpp&quot;,
-      &quot;Source/WebCore/bindings/gobject/WebKitDOMNodeFilter.cpp&quot;,
-      &quot;Source/WebCore/bindings/gobject/WebKitDOMXPathNSResolver.cpp&quot;,
-      &quot;Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer1.cpp&quot;,
-      &quot;Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp&quot;,
-      &quot;Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp&quot;,
-      &quot;Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp&quot;,
-      &quot;Source/WebCore/platform/network/soup/ProxyResolverSoup.cpp&quot;,
-      &quot;Source/WebCore/platform/network/soup/ProxyResolverSoup.h&quot;],
</del><ins>+      os.path.join('Source', 'WebCore', 'bindings', 'gobject', 'WebKitDOMCustom.cpp'),
+      os.path.join('Source', 'WebCore', 'bindings', 'gobject', 'WebKitDOMDeprecated.cpp'),
+      os.path.join('Source', 'WebCore', 'bindings', 'gobject', 'WebKitDOMEventTarget.cpp'),
+      os.path.join('Source', 'WebCore', 'bindings', 'gobject', 'WebKitDOMNodeFilter.cpp'),
+      os.path.join('Source', 'WebCore', 'bindings', 'gobject', 'WebKitDOMXPathNSResolver.cpp'),
+      os.path.join('Source', 'WebCore', 'platform', 'graphics', 'gstreamer', 'VideoSinkGStreamer1.cpp'),
+      os.path.join('Source', 'WebCore', 'platform', 'graphics', 'gstreamer', 'VideoSinkGStreamer.cpp'),
+      os.path.join('Source', 'WebCore', 'platform', 'graphics', 'gstreamer', 'WebKitWebSourceGStreamer.cpp'),
+      os.path.join('Source', 'WebCore', 'platform', 'audio', 'gstreamer', 'WebKitWebAudioSourceGStreamer.cpp'),
+      os.path.join('Source', 'WebCore', 'platform', 'network', 'soup', 'ProxyResolverSoup.cpp'),
+      os.path.join('Source', 'WebCore', 'platform', 'network', 'soup', 'ProxyResolverSoup.h')],
</ins><span class="cx">      [&quot;-readability/naming&quot;,
</span><span class="cx">       &quot;-readability/enum_casing&quot;]),
</span><span class="cx"> 
</span><span class="lines">@@ -242,7 +242,7 @@
</span><span class="cx">     #   No trailing white space: since this is easy to correct.
</span><span class="cx">     #   No carriage-return line endings: since this is easy to correct.
</span><span class="cx">     #
</span><del>-    ([&quot;webkitpy/thirdparty/&quot;],
</del><ins>+    ([os.path.join('webkitpy', 'thirdparty')],
</ins><span class="cx">      [&quot;-&quot;,
</span><span class="cx">       &quot;+pep8/W191&quot;,  # Tabs
</span><span class="cx">       &quot;+pep8/W291&quot;,  # Trailing white space
</span><span class="lines">@@ -250,11 +250,11 @@
</span><span class="cx"> 
</span><span class="cx">     ([# There is no way to avoid the symbols __jit_debug_register_code
</span><span class="cx">       # and __jit_debug_descriptor when integrating with gdb.
</span><del>-      &quot;Source/JavaScriptCore/jit/GDBInterface.cpp&quot;],
</del><ins>+      os.path.join('Source', 'JavaScriptCore', 'jit', 'GDBInterface.cpp')],
</ins><span class="cx">      [&quot;-readability/naming&quot;]),
</span><span class="cx"> 
</span><span class="cx">     ([# On some systems the trailing CR is causing parser failure.
</span><del>-      &quot;Source/JavaScriptCore/parser/Keywords.table&quot;],
</del><ins>+      os.path.join('Source', 'JavaScriptCore', 'parser', 'Keywords.table')],
</ins><span class="cx">      [&quot;+whitespace/carriage_return&quot;]),
</span><span class="cx"> ]
</span><span class="cx"> 
</span><span class="lines">@@ -316,14 +316,14 @@
</span><span class="cx"> # WebKit maintains some files in Mozilla style on purpose to ease
</span><span class="cx"> # future merges.
</span><span class="cx"> _SKIPPED_FILES_WITH_WARNING = [
</span><del>-    &quot;Tools/TestWebKitAPI/Tests/WebKitGtk/&quot;,
</del><ins>+    os.path.join('Tools', 'TestWebKitAPI', 'Tests', 'WebKitGtk'),
</ins><span class="cx">     # All WebKit*.h files in Source/WebKit2/UIProcess/API/gtk,
</span><span class="cx">     # except those ending in ...Private.h are GTK+ API headers,
</span><span class="cx">     # which differ greatly from WebKit coding style.
</span><del>-    re.compile(r'Source/WebKit2/UIProcess/API/gtk/WebKit(?!.*Private\.h).*\.h$'),
-    re.compile(r'Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKit(?!.*Private\.h).*\.h$'),
-    'Source/WebKit2/UIProcess/API/gtk/webkit2.h',
-    'Source/WebKit2/WebProcess/InjectedBundle/API/gtk/webkit-web-extension.h']
</del><ins>+    re.compile(re.escape(os.path.join('Source', 'WebKit2', 'UIProcess', 'API', 'gtk') + os.path.sep) + r'WebKit(?!.*Private\.h).*\.h$'),
+    re.compile(re.escape(os.path.join('Source', 'WebKit2', 'WebProcess', 'InjectedBundle', 'API', 'gtk') + os.path.sep) + r'WebKit(?!.*Private\.h).*\.h$'),
+    os.path.join('Source', 'WebKit2', 'UIProcess', 'API', 'gtk', 'webkit2.h'),
+    os.path.join('Source', 'WebKit2', 'WebProcess', 'InjectedBundle', 'API', 'gtk', 'webkit-web-extension.h')]
</ins><span class="cx"> 
</span><span class="cx"> # Files to skip that are more common or obvious.
</span><span class="cx"> #
</span></span></pre></div>
<a id="trunkToolsScriptswebkitpystylechecker_unittestpy"></a>
<div class="modfile"><h4>Modified: trunk/Tools/Scripts/webkitpy/style/checker_unittest.py (190289 => 190290)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/Scripts/webkitpy/style/checker_unittest.py        2015-09-28 22:37:36 UTC (rev 190289)
+++ trunk/Tools/Scripts/webkitpy/style/checker_unittest.py        2015-09-28 22:44:17 UTC (rev 190290)
</span><span class="lines">@@ -2,7 +2,7 @@
</span><span class="cx"> #
</span><span class="cx"> # Copyright (C) 2009 Google Inc. All rights reserved.
</span><span class="cx"> # Copyright (C) 2009 Torch Mobile Inc.
</span><del>-# Copyright (C) 2009, 2013 Apple Inc. All rights reserved.
</del><ins>+# Copyright (C) 2009, 2013, 2015 Apple Inc. All rights reserved.
</ins><span class="cx"> # Copyright (C) 2010 Chris Jerdonek (chris.jerdonek@gmail.com)
</span><span class="cx"> #
</span><span class="cx"> # Redistribution and use in source and binary forms, with or without
</span><span class="lines">@@ -213,27 +213,27 @@
</span><span class="cx"> 
</span><span class="cx">         assertCheck(&quot;random_path.cpp&quot;,
</span><span class="cx">                     &quot;build/include&quot;)
</span><del>-        assertNoCheck(&quot;Tools/WebKitAPITest/main.cpp&quot;,
</del><ins>+        assertNoCheck(os.path.join('Tools', 'WebKitAPITest', 'main.cpp'),
</ins><span class="cx">                       &quot;build/include&quot;)
</span><span class="cx">         assertCheck(&quot;random_path.cpp&quot;,
</span><span class="cx">                     &quot;readability/naming&quot;)
</span><del>-        assertNoCheck(&quot;Source/WebKit/gtk/webkit/webkit.h&quot;,
</del><ins>+        assertNoCheck(os.path.join('Source', 'WebKit', 'gtk', 'webkit', 'webkit.h'),
</ins><span class="cx">                       &quot;readability/naming&quot;)
</span><del>-        assertNoCheck(&quot;Tools/DumpRenderTree/gtk/DumpRenderTree.cpp&quot;,
</del><ins>+        assertNoCheck(os.path.join('Tools', 'DumpRenderTree', 'gtk', 'DumpRenderTree.cpp'),
</ins><span class="cx">                       &quot;readability/null&quot;)
</span><del>-        assertNoCheck(&quot;Source/WebKit2/UIProcess/API/efl/ewk_view.h&quot;,
</del><ins>+        assertNoCheck(os.path.join('Source', 'WebKit2', 'UIProcess', 'API', 'efl', 'ewk_view.h'),
</ins><span class="cx">                       &quot;readability/naming&quot;)
</span><del>-        assertNoCheck(&quot;Source/WebCore/css/CSSParser.cpp&quot;,
</del><ins>+        assertNoCheck(os.path.join('Source', 'WebCore', 'css', 'CSSParser.cpp'),
</ins><span class="cx">                       &quot;readability/naming&quot;)
</span><span class="cx"> 
</span><del>-        assertNoCheck(&quot;Source/WebCore/ForwardingHeaders/debugger/Debugger.h&quot;,
</del><ins>+        assertNoCheck(os.path.join('Source', 'WebCore', 'ForwardingHeaders', 'debugger', 'Debugger.h'),
</ins><span class="cx">                       &quot;build/header_guard&quot;)
</span><span class="cx"> 
</span><del>-        assertNoCheck(&quot;Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp&quot;,
</del><ins>+        assertNoCheck(os.path.join('Source', 'WebCore', 'platform', 'graphics', 'gstreamer', 'VideoSinkGStreamer.cpp'),
</ins><span class="cx">                       &quot;readability/naming&quot;)
</span><span class="cx"> 
</span><span class="cx">         # Third-party Python code: webkitpy/thirdparty
</span><del>-        path = &quot;Tools/Scripts/webkitpy/thirdparty/mock.py&quot;
</del><ins>+        path = os.path.join('Tools', 'Scripts', 'webkitpy', 'thirdparty', 'mock.py')
</ins><span class="cx">         assertNoCheck(path, &quot;build/include&quot;)
</span><span class="cx">         assertNoCheck(path, &quot;pep8/E401&quot;)  # A random pep8 category.
</span><span class="cx">         assertCheck(path, &quot;pep8/W191&quot;)
</span><span class="lines">@@ -241,11 +241,11 @@
</span><span class="cx">         assertCheck(path, &quot;whitespace/carriage_return&quot;)
</span><span class="cx"> 
</span><span class="cx">         # Test if the exception for GDBInterface.cpp is in place.
</span><del>-        assertNoCheck(&quot;Source/JavaScriptCore/jit/GDBInterface.cpp&quot;,
</del><ins>+        assertNoCheck(os.path.join('Source', 'JavaScriptCore', 'jit', 'GDBInterface.cpp'),
</ins><span class="cx">                       &quot;readability/naming&quot;)
</span><span class="cx"> 
</span><span class="cx">         # Javascript keywords.
</span><del>-        assertCheck(&quot;Source/JavaScriptCore/parser/Keywords.table&quot;, &quot;whitespace/carriage_return&quot;)
</del><ins>+        assertCheck(os.path.join('Source', 'JavaScriptCore', 'parser', 'Keywords.table'), &quot;whitespace/carriage_return&quot;)
</ins><span class="cx"> 
</span><span class="cx">     def test_max_reports_per_category(self):
</span><span class="cx">         &quot;&quot;&quot;Check that _MAX_REPORTS_PER_CATEGORY is valid.&quot;&quot;&quot;
</span><span class="lines">@@ -280,10 +280,10 @@
</span><span class="cx">         &quot;&quot;&quot;Test should_skip_with_warning().&quot;&quot;&quot;
</span><span class="cx">         # Check skipped files.
</span><span class="cx">         paths_to_skip = [
</span><del>-           &quot;Tools/TestWebKitAPI/Tests/WebKitGtk/testatk.c&quot;,
-           &quot;Source/WebKit2/UIProcess/API/gtk/webkit2.h&quot;,
-           &quot;Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h&quot;,
-           &quot;Source/WebKit2/UIProcess/API/gtk/WebKitLoader.h&quot;,
</del><ins>+           os.path.join('Tools', 'TestWebKitAPI', 'Tests', 'WebKitGtk', 'testatk.c'),
+           os.path.join('Source', 'WebKit2', 'UIProcess', 'API', 'gtk', 'webkit2.h'),
+           os.path.join('Source', 'WebKit2', 'UIProcess', 'API', 'gtk', 'WebKitWebView.h'),
+           os.path.join('Source', 'WebKit2', 'UIProcess', 'API', 'gtk', 'WebKitLoader.h'),
</ins><span class="cx">             ]
</span><span class="cx"> 
</span><span class="cx">         for path in paths_to_skip:
</span><span class="lines">@@ -293,12 +293,12 @@
</span><span class="cx">         # Verify that some files are not skipped.
</span><span class="cx">         paths_not_to_skip = [
</span><span class="cx">            &quot;foo.txt&quot;,
</span><del>-           &quot;Source/WebKit2/UIProcess/API/gtk/HelperClass.cpp&quot;,
-           &quot;Source/WebKit2/UIProcess/API/gtk/HelperClass.h&quot;,
-           &quot;Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp&quot;,
-           &quot;Source/WebKit2/UIProcess/API/gtk/WebKitWebViewPrivate.h&quot;,
-           &quot;Tools/TestWebKitAPI/Tests/WebKit2Gtk/WebViewTest.cpp&quot;,
-           &quot;Tools/TestWebKitAPI/Tests/WebKit2Gtk/WebViewTest.h&quot;,
</del><ins>+           os.path.join('Source', 'WebKit2', 'UIProcess', 'API', 'gtk', 'HelperClass.cpp'),
+           os.path.join('Source', 'WebKit2', 'UIProcess', 'API', 'gtk', 'HelperClass.h'),
+           os.path.join('Source', 'WebKit2', 'UIProcess', 'API', 'gtk', 'WebKitWebView.cpp'),
+           os.path.join('Source', 'WebKit2', 'UIProcess', 'API', 'gtk', 'WebKitWebViewPrivate.h'),
+           os.path.join('Tools', 'TestWebKitAPI', 'Tests', 'WebKit2Gtk', 'WebViewTest.cpp'),
+           os.path.join('Tools', 'TestWebKitAPI', 'Tests', 'WebKit2Gtk', 'WebViewTest.h'),
</ins><span class="cx">             ]
</span><span class="cx"> 
</span><span class="cx">         for path in paths_not_to_skip:
</span><span class="lines">@@ -471,7 +471,7 @@
</span><span class="cx">     def test_js_paths(self):
</span><span class="cx">         &quot;&quot;&quot;Test paths that should be checked as JavaScript.&quot;&quot;&quot;
</span><span class="cx">         paths = [
</span><del>-           &quot;Source/WebInspectorUI/UserInterface/dummy.js&quot;,
</del><ins>+           os.path.join('Source', 'WebInspectorUI', 'UserInterface', 'dummy.js'),
</ins><span class="cx">         ]
</span><span class="cx"> 
</span><span class="cx">         for path in paths:
</span><span class="lines">@@ -489,8 +489,8 @@
</span><span class="cx">     def test_json_paths(self):
</span><span class="cx">         &quot;&quot;&quot;Test paths that should be checked as JSON.&quot;&quot;&quot;
</span><span class="cx">         paths = [
</span><del>-           &quot;Source/WebCore/inspector/Inspector.json&quot;,
-           &quot;Tools/BuildSlaveSupport/build.webkit.org-config/config.json&quot;,
</del><ins>+           os.path.join('Source', 'WebCore', 'inspector', 'Inspector.json'),
+           os.path.join('Tools', 'BuildSlaveSupport', 'build.webkit.org-config', 'config.json'),
</ins><span class="cx">         ]
</span><span class="cx"> 
</span><span class="cx">         for path in paths:
</span><span class="lines">@@ -509,7 +509,7 @@
</span><span class="cx">         &quot;&quot;&quot;Test paths that should be checked as Python.&quot;&quot;&quot;
</span><span class="cx">         paths = [
</span><span class="cx">            &quot;foo.py&quot;,
</span><del>-           &quot;Tools/Scripts/modules/text_style.py&quot;,
</del><ins>+           os.path.join('Tools', 'Scripts', 'modules', 'text_style.py'),
</ins><span class="cx">         ]
</span><span class="cx"> 
</span><span class="cx">         for path in paths:
</span><span class="lines">@@ -550,10 +550,10 @@
</span><span class="cx">            &quot;foo.wm&quot;,
</span><span class="cx">            &quot;foo.xhtml&quot;,
</span><span class="cx">            &quot;foo.y&quot;,
</span><del>-           &quot;Source/WebInspectorUI/External/codemirror.js&quot;,
-           &quot;LayoutTests/fast/foo.js&quot;,
-           &quot;Websites/webkit.org/foo.js&quot;,
-           os.path.join(&quot;Tools&quot;, &quot;Scripts&quot;, &quot;check-webkit-style&quot;),
</del><ins>+           os.path.join('Source', 'WebInspectorUI', 'External', 'codemirror.js'),
+           os.path.join('LayoutTests', 'fast', 'foo.js'),
+           os.path.join('Websites', 'webkit.org', 'foo.js'),
+           os.path.join('Tools', 'Scripts', 'check-webkit-style'),
</ins><span class="cx">         ]
</span><span class="cx"> 
</span><span class="cx">         for path in paths:
</span><span class="lines">@@ -571,8 +571,8 @@
</span><span class="cx">     def test_xml_paths(self):
</span><span class="cx">         &quot;&quot;&quot;Test paths that should be checked as XML.&quot;&quot;&quot;
</span><span class="cx">         paths = [
</span><del>-           &quot;Source/WebCore/WebCore.vcproj/WebCore.vcproj&quot;,
-           &quot;WebKitLibraries/win/tools/vsprops/common.vsprops&quot;,
</del><ins>+           os.path.join('Source', 'WebCore', 'WebCore.vcproj', 'WebCore.vcproj'),
+           os.path.join('WebKitLibraries', 'win', 'tools', 'vsprops', 'common.vsprops'),
</ins><span class="cx">         ]
</span><span class="cx"> 
</span><span class="cx">         for path in paths:
</span><span class="lines">@@ -807,22 +807,22 @@
</span><span class="cx"> 
</span><span class="cx">     def test_should_process__skip_without_warning(self):
</span><span class="cx">         &quot;&quot;&quot;Test should_process() for a skip-without-warning file.&quot;&quot;&quot;
</span><del>-        file_path = &quot;foo/skip_without_warning.txt&quot;
</del><ins>+        file_path = os.path.join('foo', 'skip_without_warning.txt')
</ins><span class="cx"> 
</span><span class="cx">         self.assertFalse(self._processor.should_process(file_path))
</span><span class="cx"> 
</span><span class="cx">     def test_should_process__skip_with_warning(self):
</span><span class="cx">         &quot;&quot;&quot;Test should_process() for a skip-with-warning file.&quot;&quot;&quot;
</span><del>-        file_path = &quot;foo/skip_with_warning.txt&quot;
</del><ins>+        file_path = os.path.join('foo', 'skip_with_warning.txt')
</ins><span class="cx"> 
</span><span class="cx">         self.assertFalse(self._processor.should_process(file_path))
</span><span class="cx"> 
</span><span class="cx">         self.assertLog(['WARNING: File exempt from style guide. '
</span><del>-                        'Skipping: &quot;foo/skip_with_warning.txt&quot;\n'])
</del><ins>+                        'Skipping: &quot;{0}&quot;\n'.format(os.path.join('foo', 'skip_with_warning.txt'))])
</ins><span class="cx"> 
</span><span class="cx">     def test_should_process__true_result(self):
</span><span class="cx">         &quot;&quot;&quot;Test should_process() for a file that should be processed.&quot;&quot;&quot;
</span><del>-        file_path = &quot;foo/skip_process.txt&quot;
</del><ins>+        file_path = os.path.join('foo', 'skip_process.txt')
</ins><span class="cx"> 
</span><span class="cx">         self.assertTrue(self._processor.should_process(file_path))
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkToolsScriptswebkitpyw3ctest_parser_unittestpy"></a>
<div class="modfile"><h4>Modified: trunk/Tools/Scripts/webkitpy/w3c/test_parser_unittest.py (190289 => 190290)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/Scripts/webkitpy/w3c/test_parser_unittest.py        2015-09-28 22:37:36 UTC (rev 190289)
+++ trunk/Tools/Scripts/webkitpy/w3c/test_parser_unittest.py        2015-09-28 22:44:17 UTC (rev 190290)
</span><span class="lines">@@ -1,4 +1,5 @@
</span><span class="cx"> # Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved.
</span><ins>+# Copyright (C) 2015 Apple Inc. All Rights Reserved.
</ins><span class="cx"> #
</span><span class="cx"> # Redistribution and use in source and binary forms, with or without
</span><span class="cx"> # modification, are permitted provided that the following conditions
</span><span class="lines">@@ -42,8 +43,8 @@
</span><span class="cx"> &lt;link rel=&quot;match&quot; href=&quot;green-box-ref.xht&quot; /&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &quot;&quot;&quot;
</span><del>-        test_path = '/some/madeup/path/'
-        parser = TestParser(options, test_path + 'somefile.html')
</del><ins>+        test_path = os.path.join(os.path.sep, 'some', 'madeup', 'path')
+        parser = TestParser(options, os.path.join(test_path, 'somefile.html'))
</ins><span class="cx">         test_info = parser.analyze_test(test_contents=test_html)
</span><span class="cx"> 
</span><span class="cx">         self.assertNotEqual(test_info, None, 'did not find a test')
</span><span class="lines">@@ -63,8 +64,8 @@
</span><span class="cx">         oc = OutputCapture()
</span><span class="cx">         oc.capture_output()
</span><span class="cx">         try:
</span><del>-            test_path = '/some/madeup/path/'
-            parser = TestParser(options, test_path + 'somefile.html')
</del><ins>+            test_path = os.path.join(os.path.sep, 'some', 'madeup', 'path')
+            parser = TestParser(options, os.path.join(test_path, 'somefile.html'))
</ins><span class="cx">             test_info = parser.analyze_test(test_contents=test_html)
</span><span class="cx">         finally:
</span><span class="cx">             _, _, logs = oc.restore_output()
</span><span class="lines">@@ -89,8 +90,8 @@
</span><span class="cx">         oc.capture_output()
</span><span class="cx"> 
</span><span class="cx">         try:
</span><del>-            test_path = '/some/madeup/path/'
-            parser = TestParser(options, test_path + 'somefile.html')
</del><ins>+            test_path = os.path.join(os.path.sep, 'some', 'madeup', 'path')
+            parser = TestParser(options, os.path.join(test_path, 'somefile.html'))
</ins><span class="cx">             test_info = parser.analyze_test(test_contents=test_html)
</span><span class="cx">         finally:
</span><span class="cx">             _, _, logs = oc.restore_output()
</span><span class="lines">@@ -123,8 +124,8 @@
</span><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span><span class="cx"> &quot;&quot;&quot;
</span><del>-        test_path = '/some/madeup/path/'
-        parser = TestParser(options, test_path + 'somefile.html')
</del><ins>+        test_path = os.path.join(os.path.sep, 'some', 'madeup', 'path')
+        parser = TestParser(options, os.path.join(test_path, 'somefile.html'))
</ins><span class="cx">         test_info = parser.analyze_test(test_contents=test_html, ref_contents=ref_html)
</span><span class="cx"> 
</span><span class="cx">         self.assertNotEqual(test_info, None, 'did not find a test')
</span><span class="lines">@@ -143,8 +144,8 @@
</span><span class="cx"> &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &quot;&quot;&quot;
</span><del>-        test_path = '/some/madeup/path/'
-        parser = TestParser(options, test_path + 'somefile.html')
</del><ins>+        test_path = os.path.join(os.path.sep, 'some', 'madeup', 'path')
+        parser = TestParser(options, os.path.join(test_path, 'somefile.html'))
</ins><span class="cx">         test_info = parser.analyze_test(test_contents=test_html)
</span><span class="cx"> 
</span><span class="cx">         self.assertNotEqual(test_info, None, 'test_info is None')
</span><span class="lines">@@ -161,8 +162,8 @@
</span><span class="cx"> &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &quot;&quot;&quot;
</span><del>-        test_path = '/some/madeup/path/'
-        parser = TestParser(options, test_path + 'somefile-manual.html')
</del><ins>+        test_path = os.path.join(os.path.sep, 'some', 'madeup', 'path')
+        parser = TestParser(options, os.path.join(test_path, 'somefile-manual.html'))
</ins><span class="cx">         test_info = parser.analyze_test(test_contents=test_html)
</span><span class="cx"> 
</span><span class="cx">         self.assertEqual(test_info, None, 'test_info is None')
</span><span class="lines">@@ -186,8 +187,8 @@
</span><span class="cx">         # Set options to 'all' so this gets found
</span><span class="cx">         options['all'] = True
</span><span class="cx"> 
</span><del>-        test_path = '/some/madeup/path/'
-        parser = TestParser(options, test_path + 'somefile.html')
</del><ins>+        test_path = os.path.join(os.path.sep, 'some', 'madeup', 'path')
+        parser = TestParser(options, os.path.join(test_path, 'somefile.html'))
</ins><span class="cx">         test_info = parser.analyze_test(test_contents=test_html)
</span><span class="cx"> 
</span><span class="cx">         self.assertNotEqual(test_info, None, 'test_info is None')
</span><span class="lines">@@ -215,8 +216,8 @@
</span><span class="cx">         # Set all to false so this gets skipped
</span><span class="cx">         options['all'] = False
</span><span class="cx"> 
</span><del>-        test_path = '/some/madeup/path/'
-        parser = TestParser(options, test_path + 'somefile.html')
</del><ins>+        test_path = os.path.join(os.path.sep, 'some', 'madeup', 'path')
+        parser = TestParser(options, os.path.join(test_path, 'somefile.html'))
</ins><span class="cx">         test_info = parser.analyze_test(test_contents=test_html)
</span><span class="cx"> 
</span><span class="cx">         self.assertEqual(test_info, None, 'test should have been skipped')
</span></span></pre>
</div>
</div>

</body>
</html>