forked from github/pelican
Fix setting None metadata from FILENAME_METADATA matches.
This is relevant when using optional items in the expression. E.g. if an optional captured group is not matched, the result of `match.groupdict()` contains the captured group with value `None`.
This commit is contained in:
parent
ee643d47d7
commit
4917b8618a
2 changed files with 39 additions and 1 deletions
|
|
@ -672,7 +672,7 @@ def parse_path_metadata(source_path, settings=None, process=None):
|
|||
# .items() for py3k compat.
|
||||
for k, v in match.groupdict().items():
|
||||
k = k.lower() # metadata must be lowercase
|
||||
if k not in metadata:
|
||||
if v is not None and k not in metadata:
|
||||
if process:
|
||||
v = process(k, v)
|
||||
metadata[k] = v
|
||||
|
|
|
|||
|
|
@ -166,6 +166,25 @@ class RstReaderTest(ReaderTest):
|
|||
}
|
||||
self.assertDictHasSubset(page.metadata, expected)
|
||||
|
||||
def test_article_with_optional_filename_metadata(self):
|
||||
page = self.read_file(
|
||||
path='2012-11-29_rst_w_filename_meta#foo-bar.rst',
|
||||
FILENAME_METADATA='(?P<date>\d{4}-\d{2}-\d{2})?')
|
||||
expected = {
|
||||
'date': SafeDatetime(2012, 11, 29),
|
||||
'reader': 'rst',
|
||||
}
|
||||
self.assertDictHasSubset(page.metadata, expected)
|
||||
|
||||
page = self.read_file(
|
||||
path='article.rst',
|
||||
FILENAME_METADATA='(?P<date>\d{4}-\d{2}-\d{2})?')
|
||||
expected = {
|
||||
'reader': 'rst',
|
||||
}
|
||||
self.assertDictHasSubset(page.metadata, expected)
|
||||
self.assertNotIn('date', page.metadata, 'Date should not be set.')
|
||||
|
||||
def test_article_metadata_key_lowercase(self):
|
||||
# Keys of metadata should be lowercase.
|
||||
reader = readers.RstReader(settings=get_settings())
|
||||
|
|
@ -561,6 +580,25 @@ class MdReaderTest(ReaderTest):
|
|||
}
|
||||
self.assertDictHasSubset(page.metadata, expected)
|
||||
|
||||
def test_article_with_optional_filename_metadata(self):
|
||||
page = self.read_file(
|
||||
path='2012-11-30_md_w_filename_meta#foo-bar.md',
|
||||
FILENAME_METADATA='(?P<date>\d{4}-\d{2}-\d{2})?')
|
||||
expected = {
|
||||
'date': SafeDatetime(2012, 11, 30),
|
||||
'reader': 'markdown',
|
||||
}
|
||||
self.assertDictHasSubset(page.metadata, expected)
|
||||
|
||||
page = self.read_file(
|
||||
path='empty.md',
|
||||
FILENAME_METADATA='(?P<date>\d{4}-\d{2}-\d{2})?')
|
||||
expected = {
|
||||
'reader': 'markdown',
|
||||
}
|
||||
self.assertDictHasSubset(page.metadata, expected)
|
||||
self.assertNotIn('date', page.metadata, 'Date should not be set.')
|
||||
|
||||
def test_duplicate_tags_or_authors_are_removed(self):
|
||||
reader = readers.MarkdownReader(settings=get_settings())
|
||||
content, metadata = reader.read(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue