From f13e71c6848625c4aaa818071b299c340a943e0a Mon Sep 17 00:00:00 2001 From: Stu Cox Date: Mon, 20 Jun 2016 11:44:09 +0100 Subject: [PATCH] Don't treat trailing dashes as a new part This wasn't a problem before adding validation for doc parts in c8bb8ab. --- grow/pods/documents_test.py | 23 ++++++++++++++++++++--- grow/pods/formats.py | 5 ++++- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/grow/pods/documents_test.py b/grow/pods/documents_test.py index 2cab797ea..197c23228 100644 --- a/grow/pods/documents_test.py +++ b/grow/pods/documents_test.py @@ -136,7 +136,7 @@ def test_disallow_part_with_no_locale(self): )) with self.assertRaises(formats.BadFormatError): - self.pod.get_doc('/content/localized/part-with-no-locale.yaml') + self.pod.get_doc('/' + doc_pod_path) # This should be fine: with open(os.path.join(self.pod.root, doc_pod_path), 'w') as f: @@ -154,11 +154,28 @@ def test_disallow_part_with_no_locale(self): foo: bar """ )) - de_doc = self.pod.get_doc('/content/localized/part-with-no-locale.yaml', locale='de') - fr_doc = self.pod.get_doc('/content/localized/part-with-no-locale.yaml', locale='fr') + de_doc = self.pod.get_doc('/' + doc_pod_path, locale='de') + fr_doc = self.pod.get_doc('/' + doc_pod_path, locale='fr') self.assertEqual(de_doc.fields['foo'], 'bar') self.assertNotIn('foo', fr_doc.fields) + def test_dont_treat_trailing_dashes_as_a_new_part(self): + doc_pod_path = 'content/localized/part-with-trailing-dashes.yaml' + with open(os.path.join(self.pod.root, doc_pod_path), 'w') as f: + f.write(dedent( + """\ + --- + root_doc_part: true + --- + $locale: de + subsequent_doc_part: true + --- + """ + )) + + doc = self.pod.get_doc('/' + doc_pod_path) + self.assertEqual(len(doc.format._iterate_content()), 2) + def test_view_override(self): doc = self.pod.get_doc('/content/localized/localized-view-override.yaml') self.assertEqual('/views/localized.html', doc.view) diff --git a/grow/pods/formats.py b/grow/pods/formats.py index ba97c0eff..b1fedc368 100644 --- a/grow/pods/formats.py +++ b/grow/pods/formats.py @@ -80,7 +80,10 @@ def load(self): class _SplitDocumentFormat(Format): def _iterate_content(self): - return [(part, part) for part in Format.split_front_matter(self.content)] + parts = [(part, part) for part in Format.split_front_matter(self.content)] + if not parts[-1][0].strip(): + parts.pop() + return parts def _validate_fields(self, fields): if '$locale' in fields and '$locales' in fields: