#1922 closed defect (fixed)

Test of html Encoding After GET Fails

Reported by: Zancas Owned by: mk.fg
Priority: normal Milestone: 1.10.0
Component: code-frontend-web Version: 1.9.2
Keywords: wui html test Cc:
Launchpad Bug:

Description

I cloned from:

https://github.com/tahoe-lafs/tahoe-lafs.git

I installed into a virtualenv with:

python ./setup.py install

I initially observed this failure when I ran:

python ./setup.py test

I subsequently replicated it with:

trial allmydata.test.test_web.Web.test_GET_DIRECTORY_html_filenode_encoding

When I used the version of tahoe installed in the above description I was able to up and download an immutable file.

VERSION:

>tahoe --version
allmydata-tahoe: 1.9.0.post299
foolscap: 0.6.4
pycryptopp: 0.6.0.1206569328141510525648634803928199668821045408958
zfec: 1.4.24
Twisted: 12.3.0
Nevow: 0.10.0
zope.interface: unknown
python: 2.7.3
platform: Linux-Ubuntu_12.04-i686-32bit_ELF
pyOpenSSL: 0.13
simplejson: 3.0.7
pycrypto: 2.6
pyasn1: 0.1.6
mock: 1.0.1
setuptools: 0.6 [distribute]

TEST RESULT:

allmydata.test.test_web
  Web
    test_GET_DIRECTORY_html_filenode_encoding ...                        [FAIL]

===============================================================================
[FAIL]
Traceback (most recent call last):
  File "/home/arc/tpsrc/tahoe_env/local/lib/python2.7/site-packages/allmydata/test/test_web.py", line 1469, in _check
    self.failUnlessIn('value="' + self._htmlname_escaped_attr + '"', html)
  File "/home/arc/tpsrc/tahoe_env/local/lib/python2.7/site-packages/twisted/trial/_synctest.py", line 416, in assertIn
    % (containee, container))
twisted.trial.unittest.FailTest: 'value="&lt;&amp;weirdly\'named"file&gt;&gt;&gt;_&lt;iframe /&gt;.txt"' not in '<html><head>\n  <title>Tahoe-LAFS - Directory SI=cumsn (modifiable)</title>\n  <link href="/tahoe.css" type="text/css" rel="stylesheet" />\n  <link href="/icon.png" rel="shortcut icon" />\n  <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />\n</head><body class="tahoe-directory-page">\n\n<h1>Tahoe-LAFS Directory SI=<span class="data-chars">cumsn</span></h1>\n\n<div class="toolbar">\n  <div class="toolbar-item"><a href="../../..">Return to Welcome page</a></div>\n  <div class="toolbar-item"><a href=".">Refresh</a></div>\n\n  <div class="toolbar-item"><a href="?t=info">More info on this directory</a></div>\n  <div class="toolbar-item"><a href="../../../uri/URI%3ADIR2-RO%3Abqf6cqeu6fuputicebbt724ijm%3Aha6leiv54ee45xu6lrwkjiuewdo2ynxbtlmaizoj3q6c47s2vvpa/">Read-Only Version</a></div>\n</div>\n\n<div>\n  <table class="tahoe-directory"><tr>\n      <th>Type</th>\n      <th>Filename</th>\n      <th>Size</th>\n      <th>Times</th>\n      <th></th>\n      <th></th>\n      <th></th>\n    </tr><tr>\n      <td>FILE</td>\n      <td><a href="../../../file/URI%3ACHK%3A4v2o4utxm6ddbpv6tgd6blfdnu%3Ab2vzclz5kxwagmlwvlaejh7t5gsr4c4gmsfcvw7o3xme6vfp277q%3A3%3A10%3A19/@@named=/%3C%26weirdly%27named%22file%3E%3E%3E_%3Ciframe%20%2F%3E.txt">&lt;&amp;weirdly\'named"file&gt;&gt;&gt;_&lt;iframe /&gt;.txt</a></td>\n      <td align="right">19</td>\n      <td>lcr: 2013-02-20_21:53:11.807217<br />lmo: 2013-02-20_21:53:11.807217</td>\n      <td><form action="../../../uri/URI%3ADIR2%3Adcmuzbsk4rgpnnfgv5ibwsdi7u%3Aha6leiv54ee45xu6lrwkjiuewdo2ynxbtlmaizoj3q6c47s2vvpa/" method="post"><input type="hidden" name="t" value="unlink" /><input type="hidden" name="name" value="&lt;&amp;weirdly\'named&quot;file&gt;&gt;&gt;_&lt;iframe /&gt;.txt" /><input type="hidden" name="when_done" value="." /><input type="submit" name="unlink" value="unlink" /></form></td>\n      <td><form action="../../../uri/URI%3ADIR2%3Adcmuzbsk4rgpnnfgv5ibwsdi7u%3Aha6leiv54ee45xu6lrwkjiuewdo2ynxbtlmaizoj3q6c47s2vvpa/" method="get"><input type="hidden" name="t" value="rename-form" /><input type="hidden" name="name" value="&lt;&amp;weirdly\'named&quot;file&gt;&gt;&gt;_&lt;iframe /&gt;.txt" /><input type="hidden" name="when_done" value="." /><input type="submit" name="rename" value="rename/move" /></form></td>\n      <td><a href="../../../uri/URI%3ACHK%3A4v2o4utxm6ddbpv6tgd6blfdnu%3Ab2vzclz5kxwagmlwvlaejh7t5gsr4c4gmsfcvw7o3xme6vfp277q%3A3%3A10%3A19?t=info">More Info</a></td>\n    </tr><tr>\n      <td>FILE</td>\n      <td><a href="../../../file/URI%3ACHK%3Abbaor23xin5kytzqr6tmz2cciq%3A2gxbmfaavpwtwrhviujoptvfivh7iu474vjr6bmjwnz2ysxsuoia%3A3%3A10%3A19/@@named=/bar.txt">bar.txt</a></td>\n      <td align="right">19</td>\n      <td>lcr: 2013-02-20_21:53:11.795054<br />lmo: 2013-02-20_21:53:11.795054</td>\n      <td><form action="../../../uri/URI%3ADIR2%3Adcmuzbsk4rgpnnfgv5ibwsdi7u%3Aha6leiv54ee45xu6lrwkjiuewdo2ynxbtlmaizoj3q6c47s2vvpa/" method="post"><input type="hidden" name="t" value="unlink" /><input type="hidden" name="name" value="bar.txt" /><input type="hidden" name="when_done" value="." /><input type="submit" name="unlink" value="unlink" /></form></td>\n      <td><form action="../../../uri/URI%3ADIR2%3Adcmuzbsk4rgpnnfgv5ibwsdi7u%3Aha6leiv54ee45xu6lrwkjiuewdo2ynxbtlmaizoj3q6c47s2vvpa/" method="get"><input type="hidden" name="t" value="rename-form" /><input type="hidden" name="name" value="bar.txt" /><input type="hidden" name="when_done" value="." /><input type="submit" name="rename" value="rename/move" /></form></td>\n      <td><a href="../../../uri/URI%3ACHK%3Abbaor23xin5kytzqr6tmz2cciq%3A2gxbmfaavpwtwrhviujoptvfivh7iu474vjr6bmjwnz2ysxsuoia%3A3%3A10%3A19?t=info">More Info</a></td>\n    </tr><tr>\n      <td>SSK</td>\n      <td><a href="../../../file/URI%3ASSK%3Atguarr37j3jwbwubojabljgydy%3Aceuyljqj45xvyzlkegor5y2ef7hj2kb3ornxkazdlxpaolzb6mpq/@@named=/baz.txt">baz.txt</a></td>\n      <td align="right">?</td>\n      <td>lcr: 2013-02-20_21:53:11.796456<br />lmo: 2013-02-20_21:53:11.796456</td>\n      <td><form action="../../../uri/URI%3ADIR2%3Adcmuzbsk4rgpnnfgv5ibwsdi7u%3Aha6leiv54ee45xu6lrwkjiuewdo2ynxbtlmaizoj3q6c47s2vvpa/" method="post"><input type="hidden" name="t" value="unlink" /><input type="hidden" name="name" value="baz.txt" /><input type="hidden" name="when_done" value="." /><input type="submit" name="unlink" value="unlink" /></form></td>\n      <td><form action="../../../uri/URI%3ADIR2%3Adcmuzbsk4rgpnnfgv5ibwsdi7u%3Aha6leiv54ee45xu6lrwkjiuewdo2ynxbtlmaizoj3q6c47s2vvpa/" method="get"><input type="hidden" name="t" value="rename-form" /><input type="hidden" name="name" value="baz.txt" /><input type="hidden" name="when_done" value="." /><input type="submit" name="rename" value="rename/move" /></form></td>\n      <td><a href="../../../uri/URI%3ASSK%3Atguarr37j3jwbwubojabljgydy%3Aceuyljqj45xvyzlkegor5y2ef7hj2kb3ornxkazdlxpaolzb6mpq?t=info">More Info</a></td>\n    </tr><tr>\n      <td>FILE</td>\n      <td><a href="../../../file/URI%3ACHK%3Afcufbvprk4rvigk6ygieeebdfm%3Ajtdlnnzqiecv3xcktwzlznqvysmrmaybt4mracks36sg3nwj4tga%3A3%3A10%3A19/@@named=/blockingfile">blockingfile</a></td>\n      <td align="right">19</td>\n      <td>lcr: 2013-02-20_21:53:11.804734<br />lmo: 2013-02-20_21:53:11.804734</td>\n      <td><form action="../../../uri/URI%3ADIR2%3Adcmuzbsk4rgpnnfgv5ibwsdi7u%3Aha6leiv54ee45xu6lrwkjiuewdo2ynxbtlmaizoj3q6c47s2vvpa/" method="post"><input type="hidden" name="t" value="unlink" /><input type="hidden" name="name" value="blockingfile" /><input type="hidden" name="when_done" value="." /><input type="submit" name="unlink" value="unlink" /></form></td>\n      <td><form action="../../../uri/URI%3ADIR2%3Adcmuzbsk4rgpnnfgv5ibwsdi7u%3Aha6leiv54ee45xu6lrwkjiuewdo2ynxbtlmaizoj3q6c47s2vvpa/" method="get"><input type="hidden" name="t" value="rename-form" /><input type="hidden" name="name" value="blockingfile" /><input type="hidden" name="when_done" value="." /><input type="submit" name="rename" value="rename/move" /></form></td>\n      <td><a href="../../../uri/URI%3ACHK%3Afcufbvprk4rvigk6ygieeebdfm%3Ajtdlnnzqiecv3xcktwzlznqvysmrmaybt4mracks36sg3nwj4tga%3A3%3A10%3A19?t=info">More Info</a></td>\n    </tr><tr>\n      <td>DIR</td>\n      <td><a href="../../../uri/URI%3ADIR2%3Atf3izyfvpoeezcigaiaztmjok4%3A7p37hogm3ibqdl6srup7nqbolkxxnlpjxvylctkgbdasqbwkmtca/">empty</a></td>\n      <td align="right">-</td>\n      <td>lcr: 2013-02-20_21:53:11.799848<br />lmo: 2013-02-20_21:53:11.799848</td>\n      <td><form action="../../../uri/URI%3ADIR2%3Adcmuzbsk4rgpnnfgv5ibwsdi7u%3Aha6leiv54ee45xu6lrwkjiuewdo2ynxbtlmaizoj3q6c47s2vvpa/" method="post"><input type="hidden" name="t" value="unlink" /><input type="hidden" name="name" value="empty" /><input type="hidden" name="when_done" value="." /><input type="submit" name="unlink" value="unlink" /></form></td>\n      <td><form action="../../../uri/URI%3ADIR2%3Adcmuzbsk4rgpnnfgv5ibwsdi7u%3Aha6leiv54ee45xu6lrwkjiuewdo2ynxbtlmaizoj3q6c47s2vvpa/" method="get"><input type="hidden" name="t" value="rename-form" /><input type="hidden" name="name" value="empty" /><input type="hidden" name="when_done" value="." /><input type="submit" name="rename" value="rename/move" /></form></td>\n      <td><a href="../../../uri/URI%3ADIR2%3Atf3izyfvpoeezcigaiaztmjok4%3A7p37hogm3ibqdl6srup7nqbolkxxnlpjxvylctkgbdasqbwkmtca/?t=info">More Info</a></td>\n    </tr><tr>\n      <td>FILE</td>\n      <td><a href="../../../file/URI%3ACHK%3Abbaor23xin5kytzqr6tmz2cciq%3A2gxbmfaavpwtwrhviujoptvfivh7iu474vjr6bmjwnz2ysxsuoia%3A3%3A10%3A19/@@named=/n%C3%BC.txt">n\xc3\xbc.txt</a></td>\n      <td align="right">19</td>\n      <td>lcr: 2013-02-20_21:53:11.809787<br />lmo: 2013-02-20_21:53:11.809787</td>\n      <td><form action="../../../uri/URI%3ADIR2%3Adcmuzbsk4rgpnnfgv5ibwsdi7u%3Aha6leiv54ee45xu6lrwkjiuewdo2ynxbtlmaizoj3q6c47s2vvpa/" method="post"><input type="hidden" name="t" value="unlink" /><input type="hidden" name="name" value="n\xc3\xbc.txt" /><input type="hidden" name="when_done" value="." /><input type="submit" name="unlink" value="unlink" /></form></td>\n      <td><form action="../../../uri/URI%3ADIR2%3Adcmuzbsk4rgpnnfgv5ibwsdi7u%3Aha6leiv54ee45xu6lrwkjiuewdo2ynxbtlmaizoj3q6c47s2vvpa/" method="get"><input type="hidden" name="t" value="rename-form" /><input type="hidden" name="name" value="n\xc3\xbc.txt" /><input type="hidden" name="when_done" value="." /><input type="submit" name="rename" value="rename/move" /></form></td>\n      <td><a href="../../../uri/URI%3ACHK%3Abbaor23xin5kytzqr6tmz2cciq%3A2gxbmfaavpwtwrhviujoptvfivh7iu474vjr6bmjwnz2ysxsuoia%3A3%3A10%3A19?t=info">More Info</a></td>\n    </tr><tr>\n      <td>SSK</td>\n      <td><a href="../../../file/URI%3AMDMF%3A2ycirajxbgrb5wxhfinjwrhsmy%3Apckuct3d5y7eongupy76fuaobubz26v2547lyn2vqmgvposlkgbq/@@named=/quux.txt">quux.txt</a></td>\n      <td align="right">?</td>\n      <td>lcr: 2013-02-20_21:53:11.797995<br />lmo: 2013-02-20_21:53:11.797995</td>\n      <td><form action="../../../uri/URI%3ADIR2%3Adcmuzbsk4rgpnnfgv5ibwsdi7u%3Aha6leiv54ee45xu6lrwkjiuewdo2ynxbtlmaizoj3q6c47s2vvpa/" method="post"><input type="hidden" name="t" value="unlink" /><input type="hidden" name="name" value="quux.txt" /><input type="hidden" name="when_done" value="." /><input type="submit" name="unlink" value="unlink" /></form></td>\n      <td><form action="../../../uri/URI%3ADIR2%3Adcmuzbsk4rgpnnfgv5ibwsdi7u%3Aha6leiv54ee45xu6lrwkjiuewdo2ynxbtlmaizoj3q6c47s2vvpa/" method="get"><input type="hidden" name="t" value="rename-form" /><input type="hidden" name="name" value="quux.txt" /><input type="hidden" name="when_done" value="." /><input type="submit" name="rename" value="rename/move" /></form></td>\n      <td><a href="../../../uri/URI%3AMDMF%3A2ycirajxbgrb5wxhfinjwrhsmy%3Apckuct3d5y7eongupy76fuaobubz26v2547lyn2vqmgvposlkgbq?t=info">More Info</a></td>\n    </tr><tr>\n      <td>DIR</td>\n      <td><a href="../../../uri/URI%3ADIR2%3Apfus7zc3vyn7677mmwc724uydq%3Ag7yt7uybx27hp77p54nqpqonzfqcpzc2avif62xrizprnztqcrkq/">sub</a></td>\n      <td align="right">-</td>\n      <td>lcr: 2013-02-20_21:53:11.802059<br />lmo: 2013-02-20_21:53:11.802059</td>\n      <td><form action="../../../uri/URI%3ADIR2%3Adcmuzbsk4rgpnnfgv5ibwsdi7u%3Aha6leiv54ee45xu6lrwkjiuewdo2ynxbtlmaizoj3q6c47s2vvpa/" method="post"><input type="hidden" name="t" value="unlink" /><input type="hidden" name="name" value="sub" /><input type="hidden" name="when_done" value="." /><input type="submit" name="unlink" value="unlink" /></form></td>\n      <td><form action="../../../uri/URI%3ADIR2%3Adcmuzbsk4rgpnnfgv5ibwsdi7u%3Aha6leiv54ee45xu6lrwkjiuewdo2ynxbtlmaizoj3q6c47s2vvpa/" method="get"><input type="hidden" name="t" value="rename-form" /><input type="hidden" name="name" value="sub" /><input type="hidden" name="when_done" value="." /><input type="submit" name="rename" value="rename/move" /></form></td>\n      <td><a href="../../../uri/URI%3ADIR2%3Apfus7zc3vyn7677mmwc724uydq%3Ag7yt7uybx27hp77p54nqpqonzfqcpzc2avif62xrizprnztqcrkq/?t=info">More Info</a></td>\n    </tr></table>\n</div>\n\n<div class="tahoe-directory-footer">\n  <div class="freeform-form"><form action="." method="post" enctype="multipart/form-data"><fieldset><input type="hidden" name="t" value="mkdir" /><input type="hidden" name="when_done" value="." /><legend class="freeform-form-label">Create a new directory in this directory</legend>New directory name:\xc2\xa0\xc2\xa0<input type="text" name="name" />\xc2\xa0\xc2\xa0<input type="submit" value="Create" />\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0<input checked="checked" type="radio" id="mkdir-sdmf" value="sdmf" name="format" /><label for="mutable-directory-sdmf"> SDMF</label>\xc2\xa0\xc2\xa0<input type="radio" id="mkdir-mdmf" value="mdmf" name="format" /><label for="mutable-directory-mdmf"> MDMF (experimental)</label></fieldset></form></div><div class="freeform-form"><form action="." method="post" enctype="multipart/form-data"><fieldset><input type="hidden" name="t" value="upload" /><input type="hidden" name="when_done" value="." /><legend class="freeform-form-label">Upload a file to this directory</legend>Choose a file to upload:\xc2\xa0\xc2\xa0<input type="file" class="freeform-input-file" name="file" />\xc2\xa0\xc2\xa0<input type="submit" value="Upload" />\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0<input checked="checked" type="radio" id="upload-chk" value="chk" name="format" /><label for="upload-chk"> Immutable</label>\xc2\xa0\xc2\xa0<input type="radio" id="upload-sdmf" value="sdmf" name="format" /><label for="upload-sdmf"> SDMF</label>\xc2\xa0\xc2\xa0<input type="radio" id="upload-mdmf" value="mdmf" name="format" /><label for="upload-mdmf"> MDMF (experimental)</label></fieldset></form></div><div class="freeform-form"><form action="." method="post" enctype="multipart/form-data"><fieldset><input type="hidden" name="t" value="uri" /><input type="hidden" name="when_done" value="." /><legend class="freeform-form-label">Add a link to a file or directory which is already in Tahoe-LAFS.</legend>New child name:\xc2\xa0\xc2\xa0<input type="text" name="name" />\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0URI of new child:\xc2\xa0\xc2\xa0<input type="text" name="uri" />\xc2\xa0\xc2\xa0<input type="submit" value="Attach" /></fieldset></form></div>\n\n  \n</div>\n\n</body></html>'

allmydata.test.test_web.Web.test_GET_DIRECTORY_html_filenode_encoding
-------------------------------------------------------------------------------
Ran 1 tests in 0.063s

FAILED (failures=1)

Change History (12)

comment:1 Changed at 2013-02-21T06:35:02Z by Zancas

I piped the test output into a file and tried to get more information from the long html string.

I ran the following on the html from the assertion:

>python -u -c 'for x in [filtered for filtered in open("testerror","r").readlines()[11].split() if "weirdly" in filtered]: print x'

I got the following result:

href="../../../file/URI%3ACHK%3A253an7chojvpwztqkh67o6v2nq%3Acvuxtujfzqp5kf7krx36cnnm72nupsljnieuaa7trlxuhbg7dliq%3A3%3A10%3A19/@@named=/%3C%26weirdly%27named%22file%3E%3E%3E_%3Ciframe%20%2F%3E.txt">&lt;&amp;weirdly\'named"file&gt;&gt;&gt;_&lt;iframe
value="&lt;&amp;weirdly\'named&quot;file&gt;&gt;&gt;_&lt;iframe
value="&lt;&amp;weirdly\'named&quot;file&gt;&gt;&gt;_&lt;iframe

I may dig deeper later. The next obvious step is to find the value of "self" in this context.

comment:2 Changed at 2013-02-22T06:06:29Z by davidsarah

  • Component changed from unknown to code-frontend-web
  • Keywords wui html test added
  • Milestone changed from undecided to 1.10.0
  • Owner changed from davidsarah to MK_FG

This test was added in https://github.com/tahoe-lafs/tahoe-lafs/commit/1df7f114b7094dab8d7ffea8b390b10c0070b0fd in order to test the fix for #1143. Assigning to MK_FG who wrote that code.

comment:3 Changed at 2013-02-22T06:13:21Z by davidsarah

  • Owner changed from MK_FG to mk.fg

comment:4 Changed at 2013-02-25T18:37:51Z by davidsarah

Zancas, can you run bin/tahoe --version-and-path to see which versions of dependencies (particularly Nevow) are being used?

comment:5 Changed at 2013-02-25T20:15:52Z by Zancas

This is the output from running "--version-and-path". The format is PROMPT \n OUTPUT \n PROMPT. My PROMPTs start with "(tahoe_env)" and end with ">COMMAND(S)" on the following line:

(tahoe_env)0 b:master /home/arc/tpsrc/tahoe_env :
>which tahoe
/home/arc/tpsrc/tahoe_env/bin/tahoe
(tahoe_env)0 b:master /home/arc/tpsrc/tahoe_env :
>tahoe --version-and-path
allmydata-tahoe: 1.9.0.post299 (/home/arc/tpsrc/tahoe_env/lib/python2.7/site-packages)
foolscap: 0.6.4 (/home/arc/tpsrc/tahoe_env/lib/python2.7/site-packages)
pycryptopp: 0.6.0.1206569328141510525648634803928199668821045408958 (/home/arc/tpsrc/tahoe_env/lib/python2.7/site-packages)
zfec: 1.4.24 (/home/arc/tpsrc/tahoe_env/lib/python2.7/site-packages)
Twisted: 12.3.0 (/home/arc/tpsrc/tahoe_env/lib/python2.7/site-packages)
Nevow: 0.10.0 (/home/arc/tpsrc/tahoe_env/lib/python2.7/site-packages)
zope.interface: unknown (/home/arc/tpsrc/tahoe_env/lib/python2.7/site-packages/zope)
python: 2.7.3 (/home/arc/tpsrc/tahoe_env/bin/python)
platform: Linux-Ubuntu_12.04-i686-32bit_ELF (None)
pyOpenSSL: 0.13 (/home/arc/tpsrc/tahoe_env/lib/python2.7/site-packages)
simplejson: 3.0.7 (/home/arc/tpsrc/tahoe_env/lib/python2.7/site-packages)
pycrypto: 2.6 (/home/arc/tpsrc/tahoe_env/lib/python2.7/site-packages)
pyasn1: 0.1.6 (/home/arc/tpsrc/tahoe_env/lib/python2.7/site-packages)
mock: 1.0.1 (/home/arc/tpsrc/tahoe_env/lib/python2.7)
setuptools: 0.6 [distribute] (/home/arc/tpsrc/tahoe_env/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg)

(tahoe_env)0 b:master /home/arc/tpsrc/tahoe_env :
>

comment:6 Changed at 2013-02-25T21:09:32Z by davidsarah

Hmm, that's the same version of Nevow as me (and I don't get this test failure), which rules out one possibility.

comment:7 Changed at 2013-02-25T21:12:07Z by davidsarah

I can reproduce with Twisted 12.3.0, but not with 12.2.0.

To confirm that, please set the Twisted dependency in src/allmydata/_auto_deps.py to "Twisted == 12.2.0", then make clean before running tests again.

comment:8 Changed at 2013-02-25T21:41:19Z by Zancas

Per Zooko's request:

(tahoe_env)0 b:master /home/arc/tpsrc/tahoe_env :
>python allmydata-tahoe-1.9.0.post373/misc/build_helpers/show-tool-versions.py | grep -i 'charset\|enco\|locale'
locale: LANG=en_CA.UTF-8 LANGUAGE=en_CA:en LC_CTYPE="en_CA.UTF-8" LC_NUMERIC="en_CA.UTF-8" LC_TIME="en_CA.UTF-8" LC_COLLATE="en_CA.UTF-8" LC_MONETARY="en_CA.UTF-8" LC_MESSAGES="en_CA.UTF-8" LC_PAPER="en_CA.UTF-8" LC_NAME="en_CA.UTF-8" LC_ADDRESS="en_CA.UTF-8" LC_TELEPHONE="en_CA.UTF-8" LC_MEASUREMENT="en_CA.UTF-8" LC_IDENTIFICATION="en_CA.UTF-8" LC_ALL= 
filesystem.encoding: UTF-8
locale.getpreferredencoding: UTF-8
locale.defaultlocale: ('en_CA', 'UTF-8')
locale.locale: (None, None)
(tahoe_env)0 b:master /home/arc/tpsrc/tahoe_env :
>

comment:9 Changed at 2013-02-27T17:34:00Z by mk.fg

twisted.web.html.escape was used to produce html-encoded string (to then look it up in "value" attribute), but behavior of that function has changed between Twisted 12.2.0 (simple custom implementation) and 12.3.0 (imported from stdlib cgi module). cgi.escape() requires quote=True parameter to escape double-quote characters.

Fixed now in 1922_fix_test_web_test_GET_DIRECTORY_html_filenode_encoding branch (non-official repo), ​github pull request #31 by simply using reliable cgi.escape to produce html-escaped string for tests.

Pretty sure I used twisted.web.html.escape because Nevow also used it, but looks like currently it properly quotes attribute values, so guess different func is used for attributes there.

comment:10 Changed at 2013-02-28T04:35:03Z by davidsarah

  • Resolution set to fixed
  • Status changed from new to closed

comment:11 Changed at 2013-02-28T04:37:14Z by davidsarah

Thanks mk.fg. Zancas, please check that current trunk works for you.

comment:12 Changed at 2013-03-04T20:50:07Z by Zancas

>trial allmydata.test.test_web.Web.test_GET_DIRECTORY_html_filenode_encoding
allmydata.test.test_web
  Web
    test_GET_DIRECTORY_html_filenode_encoding ...                          [OK]

-------------------------------------------------------------------------------
Ran 1 tests in 0.065s

PASSED (successes=1)
Note: See TracTickets for help on using tickets.