forked from github/pelican
Merge pull request #1991 from wjt/empty-md-file
Handle empty Markdown files more gracefully.
This commit is contained in:
commit
d5fbd3be93
6 changed files with 27 additions and 4 deletions
|
|
@ -288,7 +288,10 @@ class MarkdownReader(BaseReader):
|
|||
with pelican_open(source_path) as text:
|
||||
content = self._md.convert(text)
|
||||
|
||||
metadata = self._parse_metadata(self._md.Meta)
|
||||
if hasattr(self._md, 'Meta'):
|
||||
metadata = self._parse_metadata(self._md.Meta)
|
||||
else:
|
||||
metadata = {}
|
||||
return content, metadata
|
||||
|
||||
|
||||
|
|
|
|||
0
pelican/tests/content/empty.md
Normal file
0
pelican/tests/content/empty.md
Normal file
1
pelican/tests/content/empty_with_bom.md
Normal file
1
pelican/tests/content/empty_with_bom.md
Normal file
|
|
@ -0,0 +1 @@
|
|||
|
||||
|
|
@ -56,12 +56,15 @@ class TestCache(unittest.TestCase):
|
|||
generator.readers.read_file = MagicMock()
|
||||
generator.generate_context()
|
||||
"""
|
||||
3 Files don't get cached because they were not valid
|
||||
6 files don't get cached because they were not valid
|
||||
- article_with_attributes_containing_double_quotes.html
|
||||
- article_with_comments.html
|
||||
- article_with_null_attributes.html
|
||||
- 2012-11-30_md_w_filename_meta#foo-bar.md
|
||||
- empty.md
|
||||
- empty_with_bom.md
|
||||
"""
|
||||
self.assertEqual(generator.readers.read_file.call_count, 4)
|
||||
self.assertEqual(generator.readers.read_file.call_count, 6)
|
||||
|
||||
@unittest.skipUnless(MagicMock, 'Needs Mock module')
|
||||
def test_article_reader_content_caching(self):
|
||||
|
|
|
|||
|
|
@ -546,6 +546,22 @@ class MdReaderTest(ReaderTest):
|
|||
}
|
||||
self.assertDictHasSubset(metadata, expected)
|
||||
|
||||
def test_empty_file(self):
|
||||
reader = readers.MarkdownReader(settings=get_settings())
|
||||
content, metadata = reader.read(
|
||||
_path('empty.md'))
|
||||
|
||||
self.assertEqual(metadata, {})
|
||||
self.assertEqual(content, '')
|
||||
|
||||
def test_empty_file_with_bom(self):
|
||||
reader = readers.MarkdownReader(settings=get_settings())
|
||||
content, metadata = reader.read(
|
||||
_path('empty_with_bom.md'))
|
||||
|
||||
self.assertEqual(metadata, {})
|
||||
self.assertEqual(content, '')
|
||||
|
||||
|
||||
class HTMLReaderTest(ReaderTest):
|
||||
def test_article_with_comments(self):
|
||||
|
|
|
|||
|
|
@ -244,7 +244,7 @@ def pelican_open(filename, mode='rb', strip_crs=(sys.platform == 'win32')):
|
|||
|
||||
with codecs.open(filename, mode, encoding='utf-8') as infile:
|
||||
content = infile.read()
|
||||
if content[0] == codecs.BOM_UTF8.decode('utf8'):
|
||||
if content[:1] == codecs.BOM_UTF8.decode('utf8'):
|
||||
content = content[1:]
|
||||
if strip_crs:
|
||||
content = content.replace('\r\n', '\n')
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue