1
0
Fork 0
forked from github/pelican

Merge pull request #1991 from wjt/empty-md-file

Handle empty Markdown files more gracefully.
This commit is contained in:
Justin Mayer 2016-09-16 20:22:43 -06:00 committed by GitHub
commit d5fbd3be93
6 changed files with 27 additions and 4 deletions

View file

@ -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

View file

View file

@ -0,0 +1 @@


View file

@ -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):

View file

@ -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):

View file

@ -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')