<?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>51303</bug_id>
          
          <creation_ts>2010-12-18 23:06:02 -0800</creation_ts>
          <short_desc>check-webkit-style should detect function declarations (and trivial functions).</short_desc>
          <delta_ts>2010-12-20 11:39:55 -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>528+ (Nightly 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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>49394</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="David Levin">levin</reporter>
          <assigned_to name="David Levin">levin</assigned_to>
          <cc>hamaji</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>324190</commentid>
    <comment_count>0</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-12-18 23:06:02 -0800</bug_when>
    <thetext>This is needed for bug 49394 (which examines declarations).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324194</commentid>
    <comment_count>1</comment_count>
      <attachid>76955</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-12-18 23:49:10 -0800</bug_when>
    <thetext>Created attachment 76955
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324212</commentid>
    <comment_count>2</comment_count>
      <attachid>76955</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-12-19 12:32:14 -0800</bug_when>
    <thetext>Comment on attachment 76955
Patch

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

Looks good, putting some nitpicks on test. Please feel free to ignore some of (or even all of) them if they don&apos;t make sense.

&gt; Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py:240
&gt; +        if not function_information:

I&apos;d add a trivial test case which passes this case. Not sure, but &quot;if (foobar) { something... }&quot; or &quot;for (foobar;...) { ... }&quot; would be good candidates?

&gt; Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py:2818
&gt; +        self.assert_pass_ptr_check(

s/pass_ptr/pass_ref_ptr/ ?

&gt; Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py:2823
&gt; +        self.assert_pass_ptr_check(

s/pass_ptr/pass_ref_ptr/ ?

&gt; Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py:2837
&gt; +            &apos;    PassRefPtr&lt;Type1&gt; m_other;\n&apos;

I guess RefPtr would be more realistic?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324481</commentid>
    <comment_count>3</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-12-20 11:39:01 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 76955 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=76955&amp;action=review
&gt; 
&gt; Looks good, putting some nitpicks on test. Please feel free to ignore some of (or even all of) them if they don&apos;t make sense.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py:240
&gt; &gt; +        if not function_information:
&gt; 
&gt; I&apos;d add a trivial test case which passes this case. Not sure, but &quot;if (foobar) { something... }&quot; or &quot;for (foobar;...) { ... }&quot; would be good candidates?

Done.

&gt; &gt; Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py:2818
&gt; &gt; +        self.assert_pass_ptr_check(
&gt; 
&gt; s/pass_ptr/pass_ref_ptr/ ?

I left this as is because the test is about Pass*Ptr. (It checks Pass.*Ptr so that it catches PassRefPtr and PassOwnPtr. Other things named the same way should follow the same rule.)


&gt; &gt; Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py:2837
&gt; &gt; +            &apos;    PassRefPtr&lt;Type1&gt; m_other;\n&apos;
&gt; 
&gt; I guess RefPtr would be more realistic?

Done. (Good point :).)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324482</commentid>
    <comment_count>4</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-12-20 11:39:38 -0800</bug_when>
    <thetext>Committed as http://trac.webkit.org/changeset/74356</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76955</attachid>
            <date>2010-12-18 23:49:10 -0800</date>
            <delta_ts>2010-12-20 11:39:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51303-20101218234909.patch</filename>
            <type>text/plain</type>
            <size>9050</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjYWJh
YmNlODZmNTJlOGY5NWFlOGExZDE3Y2ViZTg3OWQxMmVmMWJlLi5hMjg3ZjkwNGZjYzY3ZGEzNTJj
YTc2MzgzNTE2MmRmNmE5ZTA1NTMwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTAtMTItMTggIERhdmlkIExldmlu
ICA8bGV2aW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIGNoZWNrLXdlYmtpdC1zdHlsZSBzaG91bGQgZGV0ZWN0IGZ1bmN0aW9u
IGRlY2xhcmF0aW9ucyAoYW5kIHRyaXZpYWwgZnVuY3Rpb25zKS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxMzAzCisKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weToKKyAgICAgICAgKF9GdW5jdGlvblN0YXRl
LmJlZ2luKTogQWRkIGlzX2RlY2xhcmF0aW9uIGFuZCBjaGFuZ2VkIHRoZSBsaW5lIGNvdW50Cisg
ICAgICAgIHN0YXJ0IHRvIGJlZ2luIGF0IC0xICh3aGljaCB3aWxsIGtlZXAgdGhlIHJlc3VsdHMg
Y29uc2lzdGVudCwgc2luY2UKKyAgICAgICAgdGhlIHN0YXJ0aW5nIGxpbmUgbnVtYmVyIHBhc3Nl
ZCBpbiBpcyBvbmUgbGVzcyBpbiB0aGlzIGNoYW5nZSkuCisgICAgICAgIChkZXRlY3RfZnVuY3Rp
b25zKTogY2hhbmdlZCBmdW5jdGlvbiBkZXRlY3Rpb24gdG8gbm93IGNhdGNoIHRyaXZpYWwKKyAg
ICAgICAgZnVuY3Rpb25zIGFuZCBkZWNsYXJhdGlvbnMuCisgICAgICAgIChjaGVja19wYXNzX3B0
cl91c2FnZSk6IERvbid0IGNoZWNrIGZvciBQYXNzKlB0ciBvbiB0aGUgZmlyc3QgbGluZQorICAg
ICAgICBvZiB0aGUgZnVuY3Rpb24gYXMgdGhpcyBtYXkgbG9vayBhdCByZXR1cm4gdmFsdWVzICh3
aGVuIHByb2Nlc3NpbmcKKyAgICAgICAgYSBkZWNsYXJhdGlvbikuCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHk6CisgICAgICAgIChGdW5j
dGlvbkRldGVjdGlvblRlc3QucGVyZm9ybV9mdW5jdGlvbl9kZXRlY3Rpb24pOiBCYXNpYyBtZWNo
YW5pY3MKKyAgICAgICAgb2YgdGVzdGluZyB0aGUgZnVuY3Rpb24gZGV0ZWN0aW9uLgorICAgICAg
ICAoRnVuY3Rpb25EZXRlY3Rpb25UZXN0LnRlc3RfYmFzaWNfZnVuY3Rpb25fZGV0ZWN0aW9uKTog
VGVzdCBhIHNpbXBsZQorICAgICAgICBmdW5jdGlvbi4KKyAgICAgICAgKEZ1bmN0aW9uRGV0ZWN0
aW9uVGVzdC50ZXN0X2Z1bmN0aW9uX2RlY2xhcmF0aW9uX2RldGVjdGlvbik6IFRlc3QgYQorICAg
ICAgICBkZWNsYXJhdGlvbi4KKyAgICAgICAgKEZ1bmN0aW9uRGV0ZWN0aW9uVGVzdC50ZXN0X25v
bl9mdW5jdGlvbnMpOiBBIHRlc3QgY2FzZSBmb3IgYSBjYXNlCisgICAgICAgIHRoYXQgY2F1c2Vk
IHRoZSBjb2RlIHRvIGZhaWwgZHVlIHRvIHRoZSB7IGJlaW5nIGluIHF1b3Rlcy4KKyAgICAgICAg
KFBhc3NQdHJUZXN0LnRlc3RfcGFzc19yZWZfcHRyX3JldHVybl92YWx1ZSk6IEFkZGVkIHNvbWUg
bW9yZSB0ZXN0CisgICAgICAgIGNhc2VzIHRvIGhlbHAgY2F0Y2ggZmFsc2UgYWxhcm1zIGZvciBy
ZXR1cm4gdmFsdWVzLgorICAgICAgICAoUGFzc1B0clRlc3QudGVzdF9wYXNzX3JlZl9wdHJfbWVt
YmVyX3ZhcmlhYmxlKTogRW5zdXJlIHRoYXQKKyAgICAgICAgd2UgZG9uJ3QgZ2V0IGZhbHNlIGFs
YXJtcyBmb3IgbWVtYmVyIHZhcmlhYmxlcyBlaXRoZXIuCisKIDIwMTAtMTItMTcgIENzYWJhIE9z
enRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIFF0IGJ1
aWxkZml4IGFmdGVyIHI3NDMwMS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlcnMvY3BwLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVj
a2Vycy9jcHAucHkKaW5kZXggZTg0MTAyOTI1YWI3MzNjYWRlNDQ2OGRjZmU3ZDgwYzliYmFmYjc3
Yi4uM2ZmYWViOWRmNDdmZTRjNDg4NzJiYTEzNjM3YmRmNjU4ZDRmMDMwZCAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHkKQEAgLTMyOSwxOCArMzI5LDIx
IEBAIGNsYXNzIF9GdW5jdGlvblN0YXRlKG9iamVjdCk6CiAgICAgICAgIHNlbGYuYm9keV9zdGFy
dF9saW5lX251bWJlciA9IC0xMDAwCiAgICAgICAgIHNlbGYuZW5kaW5nX2xpbmVfbnVtYmVyID0g
LTEwMDAKIAotICAgIGRlZiBiZWdpbihzZWxmLCBmdW5jdGlvbl9uYW1lLCBib2R5X3N0YXJ0X2xp
bmVfbnVtYmVyLCBlbmRpbmdfbGluZV9udW1iZXIpOgorICAgIGRlZiBiZWdpbihzZWxmLCBmdW5j
dGlvbl9uYW1lLCBib2R5X3N0YXJ0X2xpbmVfbnVtYmVyLCBlbmRpbmdfbGluZV9udW1iZXIsIGlz
X2RlY2xhcmF0aW9uKToKICAgICAgICAgIiIiU3RhcnQgYW5hbHl6aW5nIGZ1bmN0aW9uIGJvZHku
CiAKICAgICAgICAgQXJnczoKICAgICAgICAgICAgIGZ1bmN0aW9uX25hbWU6IFRoZSBuYW1lIG9m
IHRoZSBmdW5jdGlvbiBiZWluZyB0cmFja2VkLgorICAgICAgICAgICAgYm9keV9zdGFydF9saW5l
X251bWJlcjogVGhlIGxpbmUgbnVtYmVyIG9mIHRoZSB7IG9yIHRoZSA7IGZvciBhIHByb3RveXBl
LgogICAgICAgICAgICAgZW5kaW5nX2xpbmVfbnVtYmVyOiBUaGUgbGluZSBudW1iZXIgd2hlcmUg
dGhlIGZ1bmN0aW9uIGVuZHMuCisgICAgICAgICAgICBpc19kZWNsYXJhdGlvbjogVHJ1ZSBpZiB0
aGlzIGlzIGEgcHJvdG90eXBlLgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5pbl9hX2Z1bmN0
aW9uID0gVHJ1ZQotICAgICAgICBzZWxmLmxpbmVzX2luX2Z1bmN0aW9uID0gMAorICAgICAgICBz
ZWxmLmxpbmVzX2luX2Z1bmN0aW9uID0gLTEgICMgRG9uJ3QgY291bnQgdGhlIG9wZW4gYnJhY2Ug
bGluZS4KICAgICAgICAgc2VsZi5jdXJyZW50X2Z1bmN0aW9uID0gZnVuY3Rpb25fbmFtZQogICAg
ICAgICBzZWxmLmJvZHlfc3RhcnRfbGluZV9udW1iZXIgPSBib2R5X3N0YXJ0X2xpbmVfbnVtYmVy
CiAgICAgICAgIHNlbGYuZW5kaW5nX2xpbmVfbnVtYmVyID0gZW5kaW5nX2xpbmVfbnVtYmVyCisg
ICAgICAgIHNlbGYuaXNfZGVjbGFyYXRpb24gPSBpc19kZWNsYXJhdGlvbgogCiAgICAgZGVmIGNv
dW50KHNlbGYsIGxpbmVfbnVtYmVyKToKICAgICAgICAgIiIiQ291bnQgbGluZSBpbiBjdXJyZW50
IGZ1bmN0aW9uIGJvZHkuIiIiCkBAIC0xMjA1LDEyICsxMjA4LDkgQEAgZGVmIGRldGVjdF9mdW5j
dGlvbnMoY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBmdW5jdGlvbl9zdGF0ZSwgZXJyb3IpOgog
CiAgICAgam9pbmVkX2xpbmUgPSAnJwogICAgIGZvciBzdGFydF9saW5lX251bWJlciBpbiB4cmFu
Z2UobGluZV9udW1iZXIsIGNsZWFuX2xpbmVzLm51bV9saW5lcygpKToKLSAgICAgICAgc3RhcnRf
bGluZSA9IGxpbmVzW3N0YXJ0X2xpbmVfbnVtYmVyXQorICAgICAgICBzdGFydF9saW5lID0gY2xl
YW5fbGluZXMuZWxpZGVkW3N0YXJ0X2xpbmVfbnVtYmVyXQogICAgICAgICBqb2luZWRfbGluZSAr
PSAnICcgKyBzdGFydF9saW5lLmxzdHJpcCgpCi0gICAgICAgIGlmIHNlYXJjaChyJyg7fH0pJywg
c3RhcnRfbGluZSk6ICAjIERlY2xhcmF0aW9ucyBhbmQgdHJpdmlhbCBmdW5jdGlvbnMKLSAgICAg
ICAgICAgIHJldHVybiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgLi4uIGlnbm9yZQot
Ci0gICAgICAgIGlmIHNlYXJjaChyJ3snLCBzdGFydF9saW5lKToKKyAgICAgICAgaWYgc2VhcmNo
KHIne3w7Jywgc3RhcnRfbGluZSk6CiAgICAgICAgICAgICAjIFJlcGxhY2UgdGVtcGxhdGUgY29u
c3RydWN0cyB3aXRoIF8gc28gdGhhdCBubyBzcGFjZXMgcmVtYWluIGluIHRoZSBmdW5jdGlvbiBu
YW1lLAogICAgICAgICAgICAgIyB3aGlsZSBrZWVwaW5nIHRoZSBjb2x1bW4gbnVtYmVycyBvZiBv
dGhlciBjaGFyYWN0ZXJzIHRoZSBzYW1lIGFzICJsaW5lIi4KICAgICAgICAgICAgIGxpbmVfd2l0
aF9ub190ZW1wbGF0ZXMgPSBpdGVyYXRpdmVseV9yZXBsYWNlX21hdGNoZXNfd2l0aF9jaGFyKHIn
PFtePD5dKj4nLCAnXycsIGxpbmUpCkBAIC0xMjI4LDkgKzEyMjgsMTMgQEAgZGVmIGRldGVjdF9m
dW5jdGlvbnMoY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBmdW5jdGlvbl9zdGF0ZSwgZXJyb3Ip
OgogICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiArPSBwYXJhbWV0ZXJfcmVnZXhwLmdyb3Vw
KDEpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGZ1bmN0aW9uICs9ICcoKScK
LSAgICAgICAgICAgIG9wZW5fYnJhY2VfaW5kZXggPSBzdGFydF9saW5lLmZpbmQoJ3snKQotICAg
ICAgICAgICAgZW5kaW5nX2xpbmVfbnVtYmVyID0gY2xvc2VfZXhwcmVzc2lvbihjbGVhbl9saW5l
cywgc3RhcnRfbGluZV9udW1iZXIsIG9wZW5fYnJhY2VfaW5kZXgpWzFdCi0gICAgICAgICAgICBm
dW5jdGlvbl9zdGF0ZS5iZWdpbihmdW5jdGlvbiwgc3RhcnRfbGluZV9udW1iZXIgKyAxLCBlbmRp
bmdfbGluZV9udW1iZXIpCisgICAgICAgICAgICBpc19kZWNsYXJhdGlvbiA9IGJvb2woc2VhcmNo
KHInXltee10qOycsIHN0YXJ0X2xpbmUpKQorICAgICAgICAgICAgaWYgaXNfZGVjbGFyYXRpb246
CisgICAgICAgICAgICAgICAgZW5kaW5nX2xpbmVfbnVtYmVyID0gc3RhcnRfbGluZV9udW1iZXIK
KyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgb3Blbl9icmFjZV9pbmRleCA9IHN0
YXJ0X2xpbmUuZmluZCgneycpCisgICAgICAgICAgICAgICAgZW5kaW5nX2xpbmVfbnVtYmVyID0g
Y2xvc2VfZXhwcmVzc2lvbihjbGVhbl9saW5lcywgc3RhcnRfbGluZV9udW1iZXIsIG9wZW5fYnJh
Y2VfaW5kZXgpWzFdCisgICAgICAgICAgICBmdW5jdGlvbl9zdGF0ZS5iZWdpbihmdW5jdGlvbiwg
c3RhcnRfbGluZV9udW1iZXIsIGVuZGluZ19saW5lX251bWJlciwgaXNfZGVjbGFyYXRpb24pCiAg
ICAgICAgICAgICByZXR1cm4KIAogICAgICMgTm8gYm9keSBmb3IgdGhlIGZ1bmN0aW9uIChvciBl
dmlkZW5jZSBvZiBhIG5vbi1mdW5jdGlvbikgd2FzIGZvdW5kLgpAQCAtMTI4Myw3ICsxMjg3LDcg
QEAgZGVmIGNoZWNrX3Bhc3NfcHRyX3VzYWdlKGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZnVu
Y3Rpb25fc3RhdGUsIGVycm9yKToKIAogICAgIGxpbmVzID0gY2xlYW5fbGluZXMubGluZXMKICAg
ICBsaW5lID0gbGluZXNbbGluZV9udW1iZXJdCi0gICAgaWYgbGluZV9udW1iZXIgPj0gZnVuY3Rp
b25fc3RhdGUuYm9keV9zdGFydF9saW5lX251bWJlcjoKKyAgICBpZiBsaW5lX251bWJlciA+IGZ1
bmN0aW9uX3N0YXRlLmJvZHlfc3RhcnRfbGluZV9udW1iZXI6CiAgICAgICAgIG1hdGNoZWRfcGFz
c19wdHIgPSBtYXRjaChyJ15ccypQYXNzKFtBLVpdW0EtWmEtel0qKVB0cjwnLCBsaW5lKQogICAg
ICAgICBpZiBtYXRjaGVkX3Bhc3NfcHRyOgogICAgICAgICAgICAgdHlwZV9uYW1lID0gJ1Bhc3Ml
c1B0cicgJSBtYXRjaGVkX3Bhc3NfcHRyLmdyb3VwKDEpCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5CmluZGV4IGNkYmM2NzI4
NjQ0ZWRhYjdjNTgwODY2YjUxMGIwNzU3ZjViOTUzNDkuLjk2NGNlOGRmNmFlMGQzOWU5YTIyMDc2
NjJhOGJkM2RmYjA5YzNjMzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5CkBAIC0yMzEsNiArMjMxLDUxIEBAIGNsYXNz
IENwcFN0eWxlVGVzdEJhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgICAgICcg
IFt3aGl0ZXNwYWNlL2JsYW5rX2xpbmVdIFszXScpKQogCiAKK2NsYXNzIEZ1bmN0aW9uRGV0ZWN0
aW9uVGVzdChDcHBTdHlsZVRlc3RCYXNlKToKKyAgICBkZWYgcGVyZm9ybV9mdW5jdGlvbl9kZXRl
Y3Rpb24oc2VsZiwgbGluZXMsIGZ1bmN0aW9uX2luZm9ybWF0aW9uKToKKyAgICAgICAgY2xlYW5f
bGluZXMgPSBjcHBfc3R5bGUuQ2xlYW5zZWRMaW5lcyhsaW5lcykKKyAgICAgICAgZnVuY3Rpb25f
c3RhdGUgPSBjcHBfc3R5bGUuX0Z1bmN0aW9uU3RhdGUoNSkKKyAgICAgICAgZXJyb3JfY29sbGVj
dG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQorICAgICAgICBjcHBfc3R5bGUuZGV0
ZWN0X2Z1bmN0aW9ucyhjbGVhbl9saW5lcywgMCwgZnVuY3Rpb25fc3RhdGUsIGVycm9yX2NvbGxl
Y3RvcikKKyAgICAgICAgaWYgbm90IGZ1bmN0aW9uX2luZm9ybWF0aW9uOgorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMoZnVuY3Rpb25fc3RhdGUuaW5fYV9mdW5jdGlvbiwgRmFsc2UpCisg
ICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZnVuY3Rpb25fc3Rh
dGUuaW5fYV9mdW5jdGlvbiwgVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZnVuY3Rp
b25fc3RhdGUuY3VycmVudF9mdW5jdGlvbiwgZnVuY3Rpb25faW5mb3JtYXRpb25bJ25hbWUnXSAr
ICcoKScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGZ1bmN0aW9uX3N0YXRlLmJvZHlfc3Rh
cnRfbGluZV9udW1iZXIsIGZ1bmN0aW9uX2luZm9ybWF0aW9uWydib2R5X3N0YXJ0X2xpbmVfbnVt
YmVyJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGZ1bmN0aW9uX3N0YXRlLmVuZGluZ19s
aW5lX251bWJlciwgZnVuY3Rpb25faW5mb3JtYXRpb25bJ2VuZGluZ19saW5lX251bWJlciddKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhmdW5jdGlvbl9zdGF0ZS5pc19kZWNsYXJhdGlvbiwg
ZnVuY3Rpb25faW5mb3JtYXRpb25bJ2lzX2RlY2xhcmF0aW9uJ10pCisKKyAgICBkZWYgdGVzdF9i
YXNpY19mdW5jdGlvbl9kZXRlY3Rpb24oc2VsZik6CisgICAgICAgIHNlbGYucGVyZm9ybV9mdW5j
dGlvbl9kZXRlY3Rpb24oCisgICAgICAgICAgICBbJ3ZvaWQgdGhlVGVzdEZ1bmN0aW9uTmFtZShp
bnQpIHsnLAorICAgICAgICAgICAgICd9J10sCisgICAgICAgICAgICB7J25hbWUnOiAndGhlVGVz
dEZ1bmN0aW9uTmFtZScsCisgICAgICAgICAgICAgJ2JvZHlfc3RhcnRfbGluZV9udW1iZXInOiAw
LAorICAgICAgICAgICAgICdlbmRpbmdfbGluZV9udW1iZXInOiAxLAorICAgICAgICAgICAgICdp
c19kZWNsYXJhdGlvbic6IEZhbHNlfSkKKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2RlY2xhcmF0
aW9uX2RldGVjdGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5wZXJmb3JtX2Z1bmN0aW9uX2RldGVj
dGlvbigKKyAgICAgICAgICAgIFsndm9pZCBhRnVuY3Rpb25OYW1lKGludCk7J10sCisgICAgICAg
ICAgICB7J25hbWUnOiAnYUZ1bmN0aW9uTmFtZScsCisgICAgICAgICAgICAgJ2JvZHlfc3RhcnRf
bGluZV9udW1iZXInOiAwLAorICAgICAgICAgICAgICdlbmRpbmdfbGluZV9udW1iZXInOiAwLAor
ICAgICAgICAgICAgICdpc19kZWNsYXJhdGlvbic6IFRydWV9KQorCisgICAgZGVmIHRlc3Rfbm9u
X2Z1bmN0aW9ucyhzZWxmKToKKyAgICAgICAgIyBUaGlzIGNhc2UgZXhwb3NlZCBhbiBlcnJvciBi
ZWNhdXNlIHRoZSBvcGVuIGJyYWNlIHdhcyBpbiBxdW90ZXMuCisgICAgICAgIHNlbGYucGVyZm9y
bV9mdW5jdGlvbl9kZXRlY3Rpb24oCisgICAgICAgICAgICBbJ2FzbSgnLAorICAgICAgICAgICAg
ICcgICAgInN0bWRiIHNwISwge3IxLXIzfSIgIlxuIicsCisgICAgICAgICAgICAgJyk7J10sCisg
ICAgICAgICAgICAjIFRoaXMgaXNuJ3QgYSBmdW5jdGlvbiBidXQgaXQgbG9va3MgbGlrZSBvbmUg
dG8gb3VyIHNpbXBsZQorICAgICAgICAgICAgIyBhbGdvcml0aG0gYW5kIHRoYXQgaXMgb2suCisg
ICAgICAgICAgICB7J25hbWUnOiAnYXNtJywKKyAgICAgICAgICAgICAnYm9keV9zdGFydF9saW5l
X251bWJlcic6IDIsCisgICAgICAgICAgICAgJ2VuZGluZ19saW5lX251bWJlcic6IDIsCisgICAg
ICAgICAgICAgJ2lzX2RlY2xhcmF0aW9uJzogVHJ1ZX0pCisKIGNsYXNzIENwcFN0eWxlVGVzdChD
cHBTdHlsZVRlc3RCYXNlKToKIAogICAgICMgVGVzdCBnZXQgbGluZSB3aWR0aC4KQEAgLTI3NzAs
NiArMjgxNSwxNCBAQCBjbGFzcyBQYXNzUHRyVGVzdChDcHBTdHlsZVRlc3RCYXNlKToKICAgICAg
ICAgICAgICd7XG4nCiAgICAgICAgICAgICAnfScsCiAgICAgICAgICAgICAnJykKKyAgICAgICAg
c2VsZi5hc3NlcnRfcGFzc19wdHJfY2hlY2soCisgICAgICAgICAgICAnUGFzc1JlZlB0cjxUeXBl
MT4gbXlGdW5jdGlvbihpbnQpXG4nCisgICAgICAgICAgICAne1xuJworICAgICAgICAgICAgJ30n
LAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X3Bhc3NfcHRyX2NoZWNrKAor
ICAgICAgICAgICAgJ1Bhc3NSZWZQdHI8VHlwZTE+IG15RnVuY3Rpb24oKTtcbicsCisgICAgICAg
ICAgICAnJykKIAogICAgIGRlZiB0ZXN0X3Bhc3NfcmVmX3B0cl9wYXJhbWV0ZXJfdmFsdWUoc2Vs
Zik6CiAgICAgICAgIHNlbGYuYXNzZXJ0X3Bhc3NfcHRyX2NoZWNrKApAQCAtMjc3OCw2ICsyODMx
LDEzIEBAIGNsYXNzIFBhc3NQdHJUZXN0KENwcFN0eWxlVGVzdEJhc2UpOgogICAgICAgICAgICAg
J30nLAogICAgICAgICAgICAgJycpCiAKKyAgICBkZWYgdGVzdF9wYXNzX3JlZl9wdHJfbWVtYmVy
X3ZhcmlhYmxlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9wYXNzX3B0cl9jaGVjaygKKyAg
ICAgICAgICAgICdjbGFzcyBGb28geycKKyAgICAgICAgICAgICcgICAgUGFzc1JlZlB0cjxUeXBl
MT4gbV9vdGhlcjtcbicKKyAgICAgICAgICAgICd9O1xuJywKKyAgICAgICAgICAgICcnKQorCiAK
IGNsYXNzIFdlYktpdFN0eWxlVGVzdChDcHBTdHlsZVRlc3RCYXNlKToKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>