17
17
"""Test that various operations work in a non-ASCII environment."""
21
from unicodedata import normalize
21
from bzrlib.osutils import pathjoin
23
from bzrlib.osutils import pathjoin, normalizes_filenames, unicode_filename
22
24
from bzrlib.tests import TestCaseWithTransport, TestSkipped
23
25
from bzrlib.workingtree import WorkingTree
36
38
file(pathjoin(br_dir, "a"), "w").write("hello")
37
39
wt.add(["a"], ["a-id"])
44
a_circle_d = u'a\u030a'
47
z_umlat_d = u'Z\u030c'
50
class UnicodeFilename(TestCaseWithTransport):
51
"""Test that UnicodeFilename returns the expected values."""
53
def test_a_circle(self):
54
self.assertEqual(a_circle_d, normalize('NFKD', a_circle_c))
55
self.assertEqual(a_circle_c, normalize('NFKC', a_circle_d))
57
self.assertEqual((a_circle_c, True), unicode_filename(a_circle_c))
58
if normalizes_filenames():
59
self.assertEqual((a_circle_c, True), unicode_filename(a_circle_d))
61
self.assertEqual((a_circle_d, False), unicode_filename(a_circle_d))
63
def test_platform(self):
65
self.build_tree([a_circle_c, a_dots_c, z_umlat_c])
67
raise TestSkipped("filesystem cannot create unicode files")
69
if sys.platform == 'darwin':
70
expected = sorted([a_circle_d, a_dots_d, z_umlat_d])
72
expected = sorted([a_circle_c, a_dots_c, z_umlat_c])
74
present = sorted(os.listdir(u'.'))
75
self.assertEqual(expected, present)
77
def test_access(self):
78
# We should always be able to access files by the path returned
79
# from unicode_filename
80
files = [a_circle_c, a_dots_c, z_umlat_c]
82
self.build_tree(files)
84
raise TestSkipped("filesystem cannot create unicode files")
87
path = unicode_filename(fname)[0]
88
# We should get an exception if we can't open the file at