<?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>82333</bug_id>
          
          <creation_ts>2012-03-27 06:47:22 -0700</creation_ts>
          <short_desc>[GTK] Use gtester -s to skip individual test cases instead of unit tests as a whole</short_desc>
          <delta_ts>2012-03-28 08:47:40 -0700</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>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>82341</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Carlos Garcia Campos">cgarcia</assigned_to>
          <cc>eric</cc>
    
    <cc>pnormand</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>588834</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-03-27 06:47:22 -0700</bug_when>
    <thetext>It requires a glib bump, so it can&apos;t be landed for now. Patch attached to bug #41630 bumps glib requirements, so we can fix it when that one lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588844</commentid>
    <comment_count>1</comment_count>
      <attachid>134050</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-03-27 06:54:33 -0700</bug_when>
    <thetext>Created attachment 134050
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588871</commentid>
    <comment_count>2</comment_count>
      <attachid>134050</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-03-27 07:33:27 -0700</bug_when>
    <thetext>Comment on attachment 134050
Patch

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

Looks good, but consider the small changes below before landing.

&gt; Tools/Scripts/run-gtk-tests:34
&gt; +    class SkippedTest:
&gt; +
&gt; +        def __init__(self, test, reason, bug=None, test_cases=[]):
&gt; +            self.test = test

Might as well make this a top-level class. There&apos;s only one class in this file, but as time goes on we&apos;ll probably add more and want them to interact.

&gt; Tools/Scripts/run-gtk-tests:230
&gt; +        self._tests = [test for test in self._tests if self._should_run_test(test)]

You could write this as: self._tests = itertools.ifilterfalse(self._should_run_test, self._tests)

&gt; Tools/Scripts/run-gtk-tests:248
&gt; -            names = [os.path.basename(test) for test in failed_tests]
&gt; +            names = [test.lstrip(self._programs_path) for test in failed_tests]

This seems unrelated -- there&apos;s a lot of general cleanup in this patch though.

&gt; Tools/Scripts/run-gtk-tests:261
&gt; +            for skipped in self._skipped_tests:
&gt; +                sys.stdout.write(&quot;%s&quot; % skipped.test)
&gt; +                if skipped.test_cases:
&gt; +                    sys.stdout.write(&quot; [%s]&quot; % &quot;, &quot;.join(skipped.test_cases))
&gt; +                sys.stdout.write(&quot;: %s &quot; % skipped.reason)
&gt; +                if skipped.bug is not None:
&gt; +                    sys.stdout.write(&quot;(https://bugs.webkit.org/show_bug.cgi?id=%d)&quot; % skipped.bug)
&gt; +                sys.stdout.write(&quot;\n&quot;)

I think it&apos;d make sense to have a SkippedTest.__str__ or SkippedTest.__repr__ that converted the class to a string. Then you would just do sys.stdout.write(&quot;%s&quot; % skipped)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588895</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-03-27 07:57:53 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 134050 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=134050&amp;action=review
&gt; 
&gt; Looks good, but consider the small changes below before landing.
&gt; 
&gt; &gt; Tools/Scripts/run-gtk-tests:34
&gt; &gt; +    class SkippedTest:
&gt; &gt; +
&gt; &gt; +        def __init__(self, test, reason, bug=None, test_cases=[]):
&gt; &gt; +            self.test = test
&gt; 
&gt; Might as well make this a top-level class. There&apos;s only one class in this file, but as time goes on we&apos;ll probably add more and want them to interact.

Ok.
 
&gt; &gt; Tools/Scripts/run-gtk-tests:261
&gt; &gt; +            for skipped in self._skipped_tests:
&gt; &gt; +                sys.stdout.write(&quot;%s&quot; % skipped.test)
&gt; &gt; +                if skipped.test_cases:
&gt; &gt; +                    sys.stdout.write(&quot; [%s]&quot; % &quot;, &quot;.join(skipped.test_cases))
&gt; &gt; +                sys.stdout.write(&quot;: %s &quot; % skipped.reason)
&gt; &gt; +                if skipped.bug is not None:
&gt; &gt; +                    sys.stdout.write(&quot;(https://bugs.webkit.org/show_bug.cgi?id=%d)&quot; % skipped.bug)
&gt; &gt; +                sys.stdout.write(&quot;\n&quot;)
&gt; 
&gt; I think it&apos;d make sense to have a SkippedTest.__str__ or SkippedTest.__repr__ that converted the class to a string. Then you would just do sys.stdout.write(&quot;%s&quot; % skipped)

Makes a lot of sense, I&apos;ll do it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589153</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-03-27 12:36:45 -0700</bug_when>
    <thetext>Attachment 134050 was posted by a committer and has review+, assigning to Carlos Garcia Campos for commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589991</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-03-28 08:47:40 -0700</bug_when>
    <thetext>Committed r112404: &lt;http://trac.webkit.org/changeset/112404&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134050</attachid>
            <date>2012-03-27 06:54:33 -0700</date>
            <delta_ts>2012-03-27 07:33:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk-gtester-skip.diff</filename>
            <type>text/plain</type>
            <size>7138</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2MmUz
MWIyLi4yYTBiZDhiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMzEgQEAKIDIwMTItMDMtMjcgIENhcmxvcyBHYXJjaWEgQ2FtcG9z
ICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCisgICAgICAgIFtHVEtdIFVzZSBndGVzdGVyIC1zIHRv
IHNraXAgaW5kaXZpZHVhbCB0ZXN0IGNhc2VzIGluc3RlYWQgb2YgdW5pdCB0ZXN0cyBhcyBhIHdo
b2xlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjMz
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2Ny
aXB0cy9ydW4tZ3RrLXRlc3RzOgorICAgICAgICAoVGVzdFJ1bm5lci5Ta2lwcGVkVGVzdCk6IEFk
ZCBTa2lwcGVkVGVzdCBjbGFzcyB0byBzdG9yZSBtb3JlCisgICAgICAgIGluZm9ybWF0aW9uIGFi
b3V0IHNraXBwZWQgdGVzdHMuCisgICAgICAgIChUZXN0UnVubmVyLl9zZXR1cF90ZXN0aW5nX2Vu
dmlyb25tZW50KTogVXNlIFNraXBwZWRUZXN0IHRvIGFkZAorICAgICAgICBUZXN0V2ViS2l0QWNj
ZXNzaWJpbGl0eSB0byB0aGUgc2tpcHBlZCBsaXN0LgorICAgICAgICAoVGVzdFJ1bm5lci5fZmlu
ZF9za2lwcGVkX3Rlc3QpOiBSZXR1cm4gdGhlIFNraXBwZWRUZXN0IG9iamVjdCBmb3IKKyAgICAg
ICAgYSBnaXZlbiB0ZXN0IHBhdGguCisgICAgICAgIChUZXN0UnVubmVyLl90ZXN0X2Nhc2VzX3Rv
X3NraXApOiBSZXR1cm5zIHRoZSBsaXN0IG9mIHRlc3QgY2FzZXMKKyAgICAgICAgdGhhdCBzaG91
bGQgYmUgc2tpcHBlZCBmb3IgYSBnaXZlbiB0ZXN0IHBhdGguCisgICAgICAgIChUZXN0UnVubmVy
Ll9zaG91bGRfcnVuX3Rlc3QpOiBIZWxwZXIgZnVudGlvbiB0byBkZWNpZGUgd2hldGhlcgorICAg
ICAgICB0aGUgZ2l2ZW4gdGVzdCBwYXRoIHNob3VsZCBiZSBydW4gb3Igbm90LiBUZXN0cyBpbiB0
aGUgc2tpcHBlZAorICAgICAgICBsaXN0IHRoYXQgZG9uJ3QgaGF2ZSBhIGxpc3Qgb2YgZmFpbGlu
ZyB0ZXN0IGNhc2VzIGFyZSBub3QgcnVuIGF0CisgICAgICAgIGFsbC4gVGVzdHMgaW4gdGhlIHNr
aXBwZWQgbGlzdCB0aGF0IGNvbnRhaW4gYSBsaXN0IG9mIHRlc3QgY2FzZXMKKyAgICAgICAgYXJl
IHJ1biB3aXRoIGd0ZXN0ZXIgLXMgdG8gc2tpcCB0aGUgaW5kaXZpZHVhbCB0ZXN0IGNhc2VzLgor
ICAgICAgICAoVGVzdFJ1bm5lci5fcnVuX3Rlc3QpOiBIZWxwZXIgZnVudGlvbiB0byBydW4gYSBn
aXZlbiB0ZXN0LgorICAgICAgICAoVGVzdFJ1bm5lci5ydW5fdGVzdHMpOiBCdWlsZCB0aGUgbGlz
dCBvZiB0ZXN0cyB0byBydW4gYmFzZWQgb24KKyAgICAgICAgX3Nob3VsZF9ydW5fdGVzdCgpIGFu
ZCB1c2UgaGVscGVyIGZ1bmN0aW9uIF9ydW5fdGVzdCgpIHRvIHJ1bgorICAgICAgICBldmVyeSB0
ZXN0LgorCisyMDEyLTAzLTI3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KKwogICAgICAgICBVbnJldmlld2VkLiBTa2lwIEdUSysgdW5pdCB0ZXN0cyB0aGF0IGZh
aWwgaW4gdGhlIGJvdHMKIAogICAgICAgICAqIFNjcmlwdHMvcnVuLWd0ay10ZXN0czoKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWd0
ay10ZXN0cwppbmRleCA5YmQyYzRkLi5iNmM3ODkxIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRz
L3J1bi1ndGstdGVzdHMKKysrIGIvVG9vbHMvU2NyaXB0cy9ydW4tZ3RrLXRlc3RzCkBAIC0yOCwx
NSArMjgsMjkgQEAgVElNRU9VVD0xODAgIyBzZWNvbmRzCiAKIGNsYXNzIFRlc3RSdW5uZXI6CiAK
KyAgICBjbGFzcyBTa2lwcGVkVGVzdDoKKworICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgdGVz
dCwgcmVhc29uLCBidWc9Tm9uZSwgdGVzdF9jYXNlcz1bXSk6CisgICAgICAgICAgICBzZWxmLnRl
c3QgPSB0ZXN0CisgICAgICAgICAgICBzZWxmLnJlYXNvbiA9IHJlYXNvbgorICAgICAgICAgICAg
c2VsZi5idWcgPSBidWcKKyAgICAgICAgICAgIHNlbGYudGVzdF9jYXNlcyA9IHRlc3RfY2FzZXMK
KwogICAgIFRFU1RfRElSUyA9IFsgInVuaXR0ZXN0cyIsICJXZWJLaXQyQVBJVGVzdHMiIF0KLSAg
ICAjIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ3MTcK
KwogICAgIFNLSVBQRUQgPSBbCi0gICAgICAgICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgyMzI5Ci0gICAgICAgICJ1bml0dGVzdHMvdGVzdGRvd25sb2FkIiwKLSAg
ICAgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIzMjgKLSAg
ICAgICAgInVuaXR0ZXN0cy90ZXN0d2VidmlldyIsCi0gICAgICAgICMgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyMzMwCi0gICAgICAgICJ1bml0dGVzdHMvdGVzdHdl
YnJlc291cmNlIgorICAgICAgICBTa2lwcGVkVGVzdCgidW5pdHRlc3RzL3Rlc3Rkb3dubG9hZCIs
CisgICAgICAgICAgICAgICAgICAgICJUZXN0IGZhaWxzIGluIEdUSyBMaW51eCA2NC1iaXQgUmVs
ZWFzZSBib3QiLAorICAgICAgICAgICAgICAgICAgICA4MjMyOSwKKyAgICAgICAgICAgICAgICAg
ICAgWyIvd2Via2l0L2Rvd25sb2FkL25vdC1mb3VuZCJdKSwKKyAgICAgICAgU2tpcHBlZFRlc3Qo
InVuaXR0ZXN0cy90ZXN0d2VidmlldyIsCisgICAgICAgICAgICAgICAgICAgICJUZXN0IHRpbWVz
IG91dCBpbiBHVEsgTGludXggNjQtYml0IFJlbGVhc2UgYm90IiwKKyAgICAgICAgICAgICAgICAg
ICAgODIzMjgsCisgICAgICAgICAgICAgICAgICAgIFsiL3dlYmtpdC93ZWJ2aWV3L2ljb24tdXJp
Il0pLAorICAgICAgICBTa2lwcGVkVGVzdCgidW5pdHRlc3RzL3Rlc3R3ZWJyZXNvdXJjZSIsCisg
ICAgICAgICAgICAgICAgICAgICJUZXN0IGZhaWxzIGluIEdUSyBMaW51eCA2NC1iaXQgUmVsZWFz
ZSBib3QiLAorICAgICAgICAgICAgICAgICAgICA4MjMzMCwKKyAgICAgICAgICAgICAgICAgICAg
WyIvd2Via2l0L3dlYnJlc291cmNlL3N1Yl9yZXNvdXJjZV9sb2FkaW5nIl0pCiAgICAgXQogCiAg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlvbnMsIHRlc3RzPVtdKToKQEAgLTE2NSw3ICsxNzks
OCBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAgICAgICAjIElmIHdlIGNhbm5vdCBzdGFydCB0aGUg
YWNjZXNzaWJpbGl0eSBkYWVtb25zLCB3ZSBjYW4ganVzdCBza2lwIHRoZSBhY2Nlc3NpYmlsaXR5
IHRlc3RzLgogICAgICAgICBpZiBub3Qgc2VsZi5fc3RhcnRfYWNjZXNzaWJpbGl0eV9kYWVtb25z
KCk6CiAgICAgICAgICAgICBwcmludCAiQ291bGQgbm90IHN0YXJ0IGFjY2Vzc2liaWxpdHkgYnVz
LCBzbyBza2lwcGluZyBUZXN0V2ViS2l0QWNjZXNzaWJpbGl0eSIKLSAgICAgICAgICAgIHNlbGYu
X3NraXBwZWRfdGVzdHMuYXBwZW5kKCJUZXN0V2ViS2l0QWNjZXNzaWJpbGl0eSIpCisgICAgICAg
ICAgICBzZWxmLl9za2lwcGVkX3Rlc3RzLmFwcGVuZChTa2lwcGVkVGVzdCgiV2ViS2l0MkFQSVRl
c3RzL1Rlc3RXZWJLaXRBY2Nlc3NpYmlsaXR5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJDb3VsZCBub3Qgc3RhcnQgYWNjZXNzaWJpbGl0eSBi
dXMiKSkKICAgICAgICAgcmV0dXJuIFRydWUKIAogICAgIGRlZiBfdGVhcl9kb3duX3Rlc3Rpbmdf
ZW52aXJvbm1lbnQoc2VsZik6CkBAIC0xNzUsMTcgKzE5MCwzMSBAQCBjbGFzcyBUZXN0UnVubmVy
OgogICAgICAgICAgICAgc2VsZi5fc3BpX2J1c19sYXVuY2hlci50ZXJtaW5hdGUoKQogICAgICAg
ICBzZWxmLl94dmZiLmtpbGwoKTsKIAotICAgIGRlZiBfcmVtb3ZlX3NraXBwZWRfdGVzdHMoc2Vs
Zik6Ci0gICAgICAgIHRlc3RzX3RvX3JlbW92ZSA9IFtdCi0gICAgICAgIGZvciB0ZXN0IGluIHNl
bGYuX3Rlc3RzOgotICAgICAgICAgICAgZm9yIHNraXBwZWQgaW4gc2VsZi5fc2tpcHBlZF90ZXN0
czoKLSAgICAgICAgICAgICAgICBpZiB0ZXN0LmZpbmQoc2tpcHBlZCkgIT0gLTE6Ci0gICAgICAg
ICAgICAgICAgICAgIHRlc3RzX3RvX3JlbW92ZS5hcHBlbmQodGVzdCkKLSAgICAgICAgICAgICAg
ICAgICAgY29udGludWUKKyAgICBkZWYgX2ZpbmRfc2tpcHBlZF90ZXN0KHNlbGYsIHRlc3QpOgor
ICAgICAgICBmb3Igc2tpcHBlZCBpbiBzZWxmLl9za2lwcGVkX3Rlc3RzOgorICAgICAgICAgICAg
aWYgdGVzdC5lbmRzd2l0aChza2lwcGVkLnRlc3QpOgorICAgICAgICAgICAgICAgIHJldHVybiBz
a2lwcGVkCisgICAgICAgIHJldHVybiBOb25lCiAKLSAgICAgICAgZm9yIHRlc3QgaW4gdGVzdHNf
dG9fcmVtb3ZlOgotICAgICAgICAgICAgc2VsZi5fdGVzdHMucmVtb3ZlKHRlc3QpCi0gICAgICAg
ICAgICBwcmludCAiU2tpcHBpbmcgJXMiICUgdGVzdAorICAgIGRlZiBfdGVzdF9jYXNlc190b19z
a2lwKHNlbGYsIHRlc3QpOgorICAgICAgICBza2lwcGVkID0gc2VsZi5fZmluZF9za2lwcGVkX3Rl
c3QodGVzdCkKKyAgICAgICAgaWYgc2tpcHBlZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJl
dHVybiBza2lwcGVkLnRlc3RfY2FzZXMKKyAgICAgICAgcmV0dXJuIFtdCisKKyAgICBkZWYgX3No
b3VsZF9ydW5fdGVzdChzZWxmLCB0ZXN0KToKKyAgICAgICAgc2tpcHBlZCA9IHNlbGYuX2ZpbmRf
c2tpcHBlZF90ZXN0KHRlc3QpCisgICAgICAgIHJldHVybiBza2lwcGVkIGlzIE5vbmUgb3Igc2tp
cHBlZC50ZXN0X2Nhc2VzCisKKyAgICBkZWYgX3J1bl90ZXN0KHNlbGYsIHRlc3QpOgorICAgICAg
ICB0ZXN0ZXJfY29tbWFuZCA9IFsnZ3Rlc3RlciddCisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMu
dmVyYm9zZToKKyAgICAgICAgICAgIHRlc3Rlcl9jb21tYW5kLmFwcGVuZCgnLS12ZXJib3NlJykK
KyAgICAgICAgZm9yIHRlc3RfY2FzZSBpbiBzZWxmLl90ZXN0X2Nhc2VzX3RvX3NraXAodGVzdCk6
CisgICAgICAgICAgICB0ZXN0ZXJfY29tbWFuZC5leHRlbmQoWyctcycsIHRlc3RfY2FzZV0pCisg
ICAgICAgIHRlc3Rlcl9jb21tYW5kLmFwcGVuZCh0ZXN0KQorCisgICAgICAgIHJldHVybiBub3Qg
c2VsZi5fY3JlYXRlX3Byb2Nlc3ModGVzdGVyX2NvbW1hbmQsIGVudj1zZWxmLl90ZXN0X2Vudiku
d2FpdCgpCiAKICAgICBkZWYgcnVuX3Rlc3RzKHNlbGYpOgogICAgICAgICBpZiBub3Qgc2VsZi5f
dGVzdHM6CkBAIC0xOTgsMTcgKzIyNywxMyBAQCBjbGFzcyBUZXN0UnVubmVyOgogCiAgICAgICAg
ICMgUmVtb3ZlIHNraXBwZWQgdGVzdHMgbm93IGluc3RlYWQgb2Ygd2hlbiB3ZSBmaW5kIHRoZW0s
IGJlY2F1c2UKICAgICAgICAgIyBzb21lIHRlc3RzIG1pZ2h0IGJlIHNraXBwZWQgd2hpbGUgc2V0
dGluZyB1cCB0aGUgdGVzdCBlbnZpcm9ubWVudC4KLSAgICAgICAgc2VsZi5fcmVtb3ZlX3NraXBw
ZWRfdGVzdHMoKQorICAgICAgICBzZWxmLl90ZXN0cyA9IFt0ZXN0IGZvciB0ZXN0IGluIHNlbGYu
X3Rlc3RzIGlmIHNlbGYuX3Nob3VsZF9ydW5fdGVzdCh0ZXN0KV0KIAogICAgICAgICBmYWlsZWRf
dGVzdHMgPSBbXQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzdGFydF90aW1lID0gdGltZS50
aW1lKCkKICAgICAgICAgICAgIGZvciB0ZXN0IGluIHNlbGYuX3Rlc3RzOgotICAgICAgICAgICAg
ICAgIHRlc3Rlcl9jb21tYW5kID0gWydndGVzdGVyJywgdGVzdF0KLSAgICAgICAgICAgICAgICBp
ZiBzZWxmLl9vcHRpb25zLnZlcmJvc2U6Ci0gICAgICAgICAgICAgICAgICAgIHRlc3Rlcl9jb21t
YW5kLmluc2VydCgxLCAnLS12ZXJib3NlJykKLSAgICAgICAgICAgICAgICBwcm9jZXNzID0gc2Vs
Zi5fY3JlYXRlX3Byb2Nlc3ModGVzdGVyX2NvbW1hbmQsIGVudj1zZWxmLl90ZXN0X2VudikKLSAg
ICAgICAgICAgICAgICBpZiBwcm9jZXNzLndhaXQoKToKKyAgICAgICAgICAgICAgICBpZiBub3Qg
c2VsZi5fcnVuX3Rlc3QodGVzdCk6CiAgICAgICAgICAgICAgICAgICAgIGZhaWxlZF90ZXN0cy5h
cHBlbmQodGVzdCkKIAogICAgICAgICAgICAgICAgIGlmIHRpbWUudGltZSgpIC0gc3RhcnRfdGlt
ZSA+PSBUSU1FT1VUOgpAQCAtMjIwLDEwICsyNDUsMjIgQEAgY2xhc3MgVGVzdFJ1bm5lcjoKICAg
ICAgICAgICAgIHNlbGYuX3RlYXJfZG93bl90ZXN0aW5nX2Vudmlyb25tZW50KCkKIAogICAgICAg
ICBpZiBmYWlsZWRfdGVzdHM6Ci0gICAgICAgICAgICBuYW1lcyA9IFtvcy5wYXRoLmJhc2VuYW1l
KHRlc3QpIGZvciB0ZXN0IGluIGZhaWxlZF90ZXN0c10KKyAgICAgICAgICAgIG5hbWVzID0gW3Rl
c3QubHN0cmlwKHNlbGYuX3Byb2dyYW1zX3BhdGgpIGZvciB0ZXN0IGluIGZhaWxlZF90ZXN0c10K
ICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlRlc3RzIGZhaWxlZDogJXNcbiIgJSAiLCAi
LmpvaW4obmFtZXMpKQogICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCiAKKyAgICAgICAg
aWYgc2VsZi5fc2tpcHBlZF90ZXN0czoKKyAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlRl
c3RzIHNraXBwZWQ6XG4iKQorICAgICAgICAgICAgZm9yIHNraXBwZWQgaW4gc2VsZi5fc2tpcHBl
ZF90ZXN0czoKKyAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIlcyIgJSBza2lwcGVk
LnRlc3QpCisgICAgICAgICAgICAgICAgaWYgc2tpcHBlZC50ZXN0X2Nhc2VzOgorICAgICAgICAg
ICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIgWyVzXSIgJSAiLCAiLmpvaW4oc2tpcHBlZC50
ZXN0X2Nhc2VzKSkKKyAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCI6ICVzICIgJSBz
a2lwcGVkLnJlYXNvbikKKyAgICAgICAgICAgICAgICBpZiBza2lwcGVkLmJ1ZyBpcyBub3QgTm9u
ZToKKyAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiKGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0lZCkiICUgc2tpcHBlZC5idWcpCisgICAgICAgICAg
ICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG4iKQorICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVz
aCgpCisKICAgICAgICAgcmV0dXJuIGxlbihmYWlsZWRfdGVzdHMpCiAKIGlmIF9fbmFtZV9fID09
ICJfX21haW5fXyI6Cg==
</data>
<flag name="review"
          id="138209"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
    <flag name="commit-queue"
          id="138210"
          type_id="3"
          status="-"
          setter="cgarcia"
    />
          </attachment>
      

    </bug>

</bugzilla>