Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 207013d

Browse files
committed
Convert SVG metadata test to XML/XPath parsing.
1 parent f0b133d commit 207013d

File tree

1 file changed

+35
-10
lines changed

1 file changed

+35
-10
lines changed

lib/matplotlib/tests/test_backend_svg.py

Lines changed: 35 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import datetime
22
from io import BytesIO
33
import re
4-
import sys
54
import tempfile
5+
import xml.etree.ElementTree
66
import xml.parsers.expat
77

88
import numpy as np
@@ -294,16 +294,41 @@ def test_svg_metadata():
294294
fig.savefig(fd, format='svg', metadata=metadata)
295295
buf = fd.getvalue().decode()
296296

297-
# Check things that are easy, single or multi-value entries.
297+
SVGNS = '{http://www.w3.org/2000/svg}'
298+
RDFNS = '{http://www.w3.org/1999/02/22-rdf-syntax-ns#}'
299+
CCNS = '{http://creativecommons.org/ns#}'
300+
DCNS = '{http://purl.org/dc/elements/1.1/}'
301+
302+
root = xml.etree.ElementTree.fromstring(buf)
303+
rdf, = root.findall(f'./{SVGNS}metadata/{RDFNS}RDF')
304+
305+
# Check things that are single entries.
306+
titles = [node.text for node in root.findall(f'./{SVGNS}title')]
307+
assert titles == [metadata['Title']]
308+
types = [node.attrib[f'{RDFNS}resource']
309+
for node in rdf.findall(f'./{CCNS}Work/{DCNS}type')]
310+
assert types == [metadata['Type']]
298311
for k in ['Description', *single_value]:
299-
if sys.platform == 'win32':
300-
assert metadata[k].replace('\n', '\r\n') in buf
301-
else:
302-
assert metadata[k] in buf
312+
if k == 'Type':
313+
continue
314+
values = [node.text
315+
for node in rdf.findall(f'./{CCNS}Work/{DCNS}{k.lower()}')]
316+
assert values == [metadata[k]]
317+
318+
# Check things that are multi-value entries.
303319
for k in multi_value:
304-
for v in metadata[k]:
305-
assert v in buf
320+
if k == 'Keywords':
321+
continue
322+
values = [
323+
node.text
324+
for node in rdf.findall(
325+
f'./{CCNS}Work/{DCNS}{k.lower()}/{CCNS}Agent/{DCNS}title')]
326+
assert values == metadata[k]
306327

307328
# Check special things.
308-
assert '1968-08-01' in buf # Start date
309-
assert '1968-08-02T01:02:03' in buf # End date
329+
dates = [node.text for node in rdf.findall(f'./{CCNS}Work/{DCNS}date')]
330+
assert dates == ['1968-08-01/1968-08-02T01:02:03']
331+
332+
values = [node.text for node in
333+
rdf.findall(f'./{CCNS}Work/{DCNS}subject/{RDFNS}Bag/{RDFNS}li')]
334+
assert values == metadata['Keywords']

0 commit comments

Comments
 (0)