[Python-checkins] CVS: python/dist/src/Lib/test test_unicode_file.py,NONE,1.1 test_support.py,1.22,1.23

Mark Hammond mhammond@users.sourceforge.net
Sun, 13 May 2001 01:04:28 -0700


Update of /cvsroot/python/python/dist/src/Lib/test
In directory usw-pr-cvs1:/tmp/cvs-serv23512/Lib/test

Modified Files:
	test_support.py 
Added Files:
	test_unicode_file.py 
Log Message:
Add support for Windows using "mbcs" as the default Unicode encoding when dealing with the file system.  As discussed on python-dev and in patch 410465.

--- NEW FILE: test_unicode_file.py ---
# Test some Unicode file name semantics
# We dont test many operations on files other than
# that their names can be used with Unicode characters.
import os

from test_support import verify, TestSkipped, TESTFN_UNICODE
try:
    from test_support import TESTFN_ENCODING
except ImportError:
    raise TestSkipped("No Unicode filesystem semantics on this platform.")

TESTFN_ENCODED = TESTFN_UNICODE.encode(TESTFN_ENCODING)

# Check with creation as Unicode string.
f = open(TESTFN_UNICODE, 'wb')
if not os.path.isfile(TESTFN_UNICODE):
    print "File doesn't exist after creating it"

if not os.path.isfile(TESTFN_ENCODED):
    print "File doesn't exist (encoded string) after creating it"

f.close()

# Test stat and chmod
if os.stat(TESTFN_ENCODED) != os.stat(TESTFN_UNICODE):
    print "os.stat() did not agree on the 2 filenames"
os.chmod(TESTFN_ENCODED, 0777)
os.chmod(TESTFN_UNICODE, 0777)

# Test rename
os.rename(TESTFN_ENCODED, TESTFN_ENCODED + ".new")
os.rename(TESTFN_UNICODE+".new", TESTFN_ENCODED)

os.unlink(TESTFN_ENCODED)
if os.path.isfile(TESTFN_ENCODED) or \
   os.path.isfile(TESTFN_UNICODE):
    print "File exists after deleting it"

# Check with creation as encoded string.
f = open(TESTFN_ENCODED, 'wb')
if not os.path.isfile(TESTFN_UNICODE) or \
   not os.path.isfile(TESTFN_ENCODED):
    print "File doesn't exist after creating it"

path, base = os.path.split(os.path.abspath(TESTFN_ENCODED))
if base not in os.listdir(path):
    print "Filename did not appear in os.listdir()"

f.close()
os.unlink(TESTFN_UNICODE)
if os.path.isfile(TESTFN_ENCODED) or \
   os.path.isfile(TESTFN_UNICODE):
    print "File exists after deleting it"

# test os.open
f = os.open(TESTFN_ENCODED, os.O_CREAT)
if not os.path.isfile(TESTFN_UNICODE) or \
   not os.path.isfile(TESTFN_ENCODED):
    print "File doesn't exist after creating it"
os.close(f)
os.unlink(TESTFN_UNICODE)

# Test directories etc
cwd = os.getcwd()
abs_encoded = os.path.abspath(TESTFN_ENCODED) + ".dir"
abs_unicode = os.path.abspath(TESTFN_UNICODE) + ".dir"
os.mkdir(abs_encoded)
try:
    os.chdir(abs_encoded)
    os.chdir(abs_unicode)
finally:
    os.chdir(cwd)
    os.rmdir(abs_unicode)
os.mkdir(abs_unicode)
try:
    os.chdir(abs_encoded)
    os.chdir(abs_unicode)
finally:
    os.chdir(cwd)
    os.rmdir(abs_encoded)
print "All the Unicode tests appeared to work"

Index: test_support.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_support.py,v
retrieving revision 1.22
retrieving revision 1.23
diff -C2 -r1.22 -r1.23
*** test_support.py	2001/05/13 00:19:31	1.22
--- test_support.py	2001/05/13 08:04:26	1.23
***************
*** 64,67 ****
--- 64,71 ----
  elif os.name != 'riscos':
      TESTFN = '@test'
+     # Unicode name only used if TEST_FN_ENCODING exists for the platform.
+     TESTFN_UNICODE=u"@test-\xe0\xf2" # 2 latin characters.
+     if os.name=="nt":
+         TESTFN_ENCODING="mbcs"
  else:
      TESTFN = 'test'