<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>182584</bug_id>
          
          <creation_ts>2018-02-07 15:01:26 -0800</creation_ts>
          <short_desc>webkit-patch suggest-reviewers dies with AttributeError: &apos;NoneType&apos; object has no attribute &apos;revision&apos;</short_desc>
          <delta_ts>2018-02-08 17:29:32 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Local Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jbedard</cc>
    
    <cc>lforschler</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1397317</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-02-07 15:01:26 -0800</bug_when>
    <thetext>When I ran webkit-patch suggest-reviewers today it died with the following stack trace:

Traceback (most recent call last):
  File &quot;Tools/Scripts/webkit-patch&quot;, line 84, in &lt;module&gt;
    main()
  File &quot;Tools/Scripts/webkit-patch&quot;, line 79, in main
    WebKitPatch(os.path.abspath(__file__)).main()
  File &quot;/Volumes/.../OpenSource/Tools/Scripts/webkitpy/tool/multicommandtool.py&quot;, line 305, in main
    result = command.check_arguments_and_execute(options, args, self)
  File &quot;/Volumes/.../OpenSource/Tools/Scripts/webkitpy/tool/multicommandtool.py&quot;, line 123, in check_arguments_and_execute
    return self.execute(options, args, tool) or 0
  File &quot;/Volumes/.../OpenSource/Tools/Scripts/webkitpy/tool/commands/abstractsequencedcommand.py&quot;, line 55, in execute
    self._sequence.run_and_handle_errors(tool, options, state)
  File &quot;/Volumes/.../OpenSource/Tools/Scripts/webkitpy/tool/commands/stepsequence.py&quot;, line 73, in run_and_handle_errors
    self._run(tool, options, state)
  File &quot;/Volumes/.../OpenSource/Tools/Scripts/webkitpy/tool/commands/stepsequence.py&quot;, line 67, in _run
    step(tool, options).run(state)
  File &quot;/Volumes/.../OpenSource/Tools/Scripts/webkitpy/tool/steps/suggestreviewers.py&quot;, line 45, in run
    reviewers = self._tool.checkout().suggested_reviewers(self._options.git_commit, self._changed_files(state))[:5]
  File &quot;/Volumes/.../OpenSource/Tools/Scripts/webkitpy/common/checkout/checkout.py&quot;, line 144, in suggested_reviewers
    commit_infos = sorted(self.recent_commit_infos_for_files(changed_files), key=lambda info: info.revision(), reverse=True)
  File &quot;/Volumes/.../OpenSource/Tools/Scripts/webkitpy/common/checkout/checkout.py&quot;, line 144, in &lt;lambda&gt;
    commit_infos = sorted(self.recent_commit_infos_for_files(changed_files), key=lambda info: info.revision(), reverse=True)
AttributeError: &apos;NoneType&apos; object has no attribute &apos;revision&apos;

I am using a Git checkout of WebKit at r228243 + attachment #333316

Steps to reproduce:

1. Apply attachment #333316 to your WebKit working copy and commit it (i.e. run &quot;git commit&quot;).
2. Run `Tools/Scripts/webkit-patch suggest-reviewers -g HEAD`

Then webkit-patch will die with the aforementioned stack trace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397388</commentid>
    <comment_count>1</comment_count>
      <attachid>333340</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2018-02-07 17:09:29 -0800</bug_when>
    <thetext>Created attachment 333340
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397390</commentid>
    <comment_count>2</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2018-02-07 17:11:21 -0800</bug_when>
    <thetext>One of the revisions does not have a ChangeLog associated with it. Seems like a pretty straight-forward fix, given that commit_info_for_revision can return &apos;None&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397444</commentid>
    <comment_count>3</comment_count>
      <attachid>333340</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-02-07 20:31:09 -0800</bug_when>
    <thetext>Comment on attachment 333340
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=333340&amp;action=review

&gt; Tools/Scripts/webkitpy/common/checkout/checkout.py:141
&gt; +        if None in result:

Yuck. Is there no better way?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397446</commentid>
    <comment_count>4</comment_count>
      <attachid>333340</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-02-07 20:34:13 -0800</bug_when>
    <thetext>Comment on attachment 333340
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=333340&amp;action=review

&gt; Tools/Scripts/webkitpy/common/checkout/checkout_unittest.py:431
&gt; +                return [-1]  # Should return None for revison information

Should? When does it not return None?

revision =&gt; revision

&gt; Tools/Scripts/webkitpy/common/checkout/checkout_unittest.py:436
&gt; +        checkout._scm.changed_files = lambda git_commit: [&quot;file1&quot;, &quot;file2&quot;, &quot;relative/path/ChangeLog&quot;, &apos;bad_file&apos;]

non-existent-file?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397447</commentid>
    <comment_count>5</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-02-07 20:35:38 -0800</bug_when>
    <thetext>(In reply to Daniel Bates from comment #4)
&gt; Comment on attachment 333340 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=333340&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/common/checkout/checkout_unittest.py:431
&gt; &gt; +                return [-1]  # Should return None for revison information
&gt; 
&gt; Should? When does it not return None?
&gt; 
&gt; revision =&gt; revision
&gt; 

revison =&gt; revision</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397448</commentid>
    <comment_count>6</comment_count>
      <attachid>333340</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-02-07 20:36:52 -0800</bug_when>
    <thetext>Comment on attachment 333340
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=333340&amp;action=review

&gt;&gt; Tools/Scripts/webkitpy/common/checkout/checkout.py:141
&gt;&gt; +        if None in result:
&gt; 
&gt; Yuck. Is there no better way?

Maybe we need a comment here as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397534</commentid>
    <comment_count>7</comment_count>
      <attachid>333340</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2018-02-08 08:32:28 -0800</bug_when>
    <thetext>Comment on attachment 333340
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=333340&amp;action=review

&gt;&gt;&gt; Tools/Scripts/webkitpy/common/checkout/checkout.py:141
&gt;&gt;&gt; +        if None in result:
&gt;&gt; 
&gt;&gt; Yuck. Is there no better way?
&gt; 
&gt; Maybe we need a comment here as well.

We could subtract set([None]), that looks a bit cleaner.

&gt;&gt; Tools/Scripts/webkitpy/common/checkout/checkout_unittest.py:436
&gt;&gt; +        checkout._scm.changed_files = lambda git_commit: [&quot;file1&quot;, &quot;file2&quot;, &quot;relative/path/ChangeLog&quot;, &apos;bad_file&apos;]
&gt; 
&gt; non-existent-file?

The file does exist, it&apos;s recent revision just does not have changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397537</commentid>
    <comment_count>8</comment_count>
      <attachid>333377</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2018-02-08 08:36:29 -0800</bug_when>
    <thetext>Created attachment 333377
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397578</commentid>
    <comment_count>9</comment_count>
      <attachid>333377</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-02-08 10:23:21 -0800</bug_when>
    <thetext>Comment on attachment 333377
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=333377&amp;action=review

&gt; Tools/Scripts/webkitpy/common/checkout/checkout.py:140
&gt; +        return set(map(self.commit_info_for_revision, revisions)) - set([None])

Please add a comment above this line that explains why a None can be in the set. Maybe something like:

# Remove a None entry from the set. This can happen if a revision does have an associated ChangeLog entry (e.g. r185745).

&gt; Tools/Scripts/webkitpy/common/checkout/checkout_unittest.py:431
&gt; +                return [-1]  # Will return None for revision information.

This code is disingenuous and the comment is not precise. {Git, SVN}.revisions_changing_file() always returns a list of valid revisions. For the purposes of testings the number that we pick for the revision serves as a unique identifier so that when mock_changelog_entries_for_revision() is called it knows what mock value to return. It is always best to make the unit test and mock code as representable as possible to the real environment to ensure that we are exercising real-world code paths and not inadvertently testing some quirky, unit-test-specific code path that may make the unit test pass, but is not representative of the real-world code path that we intended to test.

We should return a list with some unique revision number here, say 27, and then have mock_changelog_entries_for_revision() return the empty list for revision 27. I do not think a comment is necessary. If you are adamant about having a comment then the comment should reference &quot;mock_changelog_entries_for_revision()&quot;.

&gt; Tools/Scripts/webkitpy/common/checkout/checkout_unittest.py:436
&gt; +        checkout._scm.changed_files = lambda git_commit: [&quot;file1&quot;, &quot;file2&quot;, &quot;relative/path/ChangeLog&quot;, &apos;file_with_empty_changelog&apos;]

We should take the opportunity to fix up the style of this line since we are modifying it. Please change all double quotes to single quotes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397579</commentid>
    <comment_count>10</comment_count>
      <attachid>333377</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-02-08 10:25:41 -0800</bug_when>
    <thetext>Comment on attachment 333377
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=333377&amp;action=review

&gt; Tools/ChangeLog:7
&gt; +

Please add an explanation of the issue the fix here. Per-line function comments are insufficient. In general, you should always write a description in the ChangeLog entry. The only exception is when the bug title describes the fix (e.g. Rename A to B).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397580</commentid>
    <comment_count>11</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-02-08 10:26:26 -0800</bug_when>
    <thetext>(In reply to Daniel Bates from comment #10)
&gt; Comment on attachment 333377 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=333377&amp;action=review
&gt; 
&gt; &gt; Tools/ChangeLog:7
&gt; &gt; +
&gt; 
&gt; Please add an explanation of the issue the fix here. 

Please add an explanation of the issue and the fix here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397592</commentid>
    <comment_count>12</comment_count>
      <attachid>333391</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2018-02-08 11:01:00 -0800</bug_when>
    <thetext>Created attachment 333391
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397776</commentid>
    <comment_count>13</comment_count>
      <attachid>333391</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-08 17:24:40 -0800</bug_when>
    <thetext>Comment on attachment 333391
Patch for landing

Clearing flags on attachment: 333391

Committed r228303: &lt;https://trac.webkit.org/changeset/228303&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397777</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-08 17:24:42 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397780</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-02-08 17:29:32 -0800</bug_when>
    <thetext>&lt;rdar://problem/37373232&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333340</attachid>
            <date>2018-02-07 17:09:29 -0800</date>
            <delta_ts>2018-02-08 08:36:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182584-20180207170928.patch</filename>
            <type>text/plain</type>
            <size>3238</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIyODI1MSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE0IEBACisyMDE4LTAyLTA3ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICB3ZWJraXQtcGF0Y2ggc3VnZ2VzdC1yZXZpZXdlcnMgZGllcyB3aXRoIEF0
dHJpYnV0ZUVycm9yOiAnTm9uZVR5cGUnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdyZXZpc2lv
bicKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MjU4
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tvdXQucHk6CisgICAgICAgIChDaGVj
a291dC5yZWNlbnRfY29tbWl0X2luZm9zX2Zvcl9maWxlcyk6IFJlbW92ZSBhbnkgZW1wdHkgY29t
bWl0IGluZm9ybWF0aW9uIGZyb20gdGhlIHNldC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jaGVja291dC9jaGVja291dF91bml0dGVzdC5weTogQWRkIGEgZmlsZSB3aGljaCBy
ZWZlcmVuY2VzIGFuIGVtcHR5IGNvbW1pdC4KKwogMjAxOC0wMi0wNyAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyMjYzOTYpOiBG
aWxlIHBhdGhzIGFyZSBpbnNlcnRlZCB3aGVuIGRyb3BwaW5nIGltYWdlIGZpbGVzCkluZGV4OiBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGVja291dC5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGVja291dC5w
eQkocmV2aXNpb24gMjI4MjQ4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hl
Y2tvdXQvY2hlY2tvdXQucHkJKHdvcmtpbmcgY29weSkKQEAgLTEzNyw3ICsxMzcsMTAgQEAgY2xh
c3MgQ2hlY2tvdXQob2JqZWN0KToKIAogICAgIGRlZiByZWNlbnRfY29tbWl0X2luZm9zX2Zvcl9m
aWxlcyhzZWxmLCBwYXRocyk6CiAgICAgICAgIHJldmlzaW9ucyA9IHNldChzdW0obWFwKHNlbGYu
X3NjbS5yZXZpc2lvbnNfY2hhbmdpbmdfZmlsZSwgcGF0aHMpLCBbXSkpCi0gICAgICAgIHJldHVy
biBzZXQobWFwKHNlbGYuY29tbWl0X2luZm9fZm9yX3JldmlzaW9uLCByZXZpc2lvbnMpKQorICAg
ICAgICByZXN1bHQgPSBzZXQobWFwKHNlbGYuY29tbWl0X2luZm9fZm9yX3JldmlzaW9uLCByZXZp
c2lvbnMpKQorICAgICAgICBpZiBOb25lIGluIHJlc3VsdDoKKyAgICAgICAgICAgIHJlc3VsdC5y
ZW1vdmUoTm9uZSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAgICAgZGVmIHN1Z2dlc3RlZF9y
ZXZpZXdlcnMoc2VsZiwgZ2l0X2NvbW1pdCwgY2hhbmdlZF9maWxlcz1Ob25lKToKICAgICAgICAg
Y2hhbmdlZF9maWxlcyA9IHNlbGYubW9kaWZpZWRfbm9uX2NoYW5nZWxvZ3MoZ2l0X2NvbW1pdCwg
Y2hhbmdlZF9maWxlcykKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNr
b3V0L2NoZWNrb3V0X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoZWNrb3V0X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyMjgy
NDgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGVja291dF91
bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtNDE4LDYgKzQxOCw4IEBAIGNsYXNzIENoZWNr
b3V0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9zdWdnZXN0ZWRfcmV2
aWV3ZXJzKHNlbGYpOgogICAgICAgICBkZWYgbW9ja19jaGFuZ2Vsb2dfZW50cmllc19mb3JfcmV2
aXNpb24ocmV2aXNpb24sIGNoYW5nZWRfZmlsZXM9Tm9uZSk6CisgICAgICAgICAgICBpZiByZXZp
c2lvbiA9PSAtMToKKyAgICAgICAgICAgICAgICByZXR1cm4gW10KICAgICAgICAgICAgIGlmIHJl
dmlzaW9uICUgMiA9PSAwOgogICAgICAgICAgICAgICAgIHJldHVybiBbQ2hhbmdlTG9nRW50cnko
X2NoYW5nZWxvZzFlbnRyeTEpXQogICAgICAgICAgICAgcmV0dXJuIFtDaGFuZ2VMb2dFbnRyeShf
Y2hhbmdlbG9nMWVudHJ5MildCkBAIC00MjUsMTEgKzQyNywxMyBAQCBjbGFzcyBDaGVja291dFRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBkZWYgbW9ja19yZXZpc2lvbnNfY2hhbmdp
bmdfZmlsZShwYXRoLCBsaW1pdD01KToKICAgICAgICAgICAgIGlmIHBhdGguZW5kc3dpdGgoIkNo
YW5nZUxvZyIpOgogICAgICAgICAgICAgICAgIHJldHVybiBbM10KKyAgICAgICAgICAgIGlmIHBh
dGguZW5kc3dpdGgoJ2JhZF9maWxlJyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIFstMV0gICMg
U2hvdWxkIHJldHVybiBOb25lIGZvciByZXZpc29uIGluZm9ybWF0aW9uCiAgICAgICAgICAgICBy
ZXR1cm4gWzQsIDhdCiAKICAgICAgICAgY2hlY2tvdXQgPSBzZWxmLl9tYWtlX2NoZWNrb3V0KCkK
ICAgICAgICAgY2hlY2tvdXQuX3NjbS5jaGVja291dF9yb290ID0gIi9mb28vYmFyIgotICAgICAg
ICBjaGVja291dC5fc2NtLmNoYW5nZWRfZmlsZXMgPSBsYW1iZGEgZ2l0X2NvbW1pdDogWyJmaWxl
MSIsICJmaWxlMiIsICJyZWxhdGl2ZS9wYXRoL0NoYW5nZUxvZyJdCisgICAgICAgIGNoZWNrb3V0
Ll9zY20uY2hhbmdlZF9maWxlcyA9IGxhbWJkYSBnaXRfY29tbWl0OiBbImZpbGUxIiwgImZpbGUy
IiwgInJlbGF0aXZlL3BhdGgvQ2hhbmdlTG9nIiwgJ2JhZF9maWxlJ10KICAgICAgICAgY2hlY2tv
dXQuX3NjbS5yZXZpc2lvbnNfY2hhbmdpbmdfZmlsZSA9IG1vY2tfcmV2aXNpb25zX2NoYW5naW5n
X2ZpbGUKICAgICAgICAgY2hlY2tvdXQuY2hhbmdlbG9nX2VudHJpZXNfZm9yX3JldmlzaW9uID0g
bW9ja19jaGFuZ2Vsb2dfZW50cmllc19mb3JfcmV2aXNpb24KICAgICAgICAgcmV2aWV3ZXJzID0g
Y2hlY2tvdXQuc3VnZ2VzdGVkX3Jldmlld2VycyhnaXRfY29tbWl0PU5vbmUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333377</attachid>
            <date>2018-02-08 08:36:29 -0800</date>
            <delta_ts>2018-02-08 11:00:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182584-20180208083628.patch</filename>
            <type>text/plain</type>
            <size>3187</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIyODI3NCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE0IEBACisyMDE4LTAyLTA4ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICB3ZWJraXQtcGF0Y2ggc3VnZ2VzdC1yZXZpZXdlcnMgZGllcyB3aXRoIEF0
dHJpYnV0ZUVycm9yOiAnTm9uZVR5cGUnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdyZXZpc2lv
bicKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MjU4
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tvdXQucHk6CisgICAgICAgIChDaGVj
a291dC5yZWNlbnRfY29tbWl0X2luZm9zX2Zvcl9maWxlcyk6IFJlbW92ZSBhbnkgZW1wdHkgY29t
bWl0IGluZm9ybWF0aW9uIGZyb20gdGhlIHNldC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jaGVja291dC9jaGVja291dF91bml0dGVzdC5weTogQWRkIGEgZmlsZSB3aGljaCBy
ZWZlcmVuY2VzIGFuIGVtcHR5IENoYW5nZUxvZy4KKwogMjAxOC0wMi0wOCAgQ29tbWl0IFF1ZXVl
ICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjIyODI2NywgcjIyODI2OCwgYW5kIHIyMjgyNjkuCkluZGV4OiBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGVja291dC5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGVja291dC5weQkocmV2aXNpb24g
MjI4Mjc0KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tv
dXQucHkJKHdvcmtpbmcgY29weSkKQEAgLTEzNyw3ICsxMzcsNyBAQCBjbGFzcyBDaGVja291dChv
YmplY3QpOgogCiAgICAgZGVmIHJlY2VudF9jb21taXRfaW5mb3NfZm9yX2ZpbGVzKHNlbGYsIHBh
dGhzKToKICAgICAgICAgcmV2aXNpb25zID0gc2V0KHN1bShtYXAoc2VsZi5fc2NtLnJldmlzaW9u
c19jaGFuZ2luZ19maWxlLCBwYXRocyksIFtdKSkKLSAgICAgICAgcmV0dXJuIHNldChtYXAoc2Vs
Zi5jb21taXRfaW5mb19mb3JfcmV2aXNpb24sIHJldmlzaW9ucykpCisgICAgICAgIHJldHVybiBz
ZXQobWFwKHNlbGYuY29tbWl0X2luZm9fZm9yX3JldmlzaW9uLCByZXZpc2lvbnMpKSAtIHNldChb
Tm9uZV0pCiAKICAgICBkZWYgc3VnZ2VzdGVkX3Jldmlld2VycyhzZWxmLCBnaXRfY29tbWl0LCBj
aGFuZ2VkX2ZpbGVzPU5vbmUpOgogICAgICAgICBjaGFuZ2VkX2ZpbGVzID0gc2VsZi5tb2RpZmll
ZF9ub25fY2hhbmdlbG9ncyhnaXRfY29tbWl0LCBjaGFuZ2VkX2ZpbGVzKQpJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tvdXRfdW5pdHRlc3QucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tv
dXRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDIyODI3NCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL2NoZWNrb3V0L2NoZWNrb3V0X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBA
IC00MTgsNiArNDE4LDggQEAgY2xhc3MgQ2hlY2tvdXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
IAogICAgIGRlZiB0ZXN0X3N1Z2dlc3RlZF9yZXZpZXdlcnMoc2VsZik6CiAgICAgICAgIGRlZiBt
b2NrX2NoYW5nZWxvZ19lbnRyaWVzX2Zvcl9yZXZpc2lvbihyZXZpc2lvbiwgY2hhbmdlZF9maWxl
cz1Ob25lKToKKyAgICAgICAgICAgIGlmIHJldmlzaW9uID09IC0xOgorICAgICAgICAgICAgICAg
IHJldHVybiBbXQogICAgICAgICAgICAgaWYgcmV2aXNpb24gJSAyID09IDA6CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIFtDaGFuZ2VMb2dFbnRyeShfY2hhbmdlbG9nMWVudHJ5MSldCiAgICAgICAg
ICAgICByZXR1cm4gW0NoYW5nZUxvZ0VudHJ5KF9jaGFuZ2Vsb2cxZW50cnkyKV0KQEAgLTQyNSwx
MSArNDI3LDEzIEBAIGNsYXNzIENoZWNrb3V0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAg
ICAgIGRlZiBtb2NrX3JldmlzaW9uc19jaGFuZ2luZ19maWxlKHBhdGgsIGxpbWl0PTUpOgogICAg
ICAgICAgICAgaWYgcGF0aC5lbmRzd2l0aCgiQ2hhbmdlTG9nIik6CiAgICAgICAgICAgICAgICAg
cmV0dXJuIFszXQorICAgICAgICAgICAgaWYgcGF0aC5lbmRzd2l0aCgnZmlsZV93aXRoX2VtcHR5
X2NoYW5nZWxvZycpOgorICAgICAgICAgICAgICAgIHJldHVybiBbLTFdICAjIFdpbGwgcmV0dXJu
IE5vbmUgZm9yIHJldmlzaW9uIGluZm9ybWF0aW9uLgogICAgICAgICAgICAgcmV0dXJuIFs0LCA4
XQogCiAgICAgICAgIGNoZWNrb3V0ID0gc2VsZi5fbWFrZV9jaGVja291dCgpCiAgICAgICAgIGNo
ZWNrb3V0Ll9zY20uY2hlY2tvdXRfcm9vdCA9ICIvZm9vL2JhciIKLSAgICAgICAgY2hlY2tvdXQu
X3NjbS5jaGFuZ2VkX2ZpbGVzID0gbGFtYmRhIGdpdF9jb21taXQ6IFsiZmlsZTEiLCAiZmlsZTIi
LCAicmVsYXRpdmUvcGF0aC9DaGFuZ2VMb2ciXQorICAgICAgICBjaGVja291dC5fc2NtLmNoYW5n
ZWRfZmlsZXMgPSBsYW1iZGEgZ2l0X2NvbW1pdDogWyJmaWxlMSIsICJmaWxlMiIsICJyZWxhdGl2
ZS9wYXRoL0NoYW5nZUxvZyIsICdmaWxlX3dpdGhfZW1wdHlfY2hhbmdlbG9nJ10KICAgICAgICAg
Y2hlY2tvdXQuX3NjbS5yZXZpc2lvbnNfY2hhbmdpbmdfZmlsZSA9IG1vY2tfcmV2aXNpb25zX2No
YW5naW5nX2ZpbGUKICAgICAgICAgY2hlY2tvdXQuY2hhbmdlbG9nX2VudHJpZXNfZm9yX3Jldmlz
aW9uID0gbW9ja19jaGFuZ2Vsb2dfZW50cmllc19mb3JfcmV2aXNpb24KICAgICAgICAgcmV2aWV3
ZXJzID0gY2hlY2tvdXQuc3VnZ2VzdGVkX3Jldmlld2VycyhnaXRfY29tbWl0PU5vbmUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333391</attachid>
            <date>2018-02-08 11:01:00 -0800</date>
            <delta_ts>2018-02-08 17:24:40 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-182584-20180208110059.patch</filename>
            <type>text/plain</type>
            <size>3543</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIyODI3NCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE3IEBACisyMDE4LTAyLTA4ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICB3ZWJraXQtcGF0Y2ggc3VnZ2VzdC1yZXZpZXdlcnMgZGllcyB3aXRoIEF0
dHJpYnV0ZUVycm9yOiAnTm9uZVR5cGUnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdyZXZpc2lv
bicKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MjU4
NAorCisgICAgICAgIFJldmlld2VkIGJ5IERhbmllbCBCYXRlcy4KKworICAgICAgICBJdCBpcyBw
b3NzaWJsZSB0aGF0IGEgc3BlY2lmaWMgcmV2aXNpb24gaGFzIGFuIGVtcHR5IENoYW5nZUxvZy4g
SW4gdGhpcyBjYXNlLCBDaGVja291dC5jb21taXRfaW5mb19mb3JfcmV2aXNpb24KKyAgICAgICAg
d2lsbCByZXR1cm4gJ05vbmUnLiBDaGVja291dC5yZWNlbnRfY29tbWl0X2luZm9zX2Zvcl9maWxl
cyBzaG91bGQgbmV2ZXIgcmV0dXJuIGEgc2V0IHdpdGggJ05vbmUnIGluIGl0LgorCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tvdXQucHk6CisgICAgICAg
IChDaGVja291dC5yZWNlbnRfY29tbWl0X2luZm9zX2Zvcl9maWxlcyk6IFJlbW92ZSBhbnkgZW1w
dHkgY29tbWl0IGluZm9ybWF0aW9uIGZyb20gdGhlIHNldC4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGVja291dF91bml0dGVzdC5weTogQWRkIGEgZmlsZSB3
aGljaCByZWZlcmVuY2VzIGFuIGVtcHR5IENoYW5nZUxvZy4KKwogMjAxOC0wMi0wOCAgQ29tbWl0
IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbGluZyBvdXQgcjIyODI2NywgcjIyODI2OCwgYW5kIHIyMjgyNjkuCkluZGV4OiBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGVja291dC5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGVja291dC5weQkocmV2
aXNpb24gMjI4Mjc0KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQv
Y2hlY2tvdXQucHkJKHdvcmtpbmcgY29weSkKQEAgLTEzNyw3ICsxMzcsOCBAQCBjbGFzcyBDaGVj
a291dChvYmplY3QpOgogCiAgICAgZGVmIHJlY2VudF9jb21taXRfaW5mb3NfZm9yX2ZpbGVzKHNl
bGYsIHBhdGhzKToKICAgICAgICAgcmV2aXNpb25zID0gc2V0KHN1bShtYXAoc2VsZi5fc2NtLnJl
dmlzaW9uc19jaGFuZ2luZ19maWxlLCBwYXRocyksIFtdKSkKLSAgICAgICAgcmV0dXJuIHNldCht
YXAoc2VsZi5jb21taXRfaW5mb19mb3JfcmV2aXNpb24sIHJldmlzaW9ucykpCisgICAgICAgICMg
UmVtb3ZlIGEgTm9uZSBlbnRyeSBmcm9tIHRoZSBzZXQuIFRoaXMgY2FuIGhhcHBlbiBpZiBhIHJl
dmlzaW9uIGRvZXMgaGF2ZSBhbiBhc3NvY2lhdGVkIENoYW5nZUxvZyBlbnRyeSAoZS5nLiByMTg1
NzQ1KS4KKyAgICAgICAgcmV0dXJuIHNldChtYXAoc2VsZi5jb21taXRfaW5mb19mb3JfcmV2aXNp
b24sIHJldmlzaW9ucykpIC0gc2V0KFtOb25lXSkKIAogICAgIGRlZiBzdWdnZXN0ZWRfcmV2aWV3
ZXJzKHNlbGYsIGdpdF9jb21taXQsIGNoYW5nZWRfZmlsZXM9Tm9uZSk6CiAgICAgICAgIGNoYW5n
ZWRfZmlsZXMgPSBzZWxmLm1vZGlmaWVkX25vbl9jaGFuZ2Vsb2dzKGdpdF9jb21taXQsIGNoYW5n
ZWRfZmlsZXMpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9j
aGVja291dF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jaGVja291dC9jaGVja291dF91bml0dGVzdC5weQkocmV2aXNpb24gMjI4Mjc0KQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tvdXRfdW5pdHRl
c3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTQxOCwxOCArNDE4LDIyIEBAIGNsYXNzIENoZWNrb3V0
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9zdWdnZXN0ZWRfcmV2aWV3
ZXJzKHNlbGYpOgogICAgICAgICBkZWYgbW9ja19jaGFuZ2Vsb2dfZW50cmllc19mb3JfcmV2aXNp
b24ocmV2aXNpb24sIGNoYW5nZWRfZmlsZXM9Tm9uZSk6CisgICAgICAgICAgICBpZiByZXZpc2lv
biA9PSAyNzoKKyAgICAgICAgICAgICAgICByZXR1cm4gW10KICAgICAgICAgICAgIGlmIHJldmlz
aW9uICUgMiA9PSAwOgogICAgICAgICAgICAgICAgIHJldHVybiBbQ2hhbmdlTG9nRW50cnkoX2No
YW5nZWxvZzFlbnRyeTEpXQogICAgICAgICAgICAgcmV0dXJuIFtDaGFuZ2VMb2dFbnRyeShfY2hh
bmdlbG9nMWVudHJ5MildCiAKICAgICAgICAgZGVmIG1vY2tfcmV2aXNpb25zX2NoYW5naW5nX2Zp
bGUocGF0aCwgbGltaXQ9NSk6Ci0gICAgICAgICAgICBpZiBwYXRoLmVuZHN3aXRoKCJDaGFuZ2VM
b2ciKToKKyAgICAgICAgICAgIGlmIHBhdGguZW5kc3dpdGgoJ0NoYW5nZUxvZycpOgogICAgICAg
ICAgICAgICAgIHJldHVybiBbM10KKyAgICAgICAgICAgIGlmIHBhdGguZW5kc3dpdGgoJ2ZpbGVf
d2l0aF9lbXB0eV9jaGFuZ2Vsb2cnKToKKyAgICAgICAgICAgICAgICByZXR1cm4gWzI3XQogICAg
ICAgICAgICAgcmV0dXJuIFs0LCA4XQogCiAgICAgICAgIGNoZWNrb3V0ID0gc2VsZi5fbWFrZV9j
aGVja291dCgpCi0gICAgICAgIGNoZWNrb3V0Ll9zY20uY2hlY2tvdXRfcm9vdCA9ICIvZm9vL2Jh
ciIKLSAgICAgICAgY2hlY2tvdXQuX3NjbS5jaGFuZ2VkX2ZpbGVzID0gbGFtYmRhIGdpdF9jb21t
aXQ6IFsiZmlsZTEiLCAiZmlsZTIiLCAicmVsYXRpdmUvcGF0aC9DaGFuZ2VMb2ciXQorICAgICAg
ICBjaGVja291dC5fc2NtLmNoZWNrb3V0X3Jvb3QgPSAnL2Zvby9iYXInCisgICAgICAgIGNoZWNr
b3V0Ll9zY20uY2hhbmdlZF9maWxlcyA9IGxhbWJkYSBnaXRfY29tbWl0OiBbJ2ZpbGUxJywgJ2Zp
bGUyJywgJ3JlbGF0aXZlL3BhdGgvQ2hhbmdlTG9nJywgJ2ZpbGVfd2l0aF9lbXB0eV9jaGFuZ2Vs
b2cnXQogICAgICAgICBjaGVja291dC5fc2NtLnJldmlzaW9uc19jaGFuZ2luZ19maWxlID0gbW9j
a19yZXZpc2lvbnNfY2hhbmdpbmdfZmlsZQogICAgICAgICBjaGVja291dC5jaGFuZ2Vsb2dfZW50
cmllc19mb3JfcmV2aXNpb24gPSBtb2NrX2NoYW5nZWxvZ19lbnRyaWVzX2Zvcl9yZXZpc2lvbgog
ICAgICAgICByZXZpZXdlcnMgPSBjaGVja291dC5zdWdnZXN0ZWRfcmV2aWV3ZXJzKGdpdF9jb21t
aXQ9Tm9uZSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>