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):
64
raise TestSkipped('This test is skipped until unicode filenames are worked out')
65
# FIXME: jam 20060425 Right now build_tree does not accept unicode filenames
66
self.build_tree([a_circle_c, a_dots_c, z_umlat_c])
68
if sys.platform == 'darwin':
69
expected = sorted([a_circle_d, a_dots_d, z_umlat_d])
71
expected = sorted([a_circle_c, a_dots_c, z_umlat_c])
73
present = sorted(os.listdir(u'.'))
74
self.assertEqual(expected, present)
76
def test_access(self):
77
# We should always be able to access files by the path returned
78
# from unicode_filename
79
raise TestSkipped('This test is skipped until unicode filenames are worked out')
80
# FIXME: jam 20060425 Right now build_tree does not accept unicode filenames
81
files = [a_circle_c, a_dots_c, z_umlat_c]
82
self.build_tree(files)
85
path = unicode_filename(fname)[0]
86
# We should get an exception if we can't open the file at