<!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>[214832] 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/214832">214832</a></dd>
<dt>Author</dt> <dd>jbedard@apple.com</dd>
<dt>Date</dt> <dd>2017-04-03 12:39:29 -0700 (Mon, 03 Apr 2017)</dd>
</dl>

<h3>Log Message</h3>
<pre>webkitpy: Provide option to skip install
https://bugs.webkit.org/show_bug.cgi?id=170344

Reviewed by Alexey Proskuryakov.

Installing can take time for on device testing.  Provide an option to skip install
and use whatever driver is currently installed on the device or simulator.

* Scripts/webkitpy/port/base.py:
(Port.check_build): Do not check driver if skipping install.
* Scripts/webkitpy/port/factory.py:
(platform_options): Add '--no-install' option.
* Scripts/webkitpy/port/ios.py:
(IOSPort.setup_test_run): Check install option before installing.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsScriptswebkitpyportbasepy">trunk/Tools/Scripts/webkitpy/port/base.py</a></li>
<li><a href="#trunkToolsScriptswebkitpyportfactorypy">trunk/Tools/Scripts/webkitpy/port/factory.py</a></li>
<li><a href="#trunkToolsScriptswebkitpyportiospy">trunk/Tools/Scripts/webkitpy/port/ios.py</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (214831 => 214832)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog        2017-04-03 19:35:26 UTC (rev 214831)
+++ trunk/Tools/ChangeLog        2017-04-03 19:39:29 UTC (rev 214832)
</span><span class="lines">@@ -1,3 +1,20 @@
</span><ins>+2017-04-03  Jonathan Bedard  &lt;jbedard@apple.com&gt;
+
+        webkitpy: Provide option to skip install
+        https://bugs.webkit.org/show_bug.cgi?id=170344
+
+        Reviewed by Alexey Proskuryakov.
+
+        Installing can take time for on device testing.  Provide an option to skip install
+        and use whatever driver is currently installed on the device or simulator.
+
+        * Scripts/webkitpy/port/base.py:
+        (Port.check_build): Do not check driver if skipping install.
+        * Scripts/webkitpy/port/factory.py:
+        (platform_options): Add '--no-install' option.
+        * Scripts/webkitpy/port/ios.py:
+        (IOSPort.setup_test_run): Check install option before installing.
+
</ins><span class="cx"> 2017-04-03  Keith Miller  &lt;keith_miller@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         WebAssembly: Update spec tests
</span></span></pre></div>
<a id="trunkToolsScriptswebkitpyportbasepy"></a>
<div class="modfile"><h4>Modified: trunk/Tools/Scripts/webkitpy/port/base.py (214831 => 214832)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/Scripts/webkitpy/port/base.py        2017-04-03 19:35:26 UTC (rev 214831)
+++ trunk/Tools/Scripts/webkitpy/port/base.py        2017-04-03 19:39:29 UTC (rev 214832)
</span><span class="lines">@@ -227,12 +227,12 @@
</span><span class="cx">         # If we're using a pre-built copy of WebKit (--root), we assume it also includes a build of DRT.
</span><span class="cx">         if not self._root_was_set and self.get_option('build') and not self._build_driver():
</span><span class="cx">             return False
</span><del>-        if not self._check_driver():
</del><ins>+        if self.get_option('install') and not self._check_driver():
</ins><span class="cx">             return False
</span><span class="cx">         if self.get_option('pixel_tests'):
</span><span class="cx">             if not self.check_image_diff():
</span><span class="cx">                 return False
</span><del>-        if not self._check_port_build():
</del><ins>+        if self.get_option('install') and not self._check_port_build():
</ins><span class="cx">             return False
</span><span class="cx">         return True
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkToolsScriptswebkitpyportfactorypy"></a>
<div class="modfile"><h4>Modified: trunk/Tools/Scripts/webkitpy/port/factory.py (214831 => 214832)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/Scripts/webkitpy/port/factory.py        2017-04-03 19:35:26 UTC (rev 214831)
+++ trunk/Tools/Scripts/webkitpy/port/factory.py        2017-04-03 19:39:29 UTC (rev 214832)
</span><span class="lines">@@ -56,6 +56,9 @@
</span><span class="cx">         optparse.make_option('--gtk', action='store_const', dest='platform',
</span><span class="cx">             const=('gtk*' if use_globs else 'gtk'),
</span><span class="cx">             help=('Alias for --platform=gtk*' if use_globs else 'Alias for --platform=gtk')),
</span><ins>+        optparse.make_option('--no-install', action='store_const',
+            const=False, default=True, dest='install',
+            help='Skip install step for device and simulator testing'),
</ins><span class="cx">         ]
</span><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkToolsScriptswebkitpyportiospy"></a>
<div class="modfile"><h4>Modified: trunk/Tools/Scripts/webkitpy/port/ios.py (214831 => 214832)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/Scripts/webkitpy/port/ios.py        2017-04-03 19:35:26 UTC (rev 214831)
+++ trunk/Tools/Scripts/webkitpy/port/ios.py        2017-04-03 19:39:29 UTC (rev 214832)
</span><span class="lines">@@ -110,14 +110,17 @@
</span><span class="cx">     def setup_test_run(self, device_class=None):
</span><span class="cx">         self._create_devices(device_class)
</span><span class="cx"> 
</span><del>-        for i in xrange(self.child_processes()):
-            device = self.target_host(i)
-            _log.debug('Installing to {}'.format(device))
-            # Without passing DYLD_LIBRARY_PATH, libWebCoreTestSupport cannot be loaded and DRT/WKTR will crash pre-launch,
-            # leaving a crash log which will be picked up in results.  No DYLD_FRAMEWORK_PATH will also cause the DRT/WKTR to
-            # crash, but this crash will occur post-launch, after install_app has already killed the process.
-            if not device.install_app(self._path_to_driver(), {'DYLD_LIBRARY_PATH': self._build_path()}):
-                raise RuntimeError('Failed to install app {} on device {}'.format(self._path_to_driver(), device.udid))
</del><ins>+        if self.get_option('install'):
+            for i in xrange(self.child_processes()):
+                device = self.target_host(i)
+                _log.debug('Installing to {}'.format(device))
+                # Without passing DYLD_LIBRARY_PATH, libWebCoreTestSupport cannot be loaded and DRT/WKTR will crash pre-launch,
+                # leaving a crash log which will be picked up in results.  No DYLD_FRAMEWORK_PATH will also cause the DRT/WKTR to
+                # crash, but this crash will occur post-launch, after install_app has already killed the process.
+                if not device.install_app(self._path_to_driver(), {'DYLD_LIBRARY_PATH': self._build_path()}):
+                    raise RuntimeError('Failed to install app {} on device {}'.format(self._path_to_driver(), device.udid))
+        else:
+            _log.debug('Skipping installation')
</ins><span class="cx"> 
</span><span class="cx">         for i in xrange(self.child_processes()):
</span><span class="cx">             self.target_host(i).prepare_for_testing()
</span></span></pre>
</div>
</div>

</body>
</html>