Skip to content

Commit ff73ebd

Browse files
committed
Always use unicode to test XML content
- This allows to use assertXmlEqual to py3
1 parent 98a3526 commit ff73ebd

File tree

1 file changed

+23
-42
lines changed

1 file changed

+23
-42
lines changed

tests/test_libcomxml.py

Lines changed: 23 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
_ROOT = os.path.abspath(os.path.dirname(__file__))
1414

1515

16-
if sys.version_info[0] < 3:
17-
# python2
16+
class XMLTest(unittest.TestCase):
17+
1818
def assertXmlEqual(self, got, want):
1919
from lxml.doctestcompare import LXMLOutputChecker
2020
from doctest import Example
@@ -25,10 +25,6 @@ def assertXmlEqual(self, got, want):
2525
message = checker.output_difference(Example("", want), got, 0)
2626
raise AssertionError(message)
2727

28-
unittest.TestCase.assertXmlEqual = assertXmlEqual
29-
else:
30-
# python3
31-
unittest.TestCase.assertXmlEqual = unittest.TestCase.assertEqual
3228

3329
class Cd(XmlModel):
3430

@@ -109,11 +105,10 @@ def test_update_attributes(self):
109105
self.assertEqual(self.field.element().items(), [('uom', 'kg')])
110106

111107

112-
class TestModel(unittest.TestCase):
108+
class TestModel(XMLTest):
113109

114110
def setUp(self):
115-
self.xml = "<?xml version='1.0' encoding='UTF-8'?>\n"
116-
self.xml += re.sub('\s+<', '<', """
111+
self.xml = re.sub('\s+<', '<', """
117112
<CATALOG>
118113
<CD>
119114
<ARTIST>Bob Dylan</ARTIST>
@@ -174,21 +169,16 @@ def setUp(self):
174169
self.catalog.build_tree()
175170

176171
def test_xml(self):
177-
with open('/tmp/x1.xml', 'wb') as f:
178-
f.write(self.xml.encode('utf8'))
179-
with open('/tmp/x2.xml', 'wb') as f:
180-
f.write(self.catalog.serialize())
181-
self.assertXmlEqual(self.xml.encode('utf8'), self.catalog.serialize())
172+
self.assertXmlEqual(self.xml, str(self.catalog))
182173

183174

184-
class TestEmpty(unittest.TestCase):
175+
class TestEmpty(XMLTest):
185176

186177
def setUp(self):
187-
self.xml = "<?xml version='1.0' encoding='UTF-8'?>\n<feed>"
178+
self.xml = "<feed>"
188179
self.xml += "<test>foo</test><link href=\"http://example.com\"/>"
189180
self.xml += "<entry><val>1</val></entry><entry><val>2</val></entry>"
190181
self.xml += "</feed>"
191-
self.xml = self.xml.encode('utf8')
192182

193183
def test_empty(self):
194184

@@ -219,10 +209,10 @@ def __init__(self):
219209

220210
feed.build_tree()
221211

222-
self.assertXmlEqual(self.xml, feed.serialize())
212+
self.assertXmlEqual(self.xml, str(feed))
223213

224214

225-
class TestValue(unittest.TestCase):
215+
class TestValue(XMLTest):
226216
value = None
227217

228218
def _test_drop(self, drop_empty=False, xml=None):
@@ -253,74 +243,67 @@ def __init__(self):
253243

254244
feed.build_tree()
255245

256-
self.assertXmlEqual(xml, feed.serialize())
246+
self.assertXmlEqual(xml, str(feed))
257247

258248

259249
class TestZeroValue(TestValue):
260250
value = 0
261251

262252
def test_drop_empty_disabled(self):
263-
xml = "<?xml version='1.0' encoding='UTF-8'?>\n<feed>"
253+
xml = "<feed>"
264254
xml += "<test>foo</test><link href=\"http://example.com\"/>"
265255
xml += "<entry><val>1</val></entry><entry><val>0</val></entry>"
266256
xml += "</feed>"
267-
xml = xml.encode('utf8')
268257
self._test_drop(False, xml)
269258

270259
def test_drop_empty_enabled(self):
271-
xml = "<?xml version='1.0' encoding='UTF-8'?>\n<feed>"
260+
xml = "<feed>"
272261
xml += "<test>foo</test>"
273262
xml += "<entry><val>1</val></entry><entry><val>0</val></entry>"
274263
xml += "</feed>"
275-
xml = xml.encode('utf8')
276264
self._test_drop(True, xml)
277265

278266

279267
class TestFalseValue(TestValue):
280268
value = False
281269

282270
def test_false_drop_empty_disabled(self):
283-
xml = "<?xml version='1.0' encoding='UTF-8'?>\n<feed>"
271+
xml = "<feed>"
284272
xml += "<test>foo</test><link href=\"http://example.com\"/>"
285273
xml += "<entry><val>1</val></entry><entry/>"
286274
xml += "</feed>"
287-
xml = xml.encode('utf8')
288275
self._test_drop(False, xml)
289276

290277
def test_false_drop_empty_enabled(self):
291-
xml = "<?xml version='1.0' encoding='UTF-8'?>\n<feed>"
278+
xml = "<feed>"
292279
xml += "<test>foo</test>"
293280
xml += "<entry><val>1</val></entry>"
294281
xml += "</feed>"
295-
xml = xml.encode('utf8')
296282
self._test_drop(True, xml)
297283

298284

299285
class TestNoneValue(TestValue):
300286
value = None
301287

302288
def test_drop_empty_disabled(self):
303-
xml = "<?xml version='1.0' encoding='UTF-8'?>\n<feed>"
289+
xml = "<feed>"
304290
xml += "<test>foo</test><link href=\"http://example.com\"/>"
305291
xml += "<entry><val>1</val></entry><entry/>"
306292
xml += "</feed>"
307-
xml = xml.encode('utf8')
308293
self._test_drop(False, xml)
309294

310295
def test_drop_empty_enabled(self):
311-
xml = "<?xml version='1.0' encoding='UTF-8'?>\n<feed>"
296+
xml = "<feed>"
312297
xml += "<test>foo</test>"
313298
xml += "<entry><val>1</val></entry>"
314299
xml += "</feed>"
315-
xml = xml.encode('utf8')
316300
self._test_drop(True, xml)
317301

318-
class RootWithAttributes(unittest.TestCase):
302+
303+
class RootWithAttributes(XMLTest):
319304

320305
def setUp(self):
321-
self.xml = "<?xml version='1.0' encoding='UTF-8'?>\n"
322-
self.xml += "<link href=\"http://example.com\"/>"
323-
self.xml = self.xml.encode('utf8')
306+
self.xml = "<link href=\"http://example.com\"/>"
324307

325308
def test_root_with_attributes(self):
326309

@@ -336,13 +319,12 @@ def __init__(self):
336319
l.tag.attributes.update({'href': 'http://example.com'})
337320
l.build_tree()
338321

339-
self.assertXmlEqual(self.xml, l.serialize())
322+
self.assertXmlEqual(self.xml, str(l))
340323

341324

342-
class Namespaces(unittest.TestCase):
325+
class Namespaces(XMLTest):
343326
def setUp(self):
344-
self.xml = "<?xml version='1.0' encoding='UTF-8'?>\n"
345-
self.xml += "<rss "
327+
self.xml = "<rss "
346328
self.xml += "xmlns:atom=\"http://www.w3.org/2005/Atom\" "
347329
self.xml += "xmlns:opensearch=\"http://a9.com/-/spec/opensearch/1.1/\" "
348330
self.xml += "version=\"2.0\">"
@@ -354,7 +336,6 @@ def setUp(self):
354336
self.xml += "<opensearch:totalResults>4230000</opensearch:totalResults>"
355337
self.xml += "</channel>"
356338
self.xml += "</rss>"
357-
self.xml = self.xml.encode('utf8')
358339

359340
def test_namesapces_root(self):
360341

@@ -404,6 +385,6 @@ def __init__(self):
404385
rss.build_tree()
405386

406387
self.assertXmlEqual(
407-
self.xml, rss.serialize()
388+
self.xml, str(rss)
408389
)
409390

0 commit comments

Comments
 (0)