diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2014-02-19 23:27:37 +0200 |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2014-02-19 23:27:37 +0200 |
commit | 2ac9d3110898a1cfc779dd436f05cd6ac231cbb3 (patch) | |
tree | b62d200630b8675414e833a7f1200cd424cf7ebe /Lib/test/test_support.py | |
parent | c77d4ba85b4d2f08b4de094bc9d9104113772374 (diff) | |
download | cpython-git-2ac9d3110898a1cfc779dd436f05cd6ac231cbb3.tar.gz |
Issue #6815: os.path.expandvars() now supports non-ASCII Unicode environment
variables names and values.
Diffstat (limited to 'Lib/test/test_support.py')
-rw-r--r-- | Lib/test/test_support.py | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py index a40a593b19..44b422412a 100644 --- a/Lib/test/test_support.py +++ b/Lib/test/test_support.py @@ -465,6 +465,52 @@ except NameError: is_jython = sys.platform.startswith('java') +# FS_NONASCII: non-ASCII Unicode character encodable by +# sys.getfilesystemencoding(), or None if there is no such character. +FS_NONASCII = None +if have_unicode: + for character in ( + # First try printable and common characters to have a readable filename. + # For each character, the encoding list are just example of encodings able + # to encode the character (the list is not exhaustive). + + # U+00E6 (Latin Small Letter Ae): cp1252, iso-8859-1 + unichr(0x00E6), + # U+0130 (Latin Capital Letter I With Dot Above): cp1254, iso8859_3 + unichr(0x0130), + # U+0141 (Latin Capital Letter L With Stroke): cp1250, cp1257 + unichr(0x0141), + # U+03C6 (Greek Small Letter Phi): cp1253 + unichr(0x03C6), + # U+041A (Cyrillic Capital Letter Ka): cp1251 + unichr(0x041A), + # U+05D0 (Hebrew Letter Alef): Encodable to cp424 + unichr(0x05D0), + # U+060C (Arabic Comma): cp864, cp1006, iso8859_6, mac_arabic + unichr(0x060C), + # U+062A (Arabic Letter Teh): cp720 + unichr(0x062A), + # U+0E01 (Thai Character Ko Kai): cp874 + unichr(0x0E01), + + # Then try more "special" characters. "special" because they may be + # interpreted or displayed differently depending on the exact locale + # encoding and the font. + + # U+00A0 (No-Break Space) + unichr(0x00A0), + # U+20AC (Euro Sign) + unichr(0x20AC), + ): + try: + character.encode(sys.getfilesystemencoding())\ + .decode(sys.getfilesystemencoding()) + except UnicodeError: + pass + else: + FS_NONASCII = character + break + # Filename used for testing if os.name == 'java': # Jython disallows @ in module names |