/usr/lib/python2.7/dist-packages/FontTools/fontTools/misc/xmlReader_test.py is in fonttools 3.0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | # -*- coding: utf-8 -*-
from __future__ import print_function, division, absolute_import, unicode_literals
from fontTools.misc.py23 import *
import os
import unittest
from fontTools.ttLib import TTFont
from .xmlReader import XMLReader
import tempfile
class TestXMLReader(unittest.TestCase):
def test_decode_utf8(self):
class DebugXMLReader(XMLReader):
def __init__(self, fileName, ttFont, progress=None, quiet=False):
super(DebugXMLReader, self).__init__(
fileName, ttFont, progress, quiet)
self.contents = []
def _endElementHandler(self, name):
if self.stackSize == 3:
name, attrs, content = self.root
self.contents.append(content)
super(DebugXMLReader, self)._endElementHandler(name)
expected = 'fôôbär'
data = '''\
<?xml version="1.0" encoding="UTF-8"?>
<ttFont>
<name>
<namerecord nameID="1" platformID="3" platEncID="1" langID="0x409">
%s
</namerecord>
</name>
</ttFont>
''' % expected
with tempfile.NamedTemporaryFile(delete=False) as tmp:
tmp.write(data.encode('utf-8'))
reader = DebugXMLReader(tmp.name, TTFont(), quiet=True)
reader.read()
os.remove(tmp.name)
content = strjoin(reader.contents[0]).strip()
self.assertEqual(expected, content)
def test_normalise_newlines(self):
class DebugXMLReader(XMLReader):
def __init__(self, fileName, ttFont, progress=None, quiet=False):
super(DebugXMLReader, self).__init__(
fileName, ttFont, progress, quiet)
self.newlines = []
def _characterDataHandler(self, data):
self.newlines.extend([c for c in data if c in ('\r', '\n')])
# notice how when CR is escaped, it is not normalised by the XML parser
data = (
'<ttFont>\r' # \r -> \n
' <test>\r\n' # \r\n -> \n
' a line of text\n' # \n
' escaped CR and unix newline \n' # \n -> \r\n
' escaped CR and macintosh newline \r' # \r -> \r\n
' escaped CR and windows newline \r\n' # \r\n -> \r\n
' </test>\n' # \n
'</ttFont>')
with tempfile.NamedTemporaryFile(delete=False) as tmp:
tmp.write(data.encode('utf-8'))
reader = DebugXMLReader(tmp.name, TTFont(), quiet=True)
reader.read()
os.remove(tmp.name)
expected = ['\n'] * 3 + ['\r', '\n'] * 3 + ['\n']
self.assertEqual(expected, reader.newlines)
if __name__ == '__main__':
unittest.main()
|