
This issue trackerhas been migrated toGitHub, and is currentlyread-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.
Created on2011-02-11 15:28 bysable, last changed2022-04-11 14:57 byadmin. This issue is nowclosed.
| Pull Requests | |||
|---|---|---|---|
| URL | Status | Linked | Edit |
| PR 8939 | merged | Michael.Felt,2018-08-26 13:18 | |
| PR 8946 | merged | miss-islington,2018-08-27 00:19 | |
| Messages (12) | |||
|---|---|---|---|
| msg128402 -(view) | Author: Sébastien Sablé (sable) | Date: 2011-02-11 15:28 | |
The following tests fail in test_subprocess on AIX:======================================================================FAIL: test_undecodable_env (test.test_subprocess.POSIXProcessTestCase)----------------------------------------------------------------------Traceback (most recent call last): File "/san_cis/home/cis/.buildbot/python-aix6/3.x.phenix.xlc/build/Lib/test/test_subprocess.py", line 1039, in test_undecodable_env self.assertEqual(stdout.decode('ascii'), ascii(value))AssertionError: "'abc\\xff'" != "'abc\\udcff'"- 'abc\xff'? ^+ 'abc\udcff'? ^^^======================================================================FAIL: test_undecodable_env (test.test_subprocess.ProcessTestCasePOSIXPurePython)----------------------------------------------------------------------Traceback (most recent call last): File "/san_cis/home/cis/.buildbot/python-aix6/3.x.phenix.xlc/build/Lib/test/test_subprocess.py", line 1039, in test_undecodable_env self.assertEqual(stdout.decode('ascii'), ascii(value))AssertionError: "'abc\\xff'" != "'abc\\udcff'"- 'abc\xff'? ^+ 'abc\udcff'? ^^^----------------------------------------------------------------------Ran 267 tests in 366.280sFAILED (failures=2, skipped=22)I haven't investigated yet. | |||
| msg128403 -(view) | Author: Antoine Pitrou (pitrou)*![]() | Date: 2011-02-11 15:41 | |
Perhaps related to the test_locale failure inissue11190. | |||
| msg128406 -(view) | Author: STINNER Victor (vstinner)*![]() | Date: 2011-02-11 16:01 | |
test_undecodable_code() in test_cmd_line had a similar issue: on FreeBSD, Solaris and Mac OS X, even if the locale is C (and nl_langinfo(CODESET) announces ASCII), _Py_char2wchar() (mbstowcs) decoded b'\xff' as '\xff' (use ISO-8859-1 encoding). To fix the test, I just patched the test to accept both results: b'\xff' may be decoded as '\udcff' or '\xff'.test_undecodable_env does something like: os.environb[b'test']=b'abc\xff', but os.getenv() decodes b'abc\xff' as 'abc\xff' instead of 'abc\udcff' even if LC_ALL=C.I don't understand why the test pass on FreeBSD, Solaris and Mac OS X, but not on AIX. It would be interesting to get the locale encoding of the child process using LC_ALL=C. | |||
| msg128543 -(view) | Author: STINNER Victor (vstinner)*![]() | Date: 2011-02-14 13:23 | |
> I don't understand why the test pass on FreeBSD, Solaris and> Mac OS X, but not on AIX.Oh, the command line and the filesystem encodings may be different. test_undecodable_env() of test_subprocess.py uses os.environ which uses sys.getfilesystemencoding(), whereas test_undecodable_code() of test_cmd_line.py uses _Py_char2wchar() which uses mbstowcs() functions (which use the locale encoding).sys.getfilesystemencoding() is initialized from nl_langinfo(CODESET).nl_langinfo(CODESET) gives maybe "ISO-8859-1" (or an alias to this encoding) even if LC_ALL=C. | |||
| msg128548 -(view) | Author: Sébastien Sablé (sable) | Date: 2011-02-14 14:25 | |
I am not sure this is what you want:> LC_ALL=C ./pythonPython 3.2rc3 (py3k:88417M, Feb 14 2011, 10:37:42) [GCC 4.2.0] on aix6Type "help", "copyright", "credits" or "license" for more information.>>> import sys>>> sys.getfilesystemencoding()'iso8859-1'>>> What information can I provide to help solve this bug? | |||
| msg128549 -(view) | Author: STINNER Victor (vstinner)*![]() | Date: 2011-02-14 14:32 | |
>>> sys.getfilesystemencoding()'iso8859-1'Ok, I expected this result.Can you also try:$ LC_ALL=C ./python -c "import sys; print(ascii(sys.argv))" $(echo -ne "abc\xff")['-c', 'abc\udcff']$ LC_ALL=C python3.1 -c "import locale; print(locale.nl_langinfo(locale.CODESET))"ANSI_X3.4-1968$ LC_ALL=C python3.1 -c "import locale; print(locale.getpreferredencoding())"ANSI_X3.4-1968Anyway, test_undecodable_env() is not written to support ISO-8859-1 filesystem encoding. I should patch the test to check the filesystem encoding. | |||
| msg128555 -(view) | Author: Sébastien Sablé (sable) | Date: 2011-02-14 15:56 | |
$ LANG=C ./python -Wd -E -bb -c "import sys; print(ascii(sys.argv))" $(echo -ne "abc\xff")['-c', 'abc\xff']['-c', 'abc\xff']$ LANG=C ./python -Wd -E -bb -c "import locale; print(locale.nl_langinfo(locale.CODESET))"ISO8859-1$ LANG=C ./python -Wd -E -bb -c "import locale; print(locale.getpreferredencoding())"ISO8859-1 | |||
| msg184314 -(view) | Author: STINNER Victor (vstinner)*![]() | Date: 2013-03-16 13:43 | |
ping myself | |||
| msg271281 -(view) | Author: Michael Felt (Michael.Felt)* | Date: 2016-07-25 15:16 | |
Seems to be okay at least with Python 3.6 "test" version - but maybe there is better way to call these tests - just to be sure the one needed is not being skipped.On AIX 5.3 TL7 SP0:root@x064:[/data/prj/aixtools/python/python-3.6.0.162/Lib/test]../../python test_subprocess.pyssss...........................................s.......................................................s.....s.........s...............................................................s.....s.........s.........................................sssssssssssss----------------------------------------------------------------------Ran 254 tests in 113.796sOK (skipped=24)On AIX 6.1 TL9 SP4:michael@x071:[/data/prj/aixtools/python/python-3.6.0.162/Lib/test]../../python test_subprocess.pyssss...........................................s.......................................................s.....s.........s...............................................................s.....s.........s.........................................sssssssssssss----------------------------------------------------------------------Ran 254 tests in 126.684sOK (skipped=24)michael@x071:[/data/prj/aixtools/python/python-3.6.0.162/Lib/test]Please note that GNU libiconv is used by default (version 1.14) rather than IBM iconv.This may be the key issue (will test 11190 as well) | |||
| msg324117 -(view) | Author: Michael Felt (Michael.Felt)* | Date: 2018-08-26 13:11 | |
Short Version:root@x065:[/data/prj/python/python3-3.8]./python -m test test_subprocessRun tests sequentially0:00:00 [1/1] test_subprocesstest_subprocess passed in 2 min 18 sec== Tests result: SUCCESS ==1 test OK.Total duration: 2 min 18 secTests result: SUCCESS...----------------------------------------------------------------------Ran 285 tests in 136.443sOK (skipped=33)test_subprocess passed in 2 min 16 sec== Tests result: SUCCESS ==1 test OK.Total duration: 2 min 16 secTests result: SUCCESSPosting a PR - tested manually on AIX 5.3, AIX 6.1 and AIX 7.1imho: being able to remove the special condition for AIX is an improvement.diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.pyindex73b57b21db..4719773b67 100644--- a/Lib/test/test_subprocess.py+++ b/Lib/test/test_subprocess.py@@ -2228,15 +2228,9 @@ class POSIXProcessTestCase(BaseTestCase): env = os.environ.copy() env[key] = value # Use C locale to get ASCII for the locale encoding to force- # surrogate-escaping of \xFF in the child process; otherwise it can- # be decoded as-is if the default locale is latin-1.+ # surrogate-escaping of \xFF in the child process env['LC_ALL'] = 'C'- if sys.platform.startswith("aix"):- # On AIX, the C locale uses the Latin1 encoding- decoded_value = encoded_value.decode("latin1", "surrogateescape")- else:- # On other UNIXes, the C locale uses the ASCII encoding- decoded_value = value+ decoded_value = value stdout = subprocess.check_output( [sys.executable, "-c", script], env=env) | |||
| msg324128 -(view) | Author: Gregory P. Smith (gregory.p.smith)*![]() | Date: 2018-08-26 17:31 | |
someone with modern AIX access reopen if this specific issue still appears to exist after the 3.8 and 3.7 PRs finish merging. | |||
| msg324130 -(view) | Author: Gregory P. Smith (gregory.p.smith)*![]() | Date: 2018-08-26 17:33 | |
https://github.com/python/cpython/pull/8939 andhttps://github.com/python/cpython/pull/8946 | |||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022-04-11 14:57:12 | admin | set | github: 55402 |
| 2018-08-27 00:19:42 | miss-islington | set | pull_requests: +pull_request8425 |
| 2018-08-26 17:33:54 | gregory.p.smith | set | resolution: fixed |
| 2018-08-26 17:33:33 | gregory.p.smith | set | messages: +msg324130 |
| 2018-08-26 17:31:29 | gregory.p.smith | set | status: open -> closed title: test_subprocess error on AIX -> test_subprocess test_undecodable_env error on AIX nosy: +gregory.p.smith versions: + Python 3.7 messages: +msg324128 stage: patch review -> resolved |
| 2018-08-26 13:18:20 | Michael.Felt | set | keywords: +patch stage: patch review pull_requests: +pull_request8412 |
| 2018-08-26 13:11:50 | Michael.Felt | set | messages: +msg324117 versions: + Python 3.8, - Python 3.2 |
| 2016-07-25 15:16:07 | Michael.Felt | set | nosy: +Michael.Felt messages: +msg271281 |
| 2013-06-19 21:23:56 | David.Edelsohn | set | nosy: +David.Edelsohn type: behavior components: + Interpreter Core |
| 2013-03-16 13:43:10 | vstinner | set | messages: +msg184314 |
| 2011-02-14 15:56:43 | sable | set | nosy:pitrou,vstinner,sable messages: +msg128555 |
| 2011-02-14 14:32:22 | vstinner | set | nosy:pitrou,vstinner,sable messages: +msg128549 |
| 2011-02-14 14:25:17 | sable | set | nosy:pitrou,vstinner,sable messages: +msg128548 |
| 2011-02-14 13:23:54 | vstinner | set | nosy:pitrou,vstinner,sable messages: +msg128543 |
| 2011-02-11 16:01:27 | vstinner | set | nosy:pitrou,vstinner,sable messages: +msg128406 |
| 2011-02-11 15:41:05 | pitrou | set | nosy: +vstinner,pitrou messages: +msg128403 |
| 2011-02-11 15:28:17 | sable | create | |