Fix the availability statement for the spawn*() functions to reflect the
[python/dscho.git] / Lib / test / test_unicode_file.py
blob8b5757cc692429141716d511b85d5206692d8bbe
1 # Test some Unicode file name semantics
2 # We dont test many operations on files other than
3 # that their names can be used with Unicode characters.
4 import os
6 from test_support import verify, TestSkipped, TESTFN_UNICODE
7 try:
8 from test_support import TESTFN_ENCODING
9 oldlocale = None
10 except ImportError:
11 import locale
12 # try to run the test in an UTF-8 locale. If this locale is not
13 # available, avoid running the test since the locale's encoding
14 # might not support TESTFN_UNICODE. Likewise, if the system does
15 # not support locale.CODESET, Unicode file semantics is not
16 # available, either.
17 oldlocale = locale.setlocale(locale.LC_CTYPE)
18 try:
19 locale.setlocale(locale.LC_CTYPE,"en_US.UTF-8")
20 TESTFN_ENCODING = locale.nl_langinfo(locale.CODESET)
21 except (locale.Error, AttributeError):
22 raise TestSkipped("No Unicode filesystem semantics on this platform.")
24 TESTFN_ENCODED = TESTFN_UNICODE.encode(TESTFN_ENCODING)
26 # Check with creation as Unicode string.
27 f = open(TESTFN_UNICODE, 'wb')
28 if not os.path.isfile(TESTFN_UNICODE):
29 print "File doesn't exist after creating it"
31 if not os.path.isfile(TESTFN_ENCODED):
32 print "File doesn't exist (encoded string) after creating it"
34 f.close()
36 # Test stat and chmod
37 if os.stat(TESTFN_ENCODED) != os.stat(TESTFN_UNICODE):
38 print "os.stat() did not agree on the 2 filenames"
39 os.chmod(TESTFN_ENCODED, 0777)
40 os.chmod(TESTFN_UNICODE, 0777)
42 # Test rename
43 os.rename(TESTFN_ENCODED, TESTFN_ENCODED + ".new")
44 os.rename(TESTFN_UNICODE+".new", TESTFN_ENCODED)
46 os.unlink(TESTFN_ENCODED)
47 if os.path.isfile(TESTFN_ENCODED) or \
48 os.path.isfile(TESTFN_UNICODE):
49 print "File exists after deleting it"
51 # Check with creation as encoded string.
52 f = open(TESTFN_ENCODED, 'wb')
53 if not os.path.isfile(TESTFN_UNICODE) or \
54 not os.path.isfile(TESTFN_ENCODED):
55 print "File doesn't exist after creating it"
57 path, base = os.path.split(os.path.abspath(TESTFN_ENCODED))
58 if base not in os.listdir(path):
59 print "Filename did not appear in os.listdir()"
61 f.close()
62 os.unlink(TESTFN_UNICODE)
63 if os.path.isfile(TESTFN_ENCODED) or \
64 os.path.isfile(TESTFN_UNICODE):
65 print "File exists after deleting it"
67 # test os.open
68 f = os.open(TESTFN_ENCODED, os.O_CREAT)
69 if not os.path.isfile(TESTFN_UNICODE) or \
70 not os.path.isfile(TESTFN_ENCODED):
71 print "File doesn't exist after creating it"
72 os.close(f)
73 os.unlink(TESTFN_UNICODE)
75 # Test directories etc
76 cwd = os.getcwd()
77 abs_encoded = os.path.abspath(TESTFN_ENCODED) + ".dir"
78 abs_unicode = os.path.abspath(TESTFN_UNICODE) + ".dir"
79 os.mkdir(abs_encoded)
80 try:
81 os.chdir(abs_encoded)
82 os.chdir(abs_unicode)
83 finally:
84 os.chdir(cwd)
85 os.rmdir(abs_unicode)
86 os.mkdir(abs_unicode)
87 try:
88 os.chdir(abs_encoded)
89 os.chdir(abs_unicode)
90 finally:
91 os.chdir(cwd)
92 os.rmdir(abs_encoded)
93 print "All the Unicode tests appeared to work"
94 if oldlocale:
95 locale.setlocale(locale.LC_CTYPE, oldlocale)