Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
77a88495
Kaydet (Commit)
77a88495
authored
Mar 21, 2010
tarafından
Florent Xicluna
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
#8180: Fix test_pep277 on OS X and add more tests for special Unicode normalization cases.
üst
e39b2ec6
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
108 additions
and
30 deletions
+108
-30
test_pep277.py
Lib/test/test_pep277.py
+105
-30
NEWS
Misc/NEWS
+3
-0
No files found.
Lib/test/test_pep277.py
Dosyayı görüntüle @
77a88495
# Test the Unicode versions of normal file functions
# open, os.open, os.stat. os.listdir, os.rename, os.remove, os.mkdir, os.chdir, os.rmdir
import
sys
,
os
,
unittest
from
unicodedata
import
normalize
from
test
import
test_support
filenames
=
[
...
...
@@ -13,8 +14,21 @@ filenames = [
u'
\u05d4\u05e9\u05e7\u05e6\u05e5\u05e1
'
,
u'
\u66e8\u66e9\u66eb
'
,
u'
\u66e8\u05e9\u3093\u0434\u0393\xdf
'
,
# Specific code points: fn, NFC(fn) and NFKC(fn) all differents
u'
\u2000\u2000\u2000
A'
,
u'
\u2001\u2001\u2001
A'
,
u'
\u2003\u2003\u2003
A'
,
# == NFC(u'\u2001\u2001\u2001A')
u'
\u0020\u0020\u0020
A'
,
# u'\u0020' == u' ' == NFKC(u'\u2000')
# u'\u0020' == NFKC(u'\u2001') == NFKC(u'\u2003')
u'
\u1fee\u1ffd
'
,
# Specific code points: NFC(fn), NFD(fn), NFKC(fn) and NFKD(fn) all differents
u'
\u0385\u03d3\u03d4
'
,
u'
\u00a8\u0301\u03d2\u0301\u03d2\u0308
'
,
# == NFD(u'\u0385\u03d3\u03d4')
u'
\u0020\u0308\u0301\u038e\u03ab
'
,
# == NFKC(u'\u0385\u03d3\u03d4')
u'
\u1e9b\u1fc1\u1fcd\u1fce\u1fcf\u1fdd\u1fde\u1fdf\u1fed
'
,
]
# Destroy directory dirname and all files under it, to one level.
def
deltree
(
dirname
):
# Don't hide legitimate errors: if one of these suckers exists, it's
...
...
@@ -25,43 +39,51 @@ def deltree(dirname):
os
.
unlink
(
os
.
path
.
join
(
dirname
,
fname
))
os
.
rmdir
(
dirname
)
class
UnicodeFileTests
(
unittest
.
TestCase
):
files
=
[
os
.
path
.
join
(
test_support
.
TESTFN
,
f
)
for
f
in
filenames
]
files
=
set
(
filenames
)
normal_form
=
None
def
setUp
(
self
):
try
:
os
.
mkdir
(
test_support
.
TESTFN
)
except
OSError
:
pass
files
=
set
()
for
name
in
self
.
files
:
name
=
os
.
path
.
join
(
test_support
.
TESTFN
,
self
.
norm
(
name
))
try
:
f
=
open
(
name
,
'w'
)
except
UnicodeEncodeError
:
if
not
os
.
path
.
supports_unicode_filenames
:
raise
unittest
.
SkipTest
(
"only NT+ and systems with Unicode
"
"-friendly
filesystem encoding"
)
self
.
skipTest
(
"only NT+ and systems with Unicode-friendly
"
"
filesystem encoding"
)
f
.
write
((
name
+
'
\n
'
)
.
encode
(
"utf-8"
))
f
.
close
()
os
.
stat
(
name
)
files
.
add
(
name
)
self
.
files
=
files
def
tearDown
(
self
):
deltree
(
test_support
.
TESTFN
)
def
norm
(
self
,
s
):
if
self
.
normal_form
and
isinstance
(
s
,
unicode
):
return
normalize
(
self
.
normal_form
,
s
)
return
s
def
_apply_failure
(
self
,
fn
,
filename
,
expected_exception
,
check_fn_in_exception
=
True
):
try
:
with
self
.
assertRaises
(
expected_exception
)
as
c
:
fn
(
filename
)
raise
test_support
.
TestFailed
(
"Expected to fail calling '
%
s(
%
r)'"
%
(
fn
.
__name__
,
filename
))
except
expected_exception
,
details
:
# the "filename" exception attribute may be encoded
if
isinstance
(
details
.
filename
,
str
):
filename
=
filename
.
encode
(
sys
.
getfilesystemencoding
())
if
check_fn_in_exception
and
details
.
filename
!=
filename
:
raise
test_support
.
TestFailed
(
"Function '
%
s(
%
r) failed with "
"bad filename in the exception:
%
r"
%
(
fn
.
__name__
,
filename
,
details
.
filename
))
exc_filename
=
c
.
exception
.
filename
# the "filename" exception attribute may be encoded
if
isinstance
(
exc_filename
,
str
):
filename
=
filename
.
encode
(
sys
.
getfilesystemencoding
())
if
check_fn_in_exception
:
self
.
assertEqual
(
exc_filename
,
filename
,
"Function '
%
s(
%
r) failed "
"with bad filename in the exception:
%
r"
%
(
fn
.
__name__
,
filename
,
exc_filename
))
def
test_failures
(
self
):
# Pass non-existing Unicode filenames all over the place.
...
...
@@ -82,39 +104,92 @@ class UnicodeFileTests(unittest.TestCase):
f
.
close
()
os
.
stat
(
name
)
def
test_normalize
(
self
):
files
=
set
(
f
for
f
in
self
.
files
if
isinstance
(
f
,
unicode
))
others
=
set
()
for
nf
in
set
([
'NFC'
,
'NFD'
,
'NFKC'
,
'NFKD'
]):
others
|=
set
(
normalize
(
nf
,
file
)
for
file
in
files
)
others
-=
files
if
sys
.
platform
==
'darwin'
:
files
=
set
(
normalize
(
'NFD'
,
file
)
for
file
in
files
)
for
name
in
others
:
if
sys
.
platform
==
'darwin'
and
normalize
(
'NFD'
,
name
)
in
files
:
# Mac OS X decomposes Unicode names, using Normal Form D.
# http://developer.apple.com/mac/library/qa/qa2001/qa1173.html
os
.
stat
(
name
)
continue
self
.
_apply_failure
(
open
,
name
,
IOError
)
self
.
_apply_failure
(
os
.
stat
,
name
,
OSError
)
self
.
_apply_failure
(
os
.
chdir
,
name
,
OSError
)
self
.
_apply_failure
(
os
.
rmdir
,
name
,
OSError
)
self
.
_apply_failure
(
os
.
remove
,
name
,
OSError
)
# listdir may append a wildcard to the filename, so dont check
self
.
_apply_failure
(
os
.
listdir
,
name
,
OSError
,
False
)
def
test_listdir
(
self
):
sf0
=
set
(
self
.
files
)
f1
=
os
.
listdir
(
test_support
.
TESTFN
)
f2
=
os
.
listdir
(
unicode
(
test_support
.
TESTFN
,
sys
.
getfilesystemencoding
()))
sf2
=
set
(
os
.
path
.
join
(
unicode
(
test_support
.
TESTFN
),
f
)
for
f
in
f2
)
self
.
assertEqual
(
len
(
f1
),
len
(
self
.
files
))
self
.
assertEqual
(
sf2
,
set
(
self
.
files
))
if
sys
.
platform
==
'darwin'
:
# Mac OS X returns canonically decomposed Unicode (Normal Form D)
# http://developer.apple.com/mac/library/qa/qa2001/qa1173.html
sf0
=
set
(
normalize
(
'NFD'
,
unicode
(
f
))
for
f
in
self
.
files
)
f2
=
[
normalize
(
'NFD'
,
unicode
(
f
))
for
f
in
f2
]
sf2
=
set
(
os
.
path
.
join
(
unicode
(
test_support
.
TESTFN
),
f
)
for
f
in
f2
)
self
.
assertEqual
(
sf0
,
sf2
)
self
.
assertEqual
(
len
(
f1
),
len
(
f2
))
def
test_rename
(
self
):
for
name
in
self
.
files
:
os
.
rename
(
name
,
"tmp"
)
os
.
rename
(
"tmp"
,
name
)
os
.
rename
(
name
,
"tmp"
)
os
.
rename
(
"tmp"
,
name
)
def
test_directory
(
self
):
dirname
=
os
.
path
.
join
(
test_support
.
TESTFN
,
u'Gr
\xfc\xdf
-
\u66e8\u66e9\u66eb
'
)
dirname
=
os
.
path
.
join
(
test_support
.
TESTFN
,
u'Gr
\xfc\xdf
-
\u66e8\u66e9\u66eb
'
)
filename
=
u'
\xdf
-
\u66e8\u66e9\u66eb
'
oldwd
=
os
.
getcwd
()
os
.
mkdir
(
dirname
)
os
.
chdir
(
dirname
)
f
=
open
(
filename
,
'w'
)
f
.
write
((
filename
+
'
\n
'
)
.
encode
(
"utf-8"
))
f
.
close
()
os
.
access
(
filename
,
os
.
R_OK
)
os
.
remove
(
filename
)
os
.
chdir
(
oldwd
)
os
.
rmdir
(
dirname
)
try
:
with
open
(
filename
,
'w'
)
as
f
:
f
.
write
((
filename
+
'
\n
'
)
.
encode
(
"utf-8"
))
os
.
access
(
filename
,
os
.
R_OK
)
os
.
remove
(
filename
)
finally
:
os
.
chdir
(
oldwd
)
os
.
rmdir
(
dirname
)
class
UnicodeNFCFileTests
(
UnicodeFileTests
):
normal_form
=
'NFC'
class
UnicodeNFDFileTests
(
UnicodeFileTests
):
normal_form
=
'NFD'
class
UnicodeNFKCFileTests
(
UnicodeFileTests
):
normal_form
=
'NFKC'
class
UnicodeNFKDFileTests
(
UnicodeFileTests
):
normal_form
=
'NFKD'
def
test_main
():
try
:
test_support
.
run_unittest
(
UnicodeFileTests
)
test_support
.
run_unittest
(
UnicodeFileTests
,
UnicodeNFCFileTests
,
UnicodeNFDFileTests
,
UnicodeNFKCFileTests
,
UnicodeNFKDFileTests
,
)
finally
:
deltree
(
test_support
.
TESTFN
)
if
__name__
==
"__main__"
:
test_main
()
Misc/NEWS
Dosyayı görüntüle @
77a88495
...
...
@@ -98,6 +98,9 @@ Build
Tests
-----
- Issue #8180: Fix test_pep277 on OS X and add more tests for special Unicode
normalization cases.
- Issue #7783: test.test_support.open_urlresource invalidates the outdated
files from the local cache.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment