<!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>[206918] 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/206918">206918</a></dd>
<dt>Author</dt> <dd>commit-queue@webkit.org</dd>
<dt>Date</dt> <dd>2016-10-07 10:04:27 -0700 (Fri, 07 Oct 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Replace bug URL placeholders independently of the short desc one
https://bugs.webkit.org/show_bug.cgi?id=161684

Patch by Emanuele Aina &lt;emanuele.aina@collabora.com&gt; on 2016-10-07
Reviewed by Darin Adler.

Instead of adding the bug URL when replacing the short description
placeholder and then ignoring the bug URL placeholder, use the former
to set the short description and the latter for the bug URL.
This means that developers can fully prepare the changelog with short
and long description before submission leaving the bug placeholder in
place, and the changelog machinery will make sure to replace the
latter with the URL of the newly created bug while submitting.

Note that this also means that the short description placeholder alone
no longer causes the bug URL to be added.

* Scripts/webkitpy/common/checkout/changelog.py:
(ChangeLog.set_short_description_and_bug_url):
* Scripts/webkitpy/common/checkout/changelog_unittest.py:
(test_set_short_description_and_bug_url):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsScriptswebkitpycommoncheckoutchangelogpy">trunk/Tools/Scripts/webkitpy/common/checkout/changelog.py</a></li>
<li><a href="#trunkToolsScriptswebkitpycommoncheckoutchangelog_unittestpy">trunk/Tools/Scripts/webkitpy/common/checkout/changelog_unittest.py</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (206917 => 206918)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog        2016-10-07 16:55:11 UTC (rev 206917)
+++ trunk/Tools/ChangeLog        2016-10-07 17:04:27 UTC (rev 206918)
</span><span class="lines">@@ -1,3 +1,26 @@
</span><ins>+2016-10-07  Emanuele Aina  &lt;emanuele.aina@collabora.com&gt;
+
+        Replace bug URL placeholders independently of the short desc one
+        https://bugs.webkit.org/show_bug.cgi?id=161684
+
+        Reviewed by Darin Adler.
+
+        Instead of adding the bug URL when replacing the short description
+        placeholder and then ignoring the bug URL placeholder, use the former
+        to set the short description and the latter for the bug URL.
+        This means that developers can fully prepare the changelog with short
+        and long description before submission leaving the bug placeholder in
+        place, and the changelog machinery will make sure to replace the
+        latter with the URL of the newly created bug while submitting.
+
+        Note that this also means that the short description placeholder alone
+        no longer causes the bug URL to be added.
+
+        * Scripts/webkitpy/common/checkout/changelog.py:
+        (ChangeLog.set_short_description_and_bug_url):
+        * Scripts/webkitpy/common/checkout/changelog_unittest.py:
+        (test_set_short_description_and_bug_url):
+
</ins><span class="cx"> 2016-10-07  Jonathan Bedard  &lt;jbedard@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Style Checking Error when Objective C Blocks passed as Argument
</span></span></pre></div>
<a id="trunkToolsScriptswebkitpycommoncheckoutchangelogpy"></a>
<div class="modfile"><h4>Modified: trunk/Tools/Scripts/webkitpy/common/checkout/changelog.py (206917 => 206918)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/Scripts/webkitpy/common/checkout/changelog.py        2016-10-07 16:55:11 UTC (rev 206917)
+++ trunk/Tools/Scripts/webkitpy/common/checkout/changelog.py        2016-10-07 17:04:27 UTC (rev 206918)
</span><span class="lines">@@ -430,14 +430,17 @@
</span><span class="cx">             self._filesystem.write_text_file(self.path, newdata)
</span><span class="cx"> 
</span><span class="cx">     def set_short_description_and_bug_url(self, short_description, bug_url):
</span><del>-        message = &quot;%s\n%s%s&quot; % (short_description, self._changelog_indent, bug_url)
-        bug_boilerplate = &quot;%sNeed the bug URL (OOPS!).\n&quot; % self._changelog_indent
</del><span class="cx">         result = StringIO()
</span><span class="cx">         with self._filesystem.open_text_file_for_reading(self.path) as file:
</span><ins>+            short_description_placeholder = &quot;Need a short description (OOPS!).&quot;
+            bug_url_placeholder = &quot;Need the bug URL (OOPS!).&quot;
</ins><span class="cx">             for line in file:
</span><del>-                line = line.replace(&quot;Need a short description (OOPS!).&quot;, message)
-                if line != bug_boilerplate:
-                    result.write(line)
</del><ins>+                stripped = line.strip()
+                if stripped == short_description_placeholder:
+                    line = self._changelog_indent + short_description + &quot;\n&quot;
+                if stripped == bug_url_placeholder:
+                    line = self._changelog_indent + bug_url + &quot;\n&quot;
+                result.write(line)
</ins><span class="cx">         self._filesystem.write_text_file(self.path, result.getvalue())
</span><span class="cx"> 
</span><span class="cx">     def delete_entries(self, num_entries):
</span></span></pre></div>
<a id="trunkToolsScriptswebkitpycommoncheckoutchangelog_unittestpy"></a>
<div class="modfile"><h4>Modified: trunk/Tools/Scripts/webkitpy/common/checkout/changelog_unittest.py (206917 => 206918)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/Scripts/webkitpy/common/checkout/changelog_unittest.py        2016-10-07 16:55:11 UTC (rev 206917)
+++ trunk/Tools/Scripts/webkitpy/common/checkout/changelog_unittest.py        2016-10-07 17:04:27 UTC (rev 206918)
</span><span class="lines">@@ -642,8 +642,7 @@
</span><span class="cx">         bug_url = &quot;http://example.com/b/2344&quot;
</span><span class="cx">         ChangeLog(self._changelog_path, fs).set_short_description_and_bug_url(short_description, bug_url)
</span><span class="cx">         actual_contents = fs.read_text_file(self._changelog_path)
</span><del>-        expected_message = &quot;%s\n        %s&quot; % (short_description, bug_url)
-        expected_contents = changelog_contents.replace(&quot;Need a short description (OOPS!).&quot;, expected_message)
</del><ins>+        expected_contents = changelog_contents.replace(&quot;Need a short description (OOPS!).&quot;, short_description)
</ins><span class="cx">         self.assertEqual(actual_contents.splitlines(), expected_contents.splitlines())
</span><span class="cx"> 
</span><span class="cx">         changelog_contents = u&quot;%s\n%s&quot; % (self._new_entry_boilerplate, self._example_changelog)
</span></span></pre>
</div>
</div>

</body>
</html>