<?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>44642</bug_id>
          
          <creation_ts>2010-08-25 15:44:08 -0700</creation_ts>
          <short_desc>js-test-post.js is not robust for asynchronous tests</short_desc>
          <delta_ts>2010-08-27 05:35:12 -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>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Steve Block">steveblock</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>benm</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>mjs</cc>
    
    <cc>steveblock</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>269555</commentid>
    <comment_count>0</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-08-25 15:44:08 -0700</bug_when>
    <thetext>LayoutTests that use the script-tests pattern use a standard HTML template. This includes fast/js/resources/js-test-pre.js, followed by the script for the test itself, followed by fast/js/resources/js-test-post.js.

If window.jsTestIsAsync has been set by the test, js-test-post.js calls layoutTestController.waitUntilDone(). The test should then call finishJSTest() when it completes. finishJSTest() is defined in js-test-post.js and calls layoutTestController.notifyDone().

However, it&apos;s possible for an asynchronous test to complete before js-test-post.js has been parsed. This can occur when the loading of this script is slow, causing WebCore to yield during loading and process asynchronous callbacks from the test. In this case, finishJSTest() is not yet defined, causing the test to fail.

One solution would be to update all such asynchronous tests to delay any testing until onload has fired. A less intrusive alternative is to move finishJSTest() to js-test-pre.js and add logic to js-test-post.js to handle the case of finishJSTest() having already been called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269579</commentid>
    <comment_count>1</comment_count>
      <attachid>65493</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-08-25 16:11:02 -0700</bug_when>
    <thetext>Created attachment 65493
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269989</commentid>
    <comment_count>2</comment_count>
      <attachid>65493</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-26 11:30:20 -0700</bug_when>
    <thetext>Comment on attachment 65493
Patch

The change seems fine.

&gt; +isAllScriptParsed = true;

I think that adding this new window property might affect tests that dump everything on the window object. Did you run all the scripts to test?

I would name this variable postTestScriptWasParsed or wasPostTestScriptParsed.

&gt; +    if (window.isFinishJSTestCalled)

I would name this variable finishJSTestWasCalled or wasFinishJSTestCalled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270378</commentid>
    <comment_count>3</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-08-27 01:31:10 -0700</bug_when>
    <thetext>&gt; I think that adding this new window property might affect tests that dump everything on the window
&gt; object. Did you run all the scripts to test?
Yes, I ran all tests. I guess none of them dump the window object asynchronously, ie after js-test-post.js has been parsed.

&gt; I would name this variable postTestScriptWasParsed or wasPostTestScriptParsed.
&gt; I would name this variable finishJSTestWasCalled or wasFinishJSTestCalled.
Will do</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270412</commentid>
    <comment_count>4</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-08-27 04:15:58 -0700</bug_when>
    <thetext>Committed r66201: &lt;http://trac.webkit.org/changeset/66201&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270418</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-27 04:40:04 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/66201 might have broken GTK Linux 32-bit Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270444</commentid>
    <comment_count>6</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-08-27 05:35:12 -0700</bug_when>
    <thetext>Added GTK, Qt and Win expected results in http://trac.webkit.org/changeset/66212</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65493</attachid>
            <date>2010-08-25 16:11:02 -0700</date>
            <delta_ts>2010-08-26 11:30:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44642-20100826001100.patch</filename>
            <type>text/plain</type>
            <size>3320</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDY2MDUwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDgtMjUgIFN0ZXZlIEJsb2NrICA8c3Rl
dmVibG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGpzLXRlc3QtcG9zdC5qcyBpcyBub3Qgcm9idXN0IGZvciBhc3luY2hyb25v
dXMgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQ0NjQyCisKKyAgICAgICAgVGhpcyBwYXRjaCBtb3ZlcyBmaW5pc2hKU1Rlc3QoKSB0byBqcy10
ZXN0LXByZS5qcyB0byBtYWtlIGl0IGF2YWlsYWJsZSBmb3Igd2hlbiBhbgorICAgICAgICBhc3lu
Y2hyb25vdXMgdGVzdCBjb21wbGV0ZXMgYmVmb3JlIGpzLXRlc3QtcG9zdC5qcyBoYXMgYmVlbiBw
YXJzZWQsIGFuZCB1cGRhdGVzCisgICAgICAgIGpzLXRlc3QtcG9zdC5qcyB0byBoYW5kbGUgdGhp
cyBjYXNlLgorCisgICAgICAgICogZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0eS1kZXNj
cmlwdG9ycy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzOgorICAgICAgICAqIGZhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzOgor
ICAgICAgICAoZmluaXNoSlNUZXN0KToKKwogMjAxMC0wOC0yNSAgQ2hyaXMgTWFycmluICA8Y21h
cnJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0eS1kZXNjcmlwdG9y
cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93
L3dpbmRvdy1wcm9wZXJ0eS1kZXNjcmlwdG9ycy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDY1NzI2
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0eS1kZXNjcmlw
dG9ycy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTM0Nyw2ICszNDcsNyBAQCBQQVNT
IHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwCiBQQVNTIHR5cGVvZiBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdpbmRvdywgJ2V2YWwnKSBpcyAnb2JqZWN0JwogUEFT
UyB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3csICdldmFsQW5k
TG9nJykgaXMgJ29iamVjdCcKIFBBU1MgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3Iod2luZG93LCAnZXZlbnQnKSBpcyAnb2JqZWN0JworUEFTUyB0eXBlb2YgT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3csICdmaW5pc2hKU1Rlc3QnKSBpcyAnb2JqZWN0
JwogUEFTUyB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3csICdm
cmFtZUVsZW1lbnQnKSBpcyAnb2JqZWN0JwogUEFTUyB0eXBlb2YgT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcih3aW5kb3csICdmcmFtZXMnKSBpcyAnb2JqZWN0JwogUEFTUyB0eXBlb2Yg
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3csICdnYycpIGlzICdvYmplY3Qn
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
CShyZXZpc2lvbiA2NTcyNikKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwxMyArMSw5IEBACi1mdW5jdGlvbiBmaW5p
c2hKU1Rlc3QoKQotewotICAgIHNob3VsZEJlVHJ1ZSgic3VjY2Vzc2Z1bGx5UGFyc2VkIik7Ci0g
ICAgZGVidWcoJzxiciAvPjxzcGFuIGNsYXNzPSJwYXNzIj5URVNUIENPTVBMRVRFPC9zcGFuPicp
OwotICAgIGlmICh3aW5kb3cuanNUZXN0SXNBc3luYyAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLX0KK2lz
QWxsU2NyaXB0UGFyc2VkID0gdHJ1ZTsKIAogaWYgKHdpbmRvdy5qc1Rlc3RJc0FzeW5jKSB7CiAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cuaXNGaW5pc2hKU1Rlc3RD
YWxsZWQpCisgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogfSBlbHNlCiAgICAgZmluaXNoSlNUZXN0
KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cwkocmV2aXNpb24gNjU3MjYpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMjgwLDMgKzI4MCwxNiBAQCBmdW5jdGlvbiBn
YygpIHsKICAgICAgICAgICAgIGdjUmVjKDEwKQogICAgIH0KIH0KKworLy8gSXQncyBwb3NzaWJs
ZSBmb3IgYW4gYXN5bmMgdGVzdCB0byBjYWxsIGZpbmlzaEpTVGVzdCgpIGJlZm9yZSBqcy10ZXN0
LXBvc3QuanMKKy8vIGhhcyBiZWVuIHBhcnNlZC4KK2Z1bmN0aW9uIGZpbmlzaEpTVGVzdCgpCit7
CisgICAgaXNGaW5pc2hKU1Rlc3RDYWxsZWQgPSB0cnVlOworICAgIGlmICghd2luZG93LmlzQWxs
U2NyaXB0UGFyc2VkKQorICAgICAgICByZXR1cm47CisgICAgc2hvdWxkQmVUcnVlKCJzdWNjZXNz
ZnVsbHlQYXJzZWQiKTsKKyAgICBkZWJ1ZygnPGJyIC8+PHNwYW4gY2xhc3M9InBhc3MiPlRFU1Qg
Q09NUExFVEU8L3NwYW4+Jyk7CisgICAgaWYgKHdpbmRvdy5qc1Rlc3RJc0FzeW5jICYmIHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworfQo=
</data>
<flag name="review"
          id="54275"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>