From 5e53d334e6feea828871ad2113ca52da2e99a5ff Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 21 Jun 2016 10:30:06 +0530 Subject: [PATCH] Add a test for ensure_prefix --- src/calibre/ebooks/metadata/opf3.py | 6 +++--- src/calibre/ebooks/metadata/opf3_test.py | 6 +++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/calibre/ebooks/metadata/opf3.py b/src/calibre/ebooks/metadata/opf3.py index 6339ba32f4..ff48a14138 100644 --- a/src/calibre/ebooks/metadata/opf3.py +++ b/src/calibre/ebooks/metadata/opf3.py @@ -133,8 +133,8 @@ def read_prefixes(root): def expand_prefix(raw, prefixes): return regex(r'(\S+)\s*:\s*(\S+)').sub(lambda m:(prefixes.get(m.group(1), m.group(1)) + ':' + m.group(2)), raw) -def ensure_prefix(root, prefixes, prefix, value): - prefixes[prefix] = value +def ensure_prefix(root, prefixes, prefix, value=None): + prefixes[prefix] = value or reserved_prefixes[prefix] prefixes = {k:v for k, v in prefixes.iteritems() if reserved_prefixes.get(k) != v} if prefixes: root.set('prefix', ' '.join('%s: %s' % (k, v) for k, v in prefixes.iteritems())) @@ -380,7 +380,7 @@ def read_authors(root, prefixes, refines): return uniq(roled_authors or unroled_authors) def set_authors(root, prefixes, refines, authors): - ensure_prefix(root, prefixes, 'marc', reserved_prefixes['marc']) + ensure_prefix(root, prefixes, 'marc') for item in XPath('./opf:metadata/dc:creator')(root): props = properties_for_id_with_scheme(item.get('id'), prefixes, refines) role = props.get('role') diff --git a/src/calibre/ebooks/metadata/opf3_test.py b/src/calibre/ebooks/metadata/opf3_test.py index 2db9b7fca6..771174cd94 100644 --- a/src/calibre/ebooks/metadata/opf3_test.py +++ b/src/calibre/ebooks/metadata/opf3_test.py @@ -13,7 +13,7 @@ from calibre.ebooks.metadata.opf3 import ( parse_prefixes, reserved_prefixes, expand_prefix, read_identifiers, read_metadata, set_identifiers, XPath, set_application_id, read_title, read_refines, set_title, read_title_sort, read_languages, set_languages, - read_authors, Author, set_authors + read_authors, Author, set_authors, ensure_prefix, read_prefixes ) TEMPLATE = '''{metadata}''' # noqa @@ -35,6 +35,10 @@ class TestOPF3(unittest.TestCase): ('xxx', 'xxx'), ): self.ae(expand_prefix(raw, reserved_prefixes), expanded) + root = self.get_opf() + ensure_prefix(root, read_prefixes(root), 'calibre', 'https://calibre-ebook.com') + ensure_prefix(root, read_prefixes(root), 'marc', reserved_prefixes['marc']) + self.ae(parse_prefixes(root.get('prefix')), {'calibre': 'https://calibre-ebook.com'}) # }}} def test_identifiers(self): # {{{