storchaka@gmail.com>
date:        Sun Aug 17 12:21:06 2014 +0300
summary:
  Issue #22165: Fixed test_undecodable_filename on non-UTF-8 locales.

files:
  Lib/test/test_httpservers.py |  5 +++--
  1 files changed, 3 insertions(+), 2 deletions(-)


diff --git a/Lib/test/test_httpservers.py b/Lib/test/test_httpservers.py
--- a/Lib/test/test_httpservers.py
+++ b/Lib/test/test_httpservers.py
@@ -272,6 +272,7 @@
     @unittest.skipUnless(support.TESTFN_UNDECODABLE,
                          'need support.TESTFN_UNDECODABLE')
     def test_undecodable_filename(self):
+        enc = sys.getfilesystemencoding()
         filename = os.fsdecode(support.TESTFN_UNDECODABLE) + '.txt'
         with open(os.path.join(self.tempdir, filename), 'wb') as f:
             f.write(support.TESTFN_UNDECODABLE)
@@ -279,9 +280,9 @@
         body = self.check_status_and_reason(response, 200)
         quotedname = urllib.parse.quote(filename, errors='surrogatepass')
         self.assertIn(('href="%s"' % quotedname)
-                      .encode('utf-8', 'surrogateescape'), body)
+                      .encode(enc, 'surrogateescape'), body)
         self.assertIn(('>%s<' % html.escape(filename))
-                      .encode('utf-8', 'surrogateescape'), body)
+                      .encode(enc, 'surrogateescape'), body)
         response = self.request(self.tempdir_name + '/' + quotedname)
         self.check_status_and_reason(response, 200,
                                      data=support.TESTFN_UNDECODABLE)

--
Repository URL: http://hg.python.org/cpython

_______________________________________________
Python-checkins mailing list
Python-checkins@python.org
https://mail.python.org/mailman/listinfo/python-checkins


">

(original) (raw)

This change is okay and not harmful. But I think, It might still not fix the encoding issue that we encountered on Mac.

\[localhost cpython\]$ hg log -l 1
changeset: 92128:7cdc941d5180
tag: tip
parent: 92126:3153a400b739
parent: 92127:a894b629bbea
user: Serhiy Storchaka <storchaka@gmail.com>
date: Sun Aug 17 12:21:06 2014 +0300
description:
Issue #22165: Fixed test\_undecodable\_filename on non-UTF-8 locales.


\[localhost cpython\]$ ./python.exe -m test.regrtest test\_httpservers
\[1/1\] test\_httpservers
test test\_httpservers failed -- Traceback (most recent call last):
File "/Users/skumaran/python/cpython/Lib/test/test\_httpservers.py", line 283, in test\_undecodable\_filename
.encode(enc, 'surrogateescape'), body)
AssertionError: b'href="%40test\_5809\_tmp%ED%B3%A7w%ED%B3%B0.txt"' not found in b'http://www.w3.org/TR/html4/strict.dtd">\\n\\n\\n\\nDirectory listing for tmpj54lc8m1/\\n\\n\\n

Directory listing for tmpj54lc8m1/

\\n
\\n\\n
\\n\\n\\n'

1 test failed:
test\_httpservers

The underlying problem seems to be difference in which os.listdir() which uses C-API and os.fsdecode represent the decoded chars. Ref: http://bugs.python.org/issue22165#msg225428





On Sun, Aug 17, 2014 at 2:52 PM, serhiy.storchaka <python-checkins@python.org> wrote:
http://hg.python.org/cpython/rev/7cdc941d5180

changeset: 92128:7cdc941d5180

parent: 92126:3153a400b739

parent: 92127:a894b629bbea

user: Serhiy Storchaka <storchaka@gmail.com>

date: Sun Aug 17 12:21:06 2014 +0300

summary:

Issue #22165: Fixed test_undecodable_filename on non-UTF-8 locales.



files:

Lib/test/test_httpservers.py | 5 +++--

1 files changed, 3 insertions(+), 2 deletions(-)





diff --git a/Lib/test/test_httpservers.py b/Lib/test/test_httpservers.py

--- a/Lib/test/test_httpservers.py

+++ b/Lib/test/test_httpservers.py

@@ -272,6 +272,7 @@

@unittest.skipUnless(support.TESTFN_UNDECODABLE,

'need support.TESTFN_UNDECODABLE')

def test_undecodable_filename(self):

+ enc = sys.getfilesystemencoding()

filename = os.fsdecode(support.TESTFN_UNDECODABLE) + '.txt'

with open(os.path.join(self.tempdir, filename), 'wb') as f:

f.write(support.TESTFN_UNDECODABLE)

@@ -279,9 +280,9 @@

body = self.check_status_and_reason(response, 200)

quotedname = urllib.parse.quote(filename, errors='surrogatepass')

self.assertIn(('href="%s"' % quotedname)

- .encode('utf-8', 'surrogateescape'), body)

+ .encode(enc, 'surrogateescape'), body)

self.assertIn(('>%s<' % html.escape(filename))

- .encode('utf-8', 'surrogateescape'), body)

+ .encode(enc, 'surrogateescape'), body)

response = self.request(self.tempdir_name + '/' + quotedname)

self.check_status_and_reason(response, 200,

data=support.TESTFN_UNDECODABLE)



--

Repository URL: http://hg.python.org/cpython


_______________________________________________

Python-checkins mailing list

Python-checkins@python.org

https://mail.python.org/mailman/listinfo/python-checkins