<?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>37432</bug_id>
          
          <creation_ts>2010-04-11 20:21:18 -0700</creation_ts>
          <short_desc>add basic mock unit tests to new-run-webkit-tests</short_desc>
          <delta_ts>2010-04-14 17:59:22 -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>OS X 10.5</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="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>cjerdonek</cc>
    
    <cc>eric</cc>
    
    <cc>hamaji</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>211522</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-04-11 20:21:18 -0700</bug_when>
    <thetext>This is a CL to add some very minimal unit tests to new-run-webkit-tests. This should be enough to catch out-and-out syntax errors and so forth.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211524</commentid>
    <comment_count>1</comment_count>
      <attachid>53142</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-04-11 20:30:48 -0700</bug_when>
    <thetext>Created attachment 53142
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211527</commentid>
    <comment_count>2</comment_count>
      <attachid>53142</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-11 20:50:42 -0700</bug_when>
    <thetext>Comment on attachment 53142
Patch

+def real_main(options, args, print_results=True):

This is confusing.  Python tries to trick you into having several levels of main.

+try:
+    d = os.path.dirname(__file__)
+except NameError:
+    d = os.path.dirname(sys.argv[0])
+
+sys.path.append(os.path.abspath(os.path.join(d, &apos;../thirdparty&apos;)))

What is this?  We shouldn&apos;t be screwing around with sys.path.

+from run_webkit_tests import *

This should be:

from webkitpy.layout_test.run_webkit_tests import real_main, parse_args

Importing * make code very difficult to maintain because it imports all the imports transitively.

+if __name__ == &apos;__main__&apos;:
+    unittest.main()

We usually skip this part.  You can run tests individually from test-webkitpy anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211531</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-11 20:53:15 -0700</bug_when>
    <thetext>Also, wil this test spawn off apache and the websocket server?  It might be a better approach to start testing from the &quot;leaves&quot; up instead of from main down.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211707</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-04-12 13:12:58 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Also, wil this test spawn off apache and the websocket server?  It might be a
&gt; better approach to start testing from the &quot;leaves&quot; up instead of from main
&gt; down.

No. This test suite (so far) only tests the &quot;test&quot; port, which contains no compiled code and stubs out all of the real work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211710</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-04-12 13:26:14 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 53142 [details])
&gt; +def real_main(options, args, print_results=True):
&gt; 
&gt; This is confusing.  Python tries to trick you into having several levels of
&gt; main.
&gt; 

Agreed. I need to do this temporarily. I&apos;ve filed bug 37464 to clean this up and am doing that in a separate CL just to make it easy to back out if I&apos;ve forgotten some downstream reference to this file (I don&apos;t think there are any, but just to be sure ...)

&gt; +try:
&gt; +    d = os.path.dirname(__file__)
&gt; +except NameError:
&gt; +    d = os.path.dirname(sys.argv[0])
&gt; +
&gt; +sys.path.append(os.path.abspath(os.path.join(d, &apos;../thirdparty&apos;)))
&gt; 
&gt; What is this?  We shouldn&apos;t be screwing around with sys.path.

Removed. It looks like y&apos;all have cleaned up the import statements enough so that simply adding WebKitTools/Scripts to PYTHONPATH will allow me to run this file directly.

&gt; 
&gt; +from run_webkit_tests import *
&gt; 
&gt; This should be:
&gt; 
&gt; from webkitpy.layout_test.run_webkit_tests import real_main, parse_args
&gt; 
&gt; Importing * make code very difficult to maintain because it imports all the
&gt; imports transitively.

True. I was writing this in a hurry; it&apos;s removed now.

&gt; 
&gt; +if __name__ == &apos;__main__&apos;:
&gt; +    unittest.main()
&gt; 
&gt; We usually skip this part.  You can run tests individually from test-webkitpy
&gt; anyway.

You might; I don&apos;t. This is a pretty standard convention for Python test files and I&apos;m inclined to keep it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211712</commentid>
    <comment_count>6</comment_count>
      <attachid>53184</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-04-12 13:26:49 -0700</bug_when>
    <thetext>Created attachment 53184
cleaned-up patch w/ abarth&apos;s feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211755</commentid>
    <comment_count>7</comment_count>
      <attachid>53193</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-04-12 16:29:15 -0700</bug_when>
    <thetext>Created attachment 53193
revised patch - merged in changes from 37464</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211757</commentid>
    <comment_count>8</comment_count>
      <attachid>53195</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-04-12 16:30:29 -0700</bug_when>
    <thetext>Created attachment 53195
update Changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212344</commentid>
    <comment_count>9</comment_count>
      <attachid>53195</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-14 08:19:54 -0700</bug_when>
    <thetext>Comment on attachment 53195
update Changelog

+ import run_webkit_tests

Our convention is to use absolute imports from webkitpy.  We still have a bunch of places where we need to clean this up, so it&apos;s not a big deal.  Yay tests!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212664</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-04-14 17:16:38 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 53195 [details])
&gt; + import run_webkit_tests

Quite correct. Fixed prior to landing the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212676</commentid>
    <comment_count>11</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-04-14 17:59:22 -0700</bug_when>
    <thetext>Committed r57622: &lt;http://trac.webkit.org/changeset/57622&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53142</attachid>
            <date>2010-04-11 20:30:48 -0700</date>
            <delta_ts>2010-04-12 13:26:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37432-20100411203047.patch</filename>
            <type>text/plain</type>
            <size>6941</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAwZGQ1ZmE0Li5kZDY1NzIwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMDQt
MTEgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHNvbWUgdmVyeSBtaW5pbWFsIHVu
aXQgdGVzdHMgZm9yIG5ldy1ydW4td2Via2l0LXRlc3RzLiBUaGlzIHNob3VsZAorICAgICAgICBi
ZSBlbm91Z2ggdG8gY2F0Y2ggZWdyZWdpb3VzIGJyb2tlbm5lc3MgbGlrZSBzeW50YXggZXJyb3Jz
IGFuZCBpbXBvcnQKKyAgICAgICAgZGVjbGFyYXRpb24gaXNzdWVzLgorCisgICAgICAgIFVuZm9y
dHVuYXRlbHksIHRoaXMgZG9lc24ndCBhcHBlYXIgdG8gYmUgYXV0b21hdGljYWxseSBwaWNrZWQg
dXAKKyAgICAgICAgYnkgdGVzdC13ZWJraXRweSBwcm9wZXJseSBmb3IgcmVhc29ucyBJIGRvbid0
IHlldCB1bmRlcnN0YW5kLgorCisgICAgICAgIEFsc28sIGluIG9yZGVyIHRvIGdldCBpdCB0byBi
ZSByZWxhdGl2ZWx5IHNpbGVudCBhbmQgdG8gbm90IGNhbGwKKyAgICAgICAgc3lzLmV4aXQoKSBJ
IGhhZCB0byBzcGxpdCB0aGUgbWFpbiByb3V0aW5lIHVwIGEgYml0LiBUaGlzIG5lZWRzIHRvCisg
ICAgICAgIGJlIGNsZWFuZWQgdXAuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM3NDMyCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHk6IEFkZGVkLgorCiAyMDEw
LTA0LTA5ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCBy
ZXR1cm4gMCBhcyBhIEpTVmFsdWVSZWYKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CmluZGV4IGQ2
ODU0NDIuLjUzZmMzNGMgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQpAQCAtNjAyLDcgKzYw
Miw3IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgICIiIlJldHVybnMgd2hldGhlciB0aGUg
dGVzdCBydW5uZXIgbmVlZHMgYW4gSFRUUCBzZXJ2ZXIuIiIiCiAgICAgICAgIHJldHVybiBzZWxm
Ll9jb250YWluc190ZXN0cyhzZWxmLkhUVFBfU1VCRElSKQogCi0gICAgZGVmIHJ1bihzZWxmLCBy
ZXN1bHRfc3VtbWFyeSk6CisgICAgZGVmIHJ1bihzZWxmLCByZXN1bHRfc3VtbWFyeSwgbG9nX3Jl
c3VsdHMpOgogICAgICAgICAiIiJSdW4gYWxsIG91ciB0ZXN0cyBvbiBhbGwgb3VyIHRlc3QgZmls
ZXMuCiAKICAgICAgICAgRm9yIGVhY2ggdGVzdCBmaWxlLCB3ZSBydW4gZWFjaCB0ZXN0IHR5cGUu
IElmIHRoZXJlIGFyZSBhbnkgZmFpbHVyZXMsCkBAIC02NzEsOCArNjcxLDkgQEAgY2xhc3MgVGVz
dFJ1bm5lcjoKICAgICAgICAgICAgIHByaW50CiAKICAgICAgICAgIyBUaGlzIHN1bW1hcnkgZGF0
YSBnZXRzIHdyaXR0ZW4gdG8gc3Rkb3V0IHJlZ2FyZGxlc3Mgb2YgbG9nIGxldmVsCi0gICAgICAg
IHNlbGYuX3ByaW50X29uZV9saW5lX3N1bW1hcnkocmVzdWx0X3N1bW1hcnkudG90YWwsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkuZXhwZWN0ZWQpCisg
ICAgICAgIGlmIGxvZ19yZXN1bHRzOgorICAgICAgICAgICAgc2VsZi5fcHJpbnRfb25lX2xpbmVf
c3VtbWFyeShyZXN1bHRfc3VtbWFyeS50b3RhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkuZXhwZWN0ZWQpCiAKICAgICAgICAgdW5leHBl
Y3RlZF9yZXN1bHRzID0gc2VsZi5fc3VtbWFyaXplX3VuZXhwZWN0ZWRfcmVzdWx0cyhyZXN1bHRf
c3VtbWFyeSwKICAgICAgICAgICAgIHJldHJ5X3N1bW1hcnkpCkBAIC0xMzY1LDEyICsxMzY2LDE4
IEBAIGRlZiBjcmVhdGVfbG9nZ2luZ193cml0ZXIob3B0aW9ucywgbG9nX29wdGlvbik6CiAgICAg
cmV0dXJuIGxhbWJkYSBzdHI6IDEKIAogCi1kZWYgbWFpbihvcHRpb25zLCBhcmdzKToKLSAgICAi
IiJSdW4gdGhlIHRlc3RzLiAgV2lsbCBjYWxsIHN5cy5leGl0IHdoZW4gY29tcGxldGUuCisjIEZJ
WE1FOiBzaG91bGQgZmlndXJlIG91dCB3aG8gZXhwZWN0cyBtYWluKCkgdG8gY2FsbCBzeXMuZXhp
dCgpIGFuZCBtYWtlCisjIHRoZSBjYWxsZWVzIGRvIGl0IGluc3RlYWQuCitkZWYgcmVhbF9tYWlu
KG9wdGlvbnMsIGFyZ3MsIHByaW50X3Jlc3VsdHM9VHJ1ZSk6CisgICAgIiIiUnVuIHRoZSB0ZXN0
cy4KIAogICAgIEFyZ3M6CiAgICAgICBvcHRpb25zOiBhIGRpY3Rpb25hcnkgb2YgY29tbWFuZCBs
aW5lIG9wdGlvbnMKICAgICAgIGFyZ3M6IGEgbGlzdCBvZiBzdWIgZGlyZWN0b3JpZXMgb3IgZmls
ZXMgdG8gdGVzdAorICAgICAgcHJpbnRfcmVzdWx0czogd2hldGhlciBvciBub3QgdG8gbG9nIGFu
eXRoaW5nIHRvIHN0ZG91dC4KKyAgICAgICAgICBTZXQgdG8gZmFsc2UgYnkgdGhlIHVuaXQgdGVz
dHMKKyAgICBSZXR1cm5zOgorICAgICAgdGhlIG51bWJlciBvZiB1bmV4cGVjdGVkIGZhaWx1cmVz
IHRoYXQgb2NjdXJyZWQuCiAgICAgIiIiCiAKICAgICBpZiBvcHRpb25zLnNvdXJjZXM6CkBAIC0x
NTEwLDEyICsxNTE3LDI3IEBAIGRlZiBtYWluKG9wdGlvbnMsIGFyZ3MpOgogICAgICAgICBpZiBv
cHRpb25zLmZ1enp5X3BpeGVsX3Rlc3RzOgogICAgICAgICAgICAgdGVzdF9ydW5uZXIuYWRkX3Rl
c3RfdHlwZShmdXp6eV9pbWFnZV9kaWZmLkZ1enp5SW1hZ2VEaWZmKQogCi0gICAgaGFzX25ld19m
YWlsdXJlcyA9IHRlc3RfcnVubmVyLnJ1bihyZXN1bHRfc3VtbWFyeSkKKyAgICBoYXNfbmV3X2Zh
aWx1cmVzID0gdGVzdF9ydW5uZXIucnVuKHJlc3VsdF9zdW1tYXJ5LCBwcmludF9yZXN1bHRzKQog
CiAgICAgcG9ydF9vYmouc3RvcF9oZWxwZXIoKQogCiAgICAgX2xvZy5kZWJ1ZygiRXhpdCBzdGF0
dXM6ICVkIiAlIGhhc19uZXdfZmFpbHVyZXMpCi0gICAgc3lzLmV4aXQoaGFzX25ld19mYWlsdXJl
cykKKyAgICByZXR1cm4gaGFzX25ld19mYWlsdXJlcworCisKKyMgRklYTUU6IHNob3VsZCBmaWd1
cmUgb3V0IHdobyBleHBlY3RzIG1haW4oKSB0byBjYWxsIHN5cy5leGl0KCkgYW5kIG1ha2UKKyMg
dGhlIGNhbGxlZXMgZG8gaXQgaW5zdGVhZC4gU3BsaXR0aW5nIG1haW4oKSBhbmQgcmVhbF9tYWlu
KCkgaXMgYSBoYWNrLgorZGVmIG1haW4ob3B0aW9ucywgYXJncyk6CisgICAgIiIiUnVuIHRoZSB0
ZXN0cy4gV2lsbCBjYWxsIHN5cy5leGl0KCkgd2hlbiBkb25lLgorCisgICAgQXJnczoKKyAgICAg
IG9wdGlvbnM6IGEgZGljdGlvbmFyeSBvZiBjb21tYW5kIGxpbmUgb3B0aW9ucworICAgICAgYXJn
czogYSBsaXN0IG9mIHN1YiBkaXJlY3RvcmllcyBvciBmaWxlcyB0byB0ZXN0CisgICAgUmV0dXJu
czoKKyAgICAgIGRvZXNuJ3QgcmV0dXJuLgorICAgICIiIgorCisgICAgc3lzLmV4aXQocmVhbF9t
YWluKG9wdGlvbnMsIGFyZ3MpKQogCiAKIGRlZiBwYXJzZV9hcmdzKGFyZ3M9Tm9uZSk6CmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Vi
a2l0X3Rlc3RzX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4yNWQxYTUxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5w
eQpAQCAtMCwwICsxLDY3IEBACisjIS91c3IvYmluL3B5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
KyIiIlVuaXQgdGVzdHMgZm9yIHJ1bl93ZWJraXRfdGVzdHMuIiIiCisKK2ltcG9ydCBvcworaW1w
b3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CisKK3RyeToKKyAgICBkID0gb3MucGF0aC5kaXJuYW1l
KF9fZmlsZV9fKQorZXhjZXB0IE5hbWVFcnJvcjoKKyAgICBkID0gb3MucGF0aC5kaXJuYW1lKHN5
cy5hcmd2WzBdKQorCitzeXMucGF0aC5hcHBlbmQob3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9p
bihkLCAnLi4vdGhpcmRwYXJ0eScpKSkKKworZnJvbSBydW5fd2Via2l0X3Rlc3RzIGltcG9ydCAq
CisKKworZGVmIHBhc3NpbmdfcnVuKGFyZ3MpOgorICAgIG9wdGlvbnMsIGFyZ3MgPSBwYXJzZV9h
cmdzKGFyZ3MpCisgICAgcmVzID0gcmVhbF9tYWluKG9wdGlvbnMsIGFyZ3MsIEZhbHNlKQorICAg
IHJldHVybiByZXMgPT0gMAorCisKK2NsYXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
KyAgICBkZWYgdGVzdF9mYXN0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUocGFzc2lu
Z19ydW4oWyctLXBsYXRmb3JtJywgJ3Rlc3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdmYXN0L2h0bWwnXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXNzaW5n
X3J1bihbJy0tcGxhdGZvcm0nLCAndGVzdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJy0tcnVuLXNpbmdseScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ2Zhc3QvaHRtbCddKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhc3NpbmdfcnVu
KFsnLS1wbGF0Zm9ybScsICd0ZXN0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnZmFzdC9odG1sL2FydGljbGUtZWxlbWVudC5odG1sJ10pKQorICAgICAgICBzZWxmLmFz
c2VydFRydWUocGFzc2luZ19ydW4oWyctLXBsYXRmb3JtJywgJ3Rlc3QnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJy0tbnVtLXRlc3Qtc2hlbGxzJywgJzEnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWxvZycsICd1bmV4cGVjdGVkJywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFzdC9odG1sJ10pKQorCitpZiBf
X25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQo=
</data>
<flag name="review"
          id="36778"
          type_id="1"
          status="-"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="36779"
          type_id="3"
          status="-"
          setter="dpranke"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53184</attachid>
            <date>2010-04-12 13:26:49 -0700</date>
            <delta_ts>2010-04-12 16:29:15 -0700</delta_ts>
            <desc>cleaned-up patch w/ abarth&apos;s feedback</desc>
            <filename>wk37432_unit_tests.diff</filename>
            <type>text/plain</type>
            <size>7641</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBjOGRkZjZhLi4xOWM4NTcyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMDQt
MTIgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHNvbWUgdmVyeSBtaW5pbWFsIHVu
aXQgdGVzdHMgZm9yIG5ldy1ydW4td2Via2l0LXRlc3RzLiBUaGlzIHNob3VsZAorICAgICAgICBi
ZSBlbm91Z2ggdG8gY2F0Y2ggZWdyZWdpb3VzIGJyb2tlbm5lc3MgbGlrZSBzeW50YXggZXJyb3Jz
IGFuZCBpbXBvcnQKKyAgICAgICAgZGVjbGFyYXRpb24gaXNzdWVzLgorCisgICAgICAgIFVuZm9y
dHVuYXRlbHksIHRoaXMgZG9lc24ndCBhcHBlYXIgdG8gYmUgYXV0b21hdGljYWxseSBwaWNrZWQg
dXAKKyAgICAgICAgYnkgdGVzdC13ZWJraXRweSBwcm9wZXJseSBmb3IgcmVhc29ucyBJIGRvbid0
IHlldCB1bmRlcnN0YW5kLgorCisgICAgICAgIEFsc28sIGluIG9yZGVyIHRvIGdldCBpdCB0byBi
ZSByZWxhdGl2ZWx5IHNpbGVudCBhbmQgdG8gbm90IGNhbGwKKyAgICAgICAgc3lzLmV4aXQoKSBJ
IGhhZCB0byBzcGxpdCB0aGUgbWFpbiByb3V0aW5lIHVwIGEgYml0LiBUaGlzIG5lZWRzIHRvCisg
ICAgICAgIGJlIGNsZWFuZWQgdXAuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM3NDMyCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHk6IEFkZGVkLgorCiAyMDEw
LTA0LTEyICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKaW5kZXggNjAxNmU1Yy4u
NTJkNzdiMSAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CkBAIC02MDQsNyArNjA0LDcgQEAg
Y2xhc3MgVGVzdFJ1bm5lcjoKICAgICAgICAgIiIiUmV0dXJucyB3aGV0aGVyIHRoZSB0ZXN0IHJ1
bm5lciBuZWVkcyBhbiBIVFRQIHNlcnZlci4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYuX2NvbnRh
aW5zX3Rlc3RzKHNlbGYuSFRUUF9TVUJESVIpCiAKLSAgICBkZWYgcnVuKHNlbGYsIHJlc3VsdF9z
dW1tYXJ5KToKKyAgICBkZWYgcnVuKHNlbGYsIHJlc3VsdF9zdW1tYXJ5LCBwcmludF9yZXN1bHRz
KToKICAgICAgICAgIiIiUnVuIGFsbCBvdXIgdGVzdHMgb24gYWxsIG91ciB0ZXN0IGZpbGVzLgog
CiAgICAgICAgIEZvciBlYWNoIHRlc3QgZmlsZSwgd2UgcnVuIGVhY2ggdGVzdCB0eXBlLiBJZiB0
aGVyZSBhcmUgYW55IGZhaWx1cmVzLApAQCAtNjEyLDYgKzYxMiw3IEBAIGNsYXNzIFRlc3RSdW5u
ZXI6CiAKICAgICAgICAgQXJnczoKICAgICAgICAgICByZXN1bHRfc3VtbWFyeTogYSBzdW1tYXJ5
IG9iamVjdCB0cmFja2luZyB0aGUgdGVzdCByZXN1bHRzLgorICAgICAgICAgIHByaW50X3Jlc3Vs
dHM6IHdoZXRoZXIgdG8gcHJpbnQgYSBvbmUtbGluZSBzdW1tYXJ5IG9uIHN0ZG91dAogCiAgICAg
ICAgIFJldHVybjoKICAgICAgICAgICBXZSByZXR1cm4gbm9uemVybyBpZiB0aGVyZSBhcmUgcmVn
cmVzc2lvbnMgY29tcGFyZWQgdG8gdGhlIGxhc3QgcnVuLgpAQCAtNjY3LDE0ICs2NjgsMTUgQEAg
Y2xhc3MgVGVzdFJ1bm5lcjoKICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCiAgICAgICAgIHN5
cy5zdGRlcnIuZmx1c2goKQogCi0gICAgICAgIGlmIChMT0dfREVUQUlMRURfUFJPR1JFU1MgaW4g
c2VsZi5fb3B0aW9ucy5sb2cgb3IKLSAgICAgICAgICAgIChMT0dfVU5FWFBFQ1RFRCBpbiBzZWxm
Ll9vcHRpb25zLmxvZyBhbmQKLSAgICAgICAgICAgICByZXN1bHRfc3VtbWFyeS50b3RhbCAhPSBy
ZXN1bHRfc3VtbWFyeS5leHBlY3RlZCkpOgotICAgICAgICAgICAgcHJpbnQKLQotICAgICAgICAj
IFRoaXMgc3VtbWFyeSBkYXRhIGdldHMgd3JpdHRlbiB0byBzdGRvdXQgcmVnYXJkbGVzcyBvZiBs
b2cgbGV2ZWwKLSAgICAgICAgc2VsZi5fcHJpbnRfb25lX2xpbmVfc3VtbWFyeShyZXN1bHRfc3Vt
bWFyeS50b3RhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRfc3Vt
bWFyeS5leHBlY3RlZCkKKyAgICAgICAgIyBTdW1tYXJ5IGRhdGEgZ2V0cyB3cml0dGVuIHRvIHN0
ZG91dCByZWdhcmRsZXNzIG9mIGxvZyBsZXZlbAorICAgICAgICAjICh1bmxlc3Mgd2UncmUgbm90
IHByaW50aW5nIGFueXRoaW5nIGF0IGFsbCkuCisgICAgICAgIGlmIHByaW50X3Jlc3VsdHM6Cisg
ICAgICAgICAgICBpZiAoTE9HX0RFVEFJTEVEX1BST0dSRVNTIGluIHNlbGYuX29wdGlvbnMubG9n
IG9yCisgICAgICAgICAgICAgICAgKExPR19VTkVYUEVDVEVEIGluIHNlbGYuX29wdGlvbnMubG9n
IGFuZAorICAgICAgICAgICAgICAgICByZXN1bHRfc3VtbWFyeS50b3RhbCAhPSByZXN1bHRfc3Vt
bWFyeS5leHBlY3RlZCkpOgorICAgICAgICAgICAgICAgIHByaW50CisgICAgICAgICAgICBzZWxm
Ll9wcmludF9vbmVfbGluZV9zdW1tYXJ5KHJlc3VsdF9zdW1tYXJ5LnRvdGFsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRfc3VtbWFyeS5leHBlY3RlZCkK
IAogICAgICAgICB1bmV4cGVjdGVkX3Jlc3VsdHMgPSBzZWxmLl9zdW1tYXJpemVfdW5leHBlY3Rl
ZF9yZXN1bHRzKHJlc3VsdF9zdW1tYXJ5LAogICAgICAgICAgICAgcmV0cnlfc3VtbWFyeSkKQEAg
LTEzNjcsMTIgKzEzNjksMTggQEAgZGVmIGNyZWF0ZV9sb2dnaW5nX3dyaXRlcihvcHRpb25zLCBs
b2dfb3B0aW9uKToKICAgICByZXR1cm4gbGFtYmRhIHN0cjogMQogCiAKLWRlZiBtYWluKG9wdGlv
bnMsIGFyZ3MpOgotICAgICIiIlJ1biB0aGUgdGVzdHMuICBXaWxsIGNhbGwgc3lzLmV4aXQgd2hl
biBjb21wbGV0ZS4KKyMgRklYTUU6IFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Mzc0NjQuCisjIFRoaXMgaXMgYSBoYWNrIHRvIGdldCBhcm91bmQgdGhlIGZhY3Qg
dGhhdCBtYWluKCkgY2FsbHMgc3lzLmV4aXQKK2RlZiByZWFsX21haW4ob3B0aW9ucywgYXJncywg
cHJpbnRfcmVzdWx0cz1UcnVlKToKKyAgICAiIiJSdW4gdGhlIHRlc3RzLgogCiAgICAgQXJnczoK
ICAgICAgIG9wdGlvbnM6IGEgZGljdGlvbmFyeSBvZiBjb21tYW5kIGxpbmUgb3B0aW9ucwogICAg
ICAgYXJnczogYSBsaXN0IG9mIHN1YiBkaXJlY3RvcmllcyBvciBmaWxlcyB0byB0ZXN0CisgICAg
ICBwcmludF9yZXN1bHRzOiB3aGV0aGVyIG9yIG5vdCB0byBsb2cgYW55dGhpbmcgdG8gc3Rkb3V0
LgorICAgICAgICAgIFNldCB0byBmYWxzZSBieSB0aGUgdW5pdCB0ZXN0cworICAgIFJldHVybnM6
CisgICAgICB0aGUgbnVtYmVyIG9mIHVuZXhwZWN0ZWQgZmFpbHVyZXMgdGhhdCBvY2N1cnJlZC4K
ICAgICAiIiIKIAogICAgIGlmIG9wdGlvbnMuc291cmNlczoKQEAgLTE1MTMsMTIgKzE1MjEsMjYg
QEAgZGVmIG1haW4ob3B0aW9ucywgYXJncyk6CiAgICAgICAgIGlmIG9wdGlvbnMuZnV6enlfcGl4
ZWxfdGVzdHM6CiAgICAgICAgICAgICB0ZXN0X3J1bm5lci5hZGRfdGVzdF90eXBlKGZ1enp5X2lt
YWdlX2RpZmYuRnV6enlJbWFnZURpZmYpCiAKLSAgICBoYXNfbmV3X2ZhaWx1cmVzID0gdGVzdF9y
dW5uZXIucnVuKHJlc3VsdF9zdW1tYXJ5KQorICAgIGhhc19uZXdfZmFpbHVyZXMgPSB0ZXN0X3J1
bm5lci5ydW4ocmVzdWx0X3N1bW1hcnksIHByaW50X3Jlc3VsdHMpCiAKICAgICBwb3J0X29iai5z
dG9wX2hlbHBlcigpCiAKICAgICBfbG9nLmRlYnVnKCJFeGl0IHN0YXR1czogJWQiICUgaGFzX25l
d19mYWlsdXJlcykKLSAgICBzeXMuZXhpdChoYXNfbmV3X2ZhaWx1cmVzKQorICAgIHJldHVybiBo
YXNfbmV3X2ZhaWx1cmVzCisKKworIyBGSVhNRTogU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zNzQ2NC4KKyMgVGhpcyBuZWVkcyB0byBub3QgY2FsbCBzeXMuZXhp
dCgpCitkZWYgbWFpbihvcHRpb25zLCBhcmdzKToKKyAgICAiIiJSdW4gdGhlIHRlc3RzLiBXaWxs
IGNhbGwgc3lzLmV4aXQoKSB3aGVuIGRvbmUuCisKKyAgICBBcmdzOgorICAgICAgb3B0aW9uczog
YSBkaWN0aW9uYXJ5IG9mIGNvbW1hbmQgbGluZSBvcHRpb25zCisgICAgICBhcmdzOiBhIGxpc3Qg
b2Ygc3ViIGRpcmVjdG9yaWVzIG9yIGZpbGVzIHRvIHRlc3QKKyAgICBSZXR1cm5zOgorICAgICAg
ZG9lc24ndCByZXR1cm4uCisgICAgIiIiCisgICAgc3lzLmV4aXQocmVhbF9tYWluKG9wdGlvbnMs
IGFyZ3MpKQogCiAKIGRlZiBwYXJzZV9hcmdzKGFyZ3M9Tm9uZSk6CmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3Vu
aXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVu
X3dlYmtpdF90ZXN0c191bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5iMmNjYjY4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5weQpAQCAtMCwwICsx
LDYwIEBACisjIS91c3IvYmluL3B5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisj
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlVuaXQgdGVz
dHMgZm9yIHJ1bl93ZWJraXRfdGVzdHMuIiIiCisKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1w
b3J0IHVuaXR0ZXN0CisKK2ltcG9ydCBydW5fd2Via2l0X3Rlc3RzCisKKworZGVmIHBhc3Npbmdf
cnVuKGFyZ3MpOgorICAgIG9wdGlvbnMsIGFyZ3MgPSBydW5fd2Via2l0X3Rlc3RzLnBhcnNlX2Fy
Z3MoYXJncykKKyAgICByZXMgPSBydW5fd2Via2l0X3Rlc3RzLnJlYWxfbWFpbihvcHRpb25zLCBh
cmdzLCBGYWxzZSkKKyAgICByZXR1cm4gcmVzID09IDAKKworCitjbGFzcyBNYWluVGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfZmFzdChzZWxmKToKKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHBhc3NpbmdfcnVuKFsnLS1wbGF0Zm9ybScsICd0ZXN0JywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFzdC9odG1sJ10pKQorICAgICAgICBzZWxmLmFz
c2VydFRydWUocGFzc2luZ19ydW4oWyctLXBsYXRmb3JtJywgJ3Rlc3QnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICctLXJ1bi1zaW5nbHknLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdmYXN0L2h0bWwnXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShwYXNzaW5nX3J1bihbJy0tcGxhdGZvcm0nLCAndGVzdCcsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ2Zhc3QvaHRtbC9hcnRpY2xlLWVsZW1lbnQuaHRtbCddKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhc3NpbmdfcnVuKFsnLS1wbGF0Zm9ybScsICd0ZXN0
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWNoaWxkLXByb2Nlc3Nl
cycsICcxJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1sb2cnLCAn
dW5leHBlY3RlZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zhc3Qv
aHRtbCddKSkKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWlu
KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53193</attachid>
            <date>2010-04-12 16:29:15 -0700</date>
            <delta_ts>2010-04-12 16:30:29 -0700</delta_ts>
            <desc>revised patch - merged in changes from 37464</desc>
            <filename>wk37432_unit_tests.diff</filename>
            <type>text/plain</type>
            <size>6911</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA0YTBhZDcxLi4wOWUxNGI2IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjUgQEAKIDIwMTAtMDQt
MTIgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHNvbWUgdmVyeSBtaW5pbWFsIHVu
aXQgdGVzdHMgZm9yIG5ldy1ydW4td2Via2l0LXRlc3RzLiBUaGlzIHNob3VsZAorICAgICAgICBi
ZSBlbm91Z2ggdG8gY2F0Y2ggZWdyZWdpb3VzIGJyb2tlbm5lc3MgbGlrZSBzeW50YXggZXJyb3Jz
IGFuZCBpbXBvcnQKKyAgICAgICAgZGVjbGFyYXRpb24gaXNzdWVzLgorCisgICAgICAgIFVuZm9y
dHVuYXRlbHksIHRoaXMgZG9lc24ndCBhcHBlYXIgdG8gYmUgYXV0b21hdGljYWxseSBwaWNrZWQg
dXAKKyAgICAgICAgYnkgdGVzdC13ZWJraXRweSBwcm9wZXJseSBmb3IgcmVhc29ucyBJIGRvbid0
IHlldCB1bmRlcnN0YW5kLgorCisgICAgICAgIEFsc28sIGluIG9yZGVyIHRvIGdldCBpdCB0byBi
ZSByZWxhdGl2ZWx5IHNpbGVudCBhbmQgdG8gbm90IGNhbGwKKyAgICAgICAgc3lzLmV4aXQoKSBJ
IGhhZCB0byBzcGxpdCB0aGUgbWFpbiByb3V0aW5lIHVwIGEgYml0LiBUaGlzIG5lZWRzIHRvCisg
ICAgICAgIGJlIGNsZWFuZWQgdXAuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM3NDMyCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHk6IEFkZGVkLgorCisyMDEw
LTA0LTEyICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFJl
dmlld2VkIGJ5IEVyaWMgU2VpZGVsLgogCiAgICAgICAgIE1vZGlmeSBydW5fd2Via2l0X3Rlc3Rz
LnB5IHRvIG5vdCBjYWxsIHN5cy5leGl0KCkgYXQgdGhlIGVuZCBvZiB0ZXN0CmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rl
c3RzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dl
YmtpdF90ZXN0cy5weQppbmRleCA5NjkyZmYyLi5kNmU1OTBhIDEwMDc1NQotLS0gYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5Cisr
KyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRf
dGVzdHMucHkKQEAgLTYwNCw3ICs2MDQsNyBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAgICAgICAi
IiJSZXR1cm5zIHdoZXRoZXIgdGhlIHRlc3QgcnVubmVyIG5lZWRzIGFuIEhUVFAgc2VydmVyLiIi
IgogICAgICAgICByZXR1cm4gc2VsZi5fY29udGFpbnNfdGVzdHMoc2VsZi5IVFRQX1NVQkRJUikK
IAotICAgIGRlZiBydW4oc2VsZiwgcmVzdWx0X3N1bW1hcnkpOgorICAgIGRlZiBydW4oc2VsZiwg
cmVzdWx0X3N1bW1hcnksIHByaW50X3Jlc3VsdHMpOgogICAgICAgICAiIiJSdW4gYWxsIG91ciB0
ZXN0cyBvbiBhbGwgb3VyIHRlc3QgZmlsZXMuCiAKICAgICAgICAgRm9yIGVhY2ggdGVzdCBmaWxl
LCB3ZSBydW4gZWFjaCB0ZXN0IHR5cGUuIElmIHRoZXJlIGFyZSBhbnkgZmFpbHVyZXMsCkBAIC02
MTIsNiArNjEyLDcgQEAgY2xhc3MgVGVzdFJ1bm5lcjoKIAogICAgICAgICBBcmdzOgogICAgICAg
ICAgIHJlc3VsdF9zdW1tYXJ5OiBhIHN1bW1hcnkgb2JqZWN0IHRyYWNraW5nIHRoZSB0ZXN0IHJl
c3VsdHMuCisgICAgICAgICAgcHJpbnRfcmVzdWx0czogd2hldGhlciBvciBub3QgdG8gcHJpbnQg
dGhlIHN1bW1hcnkgYXQgdGhlIGVuZAogCiAgICAgICAgIFJldHVybjoKICAgICAgICAgICBUaGUg
bnVtYmVyIG9mIHVuZXhwZWN0ZWQgcmVzdWx0cyAoMCA9PSBzdWNjZXNzKQpAQCAtNjY3LDE0ICs2
NjgsMTUgQEAgY2xhc3MgVGVzdFJ1bm5lcjoKICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCiAg
ICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQogCi0gICAgICAgIGlmIChMT0dfREVUQUlMRURfUFJP
R1JFU1MgaW4gc2VsZi5fb3B0aW9ucy5sb2cgb3IKLSAgICAgICAgICAgIChMT0dfVU5FWFBFQ1RF
RCBpbiBzZWxmLl9vcHRpb25zLmxvZyBhbmQKLSAgICAgICAgICAgICByZXN1bHRfc3VtbWFyeS50
b3RhbCAhPSByZXN1bHRfc3VtbWFyeS5leHBlY3RlZCkpOgotICAgICAgICAgICAgcHJpbnQKLQog
ICAgICAgICAjIFRoaXMgc3VtbWFyeSBkYXRhIGdldHMgd3JpdHRlbiB0byBzdGRvdXQgcmVnYXJk
bGVzcyBvZiBsb2cgbGV2ZWwKLSAgICAgICAgc2VsZi5fcHJpbnRfb25lX2xpbmVfc3VtbWFyeShy
ZXN1bHRfc3VtbWFyeS50b3RhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXN1bHRfc3VtbWFyeS5leHBlY3RlZCkKKyAgICAgICAgIyAodW5sZXNzIG9mIGNvdXJzZSB3ZSdy
ZSBwcmludGluZyBub3RoaW5nKS4KKyAgICAgICAgaWYgcHJpbnRfcmVzdWx0czoKKyAgICAgICAg
ICAgIGlmIChMT0dfREVUQUlMRURfUFJPR1JFU1MgaW4gc2VsZi5fb3B0aW9ucy5sb2cgb3IKKyAg
ICAgICAgICAgICAgICAoTE9HX1VORVhQRUNURUQgaW4gc2VsZi5fb3B0aW9ucy5sb2cgYW5kCisg
ICAgICAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5LnRvdGFsICE9IHJlc3VsdF9zdW1tYXJ5LmV4
cGVjdGVkKSk6CisgICAgICAgICAgICAgICAgcHJpbnQKKyAgICAgICAgICAgIHNlbGYuX3ByaW50
X29uZV9saW5lX3N1bW1hcnkocmVzdWx0X3N1bW1hcnkudG90YWwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5LmV4cGVjdGVkKQogCiAgICAg
ICAgIHVuZXhwZWN0ZWRfcmVzdWx0cyA9IHNlbGYuX3N1bW1hcml6ZV91bmV4cGVjdGVkX3Jlc3Vs
dHMocmVzdWx0X3N1bW1hcnksCiAgICAgICAgICAgICByZXRyeV9zdW1tYXJ5KQpAQCAtMTM2Nywx
MiArMTM2OSwxNCBAQCBkZWYgY3JlYXRlX2xvZ2dpbmdfd3JpdGVyKG9wdGlvbnMsIGxvZ19vcHRp
b24pOgogICAgIHJldHVybiBsYW1iZGEgc3RyOiAxCiAKIAotZGVmIG1haW4ob3B0aW9ucywgYXJn
cyk6CitkZWYgbWFpbihvcHRpb25zLCBhcmdzLCBwcmludF9yZXN1bHRzPVRydWUpOgogICAgICIi
IlJ1biB0aGUgdGVzdHMuCiAKICAgICBBcmdzOgogICAgICAgb3B0aW9uczogYSBkaWN0aW9uYXJ5
IG9mIGNvbW1hbmQgbGluZSBvcHRpb25zCiAgICAgICBhcmdzOiBhIGxpc3Qgb2Ygc3ViIGRpcmVj
dG9yaWVzIG9yIGZpbGVzIHRvIHRlc3QKKyAgICAgIHByaW50X3Jlc3VsdHM6IHdoZXRoZXIgb3Ig
bm90IHRvIGxvZyBhbnl0aGluZyB0byBzdGRvdXQuCisgICAgICAgICAgU2V0IHRvIGZhbHNlIGJ5
IHRoZSB1bml0IHRlc3RzCiAgICAgUmV0dXJuczoKICAgICAgIHRoZSBudW1iZXIgb2YgdW5leHBl
Y3RlZCByZXN1bHRzIHRoYXQgb2NjdXJyZWQsIG9yIC0xIGlmIHRoZXJlIGlzIGFuCiAgICAgICAg
ICAgZXJyb3IuCkBAIC0xNTE2LDcgKzE1MjAsNyBAQCBkZWYgbWFpbihvcHRpb25zLCBhcmdzKToK
ICAgICAgICAgaWYgb3B0aW9ucy5mdXp6eV9waXhlbF90ZXN0czoKICAgICAgICAgICAgIHRlc3Rf
cnVubmVyLmFkZF90ZXN0X3R5cGUoZnV6enlfaW1hZ2VfZGlmZi5GdXp6eUltYWdlRGlmZikKIAot
ICAgIG51bV91bmV4cGVjdGVkX3Jlc3VsdHMgPSB0ZXN0X3J1bm5lci5ydW4ocmVzdWx0X3N1bW1h
cnkpCisgICAgbnVtX3VuZXhwZWN0ZWRfcmVzdWx0cyA9IHRlc3RfcnVubmVyLnJ1bihyZXN1bHRf
c3VtbWFyeSwgcHJpbnRfcmVzdWx0cykKIAogICAgIHBvcnRfb2JqLnN0b3BfaGVscGVyKCkKIApk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVu
X3dlYmtpdF90ZXN0c191bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uYzEzOThlNAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRl
c3QucHkKQEAgLTAsMCArMSw2MCBAQAorIyEvdXNyL2Jpbi9weXRob24KKyMgQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMg
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisj
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCisiIiJVbml0IHRlc3RzIGZvciBydW5fd2Via2l0X3Rlc3RzLiIiIgorCitpbXBvcnQgb3MK
K2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAorCitpbXBvcnQgcnVuX3dlYmtpdF90ZXN0cwor
CisKK2RlZiBwYXNzaW5nX3J1bihhcmdzKToKKyAgICBvcHRpb25zLCBhcmdzID0gcnVuX3dlYmtp
dF90ZXN0cy5wYXJzZV9hcmdzKGFyZ3MpCisgICAgcmVzID0gcnVuX3dlYmtpdF90ZXN0cy5tYWlu
KG9wdGlvbnMsIGFyZ3MsIEZhbHNlKQorICAgIHJldHVybiByZXMgPT0gMAorCisKK2NsYXNzIE1h
aW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9mYXN0KHNlbGYpOgorICAg
ICAgICBzZWxmLmFzc2VydFRydWUocGFzc2luZ19ydW4oWyctLXBsYXRmb3JtJywgJ3Rlc3QnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmYXN0L2h0bWwnXSkpCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXNzaW5nX3J1bihbJy0tcGxhdGZvcm0nLCAndGVzdCcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tcnVuLXNpbmdseScsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zhc3QvaHRtbCddKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKHBhc3NpbmdfcnVuKFsnLS1wbGF0Zm9ybScsICd0ZXN0JywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFzdC9odG1sL2FydGljbGUtZWxlbWVu
dC5odG1sJ10pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocGFzc2luZ19ydW4oWyctLXBsYXRm
b3JtJywgJ3Rlc3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tY2hp
bGQtcHJvY2Vzc2VzJywgJzEnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICctLWxvZycsICd1bmV4cGVjdGVkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnZmFzdC9odG1sJ10pKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVu
aXR0ZXN0Lm1haW4oKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53195</attachid>
            <date>2010-04-12 16:30:29 -0700</date>
            <delta_ts>2010-04-14 08:19:54 -0700</delta_ts>
            <desc>update Changelog</desc>
            <filename>wk37432_unit_tests.diff</filename>
            <type>text/plain</type>
            <size>6588</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA0YTBhZDcxLi43ODFhNDZmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTggQEAKIDIwMTAtMDQt
MTIgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHNvbWUgdmVyeSBtaW5pbWFsIHVu
aXQgdGVzdHMgZm9yIG5ldy1ydW4td2Via2l0LXRlc3RzLiBUaGlzIHNob3VsZAorICAgICAgICBi
ZSBlbm91Z2ggdG8gY2F0Y2ggZWdyZWdpb3VzIGJyb2tlbm5lc3MgbGlrZSBzeW50YXggZXJyb3Jz
IGFuZCBpbXBvcnQKKyAgICAgICAgZGVjbGFyYXRpb24gaXNzdWVzLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzQzMgorCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0
LnB5OiBBZGRlZC4KKworMjAxMC0wNC0xMiAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVt
Lm9yZz4KKwogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KIAogICAgICAgICBNb2Rp
ZnkgcnVuX3dlYmtpdF90ZXN0cy5weSB0byBub3QgY2FsbCBzeXMuZXhpdCgpIGF0IHRoZSBlbmQg
b2YgdGVzdApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKaW5kZXggOTY5MmZmMi4uZDZlNTkwYSAx
MDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVu
X3dlYmtpdF90ZXN0cy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CkBAIC02MDQsNyArNjA0LDcgQEAgY2xhc3MgVGVz
dFJ1bm5lcjoKICAgICAgICAgIiIiUmV0dXJucyB3aGV0aGVyIHRoZSB0ZXN0IHJ1bm5lciBuZWVk
cyBhbiBIVFRQIHNlcnZlci4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYuX2NvbnRhaW5zX3Rlc3Rz
KHNlbGYuSFRUUF9TVUJESVIpCiAKLSAgICBkZWYgcnVuKHNlbGYsIHJlc3VsdF9zdW1tYXJ5KToK
KyAgICBkZWYgcnVuKHNlbGYsIHJlc3VsdF9zdW1tYXJ5LCBwcmludF9yZXN1bHRzKToKICAgICAg
ICAgIiIiUnVuIGFsbCBvdXIgdGVzdHMgb24gYWxsIG91ciB0ZXN0IGZpbGVzLgogCiAgICAgICAg
IEZvciBlYWNoIHRlc3QgZmlsZSwgd2UgcnVuIGVhY2ggdGVzdCB0eXBlLiBJZiB0aGVyZSBhcmUg
YW55IGZhaWx1cmVzLApAQCAtNjEyLDYgKzYxMiw3IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAKICAg
ICAgICAgQXJnczoKICAgICAgICAgICByZXN1bHRfc3VtbWFyeTogYSBzdW1tYXJ5IG9iamVjdCB0
cmFja2luZyB0aGUgdGVzdCByZXN1bHRzLgorICAgICAgICAgIHByaW50X3Jlc3VsdHM6IHdoZXRo
ZXIgb3Igbm90IHRvIHByaW50IHRoZSBzdW1tYXJ5IGF0IHRoZSBlbmQKIAogICAgICAgICBSZXR1
cm46CiAgICAgICAgICAgVGhlIG51bWJlciBvZiB1bmV4cGVjdGVkIHJlc3VsdHMgKDAgPT0gc3Vj
Y2VzcykKQEAgLTY2NywxNCArNjY4LDE1IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgIHN5
cy5zdGRvdXQuZmx1c2goKQogICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKIAotICAgICAgICBp
ZiAoTE9HX0RFVEFJTEVEX1BST0dSRVNTIGluIHNlbGYuX29wdGlvbnMubG9nIG9yCi0gICAgICAg
ICAgICAoTE9HX1VORVhQRUNURUQgaW4gc2VsZi5fb3B0aW9ucy5sb2cgYW5kCi0gICAgICAgICAg
ICAgcmVzdWx0X3N1bW1hcnkudG90YWwgIT0gcmVzdWx0X3N1bW1hcnkuZXhwZWN0ZWQpKToKLSAg
ICAgICAgICAgIHByaW50Ci0KICAgICAgICAgIyBUaGlzIHN1bW1hcnkgZGF0YSBnZXRzIHdyaXR0
ZW4gdG8gc3Rkb3V0IHJlZ2FyZGxlc3Mgb2YgbG9nIGxldmVsCi0gICAgICAgIHNlbGYuX3ByaW50
X29uZV9saW5lX3N1bW1hcnkocmVzdWx0X3N1bW1hcnkudG90YWwsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkuZXhwZWN0ZWQpCisgICAgICAgICMgKHVu
bGVzcyBvZiBjb3Vyc2Ugd2UncmUgcHJpbnRpbmcgbm90aGluZykuCisgICAgICAgIGlmIHByaW50
X3Jlc3VsdHM6CisgICAgICAgICAgICBpZiAoTE9HX0RFVEFJTEVEX1BST0dSRVNTIGluIHNlbGYu
X29wdGlvbnMubG9nIG9yCisgICAgICAgICAgICAgICAgKExPR19VTkVYUEVDVEVEIGluIHNlbGYu
X29wdGlvbnMubG9nIGFuZAorICAgICAgICAgICAgICAgICByZXN1bHRfc3VtbWFyeS50b3RhbCAh
PSByZXN1bHRfc3VtbWFyeS5leHBlY3RlZCkpOgorICAgICAgICAgICAgICAgIHByaW50CisgICAg
ICAgICAgICBzZWxmLl9wcmludF9vbmVfbGluZV9zdW1tYXJ5KHJlc3VsdF9zdW1tYXJ5LnRvdGFs
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRfc3VtbWFy
eS5leHBlY3RlZCkKIAogICAgICAgICB1bmV4cGVjdGVkX3Jlc3VsdHMgPSBzZWxmLl9zdW1tYXJp
emVfdW5leHBlY3RlZF9yZXN1bHRzKHJlc3VsdF9zdW1tYXJ5LAogICAgICAgICAgICAgcmV0cnlf
c3VtbWFyeSkKQEAgLTEzNjcsMTIgKzEzNjksMTQgQEAgZGVmIGNyZWF0ZV9sb2dnaW5nX3dyaXRl
cihvcHRpb25zLCBsb2dfb3B0aW9uKToKICAgICByZXR1cm4gbGFtYmRhIHN0cjogMQogCiAKLWRl
ZiBtYWluKG9wdGlvbnMsIGFyZ3MpOgorZGVmIG1haW4ob3B0aW9ucywgYXJncywgcHJpbnRfcmVz
dWx0cz1UcnVlKToKICAgICAiIiJSdW4gdGhlIHRlc3RzLgogCiAgICAgQXJnczoKICAgICAgIG9w
dGlvbnM6IGEgZGljdGlvbmFyeSBvZiBjb21tYW5kIGxpbmUgb3B0aW9ucwogICAgICAgYXJnczog
YSBsaXN0IG9mIHN1YiBkaXJlY3RvcmllcyBvciBmaWxlcyB0byB0ZXN0CisgICAgICBwcmludF9y
ZXN1bHRzOiB3aGV0aGVyIG9yIG5vdCB0byBsb2cgYW55dGhpbmcgdG8gc3Rkb3V0LgorICAgICAg
ICAgIFNldCB0byBmYWxzZSBieSB0aGUgdW5pdCB0ZXN0cwogICAgIFJldHVybnM6CiAgICAgICB0
aGUgbnVtYmVyIG9mIHVuZXhwZWN0ZWQgcmVzdWx0cyB0aGF0IG9jY3VycmVkLCBvciAtMSBpZiB0
aGVyZSBpcyBhbgogICAgICAgICAgIGVycm9yLgpAQCAtMTUxNiw3ICsxNTIwLDcgQEAgZGVmIG1h
aW4ob3B0aW9ucywgYXJncyk6CiAgICAgICAgIGlmIG9wdGlvbnMuZnV6enlfcGl4ZWxfdGVzdHM6
CiAgICAgICAgICAgICB0ZXN0X3J1bm5lci5hZGRfdGVzdF90eXBlKGZ1enp5X2ltYWdlX2RpZmYu
RnV6enlJbWFnZURpZmYpCiAKLSAgICBudW1fdW5leHBlY3RlZF9yZXN1bHRzID0gdGVzdF9ydW5u
ZXIucnVuKHJlc3VsdF9zdW1tYXJ5KQorICAgIG51bV91bmV4cGVjdGVkX3Jlc3VsdHMgPSB0ZXN0
X3J1bm5lci5ydW4ocmVzdWx0X3N1bW1hcnksIHByaW50X3Jlc3VsdHMpCiAKICAgICBwb3J0X29i
ai5zdG9wX2hlbHBlcigpCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxMzk4ZTQKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5f
d2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsNjAgQEAKKyMhL3Vzci9iaW4vcHl0
aG9uCisjIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0
aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiVW5pdCB0ZXN0cyBmb3IgcnVuX3dlYmtpdF90ZXN0
cy4iIiIKKworaW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKKworaW1wb3J0
IHJ1bl93ZWJraXRfdGVzdHMKKworCitkZWYgcGFzc2luZ19ydW4oYXJncyk6CisgICAgb3B0aW9u
cywgYXJncyA9IHJ1bl93ZWJraXRfdGVzdHMucGFyc2VfYXJncyhhcmdzKQorICAgIHJlcyA9IHJ1
bl93ZWJraXRfdGVzdHMubWFpbihvcHRpb25zLCBhcmdzLCBGYWxzZSkKKyAgICByZXR1cm4gcmVz
ID09IDAKKworCitjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRl
c3RfZmFzdChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhc3NpbmdfcnVuKFsnLS1w
bGF0Zm9ybScsICd0ZXN0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
ZmFzdC9odG1sJ10pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocGFzc2luZ19ydW4oWyctLXBs
YXRmb3JtJywgJ3Rlc3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICct
LXJ1bi1zaW5nbHknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmYXN0
L2h0bWwnXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXNzaW5nX3J1bihbJy0tcGxhdGZv
cm0nLCAndGVzdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zhc3Qv
aHRtbC9hcnRpY2xlLWVsZW1lbnQuaHRtbCddKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBh
c3NpbmdfcnVuKFsnLS1wbGF0Zm9ybScsICd0ZXN0JywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICctLWNoaWxkLXByb2Nlc3NlcycsICcxJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnLS1sb2cnLCAndW5leHBlY3RlZCcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2Zhc3QvaHRtbCddKSkKKworaWYgX19uYW1lX18gPT0g
J19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkK
</data>
<flag name="review"
          id="36845"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>