diff --git a/lib/jekyll/convertible.rb b/lib/jekyll/convertible.rb index 746f4bd1..5406f13d 100644 --- a/lib/jekyll/convertible.rb +++ b/lib/jekyll/convertible.rb @@ -61,6 +61,10 @@ module Jekyll Jekyll.logger.abort_with "Fatal:", "Invalid YAML front matter in #{File.join(base, name)}" end + unless valid_permalink?(self.data['permalink']) + Jekyll.logger.error "Error:", "Invalid permalink in #{File.join(base, name)}" + end + self.data end @@ -266,6 +270,15 @@ module Jekyll Jekyll::Hooks.trigger hook_owner, :post_render, self end + # Check data permalink + # + # permalink - the data permalink + # + # Returns true if the permalink is valid, false if otherwise + def valid_permalink?(permalink) + permalink.nil? || permalink.length > 0 + end + # Write the generated page file to the destination directory. # # dest - The String path to the destination dir. diff --git a/test/fixtures/empty_permalink.erb b/test/fixtures/empty_permalink.erb new file mode 100644 index 00000000..6dabf63b --- /dev/null +++ b/test/fixtures/empty_permalink.erb @@ -0,0 +1,4 @@ +--- +permalink: '' +--- +Empty Permalink diff --git a/test/test_convertible.rb b/test/test_convertible.rb index 09c69737..840fa323 100644 --- a/test/test_convertible.rb +++ b/test/test_convertible.rb @@ -49,5 +49,14 @@ class TestConvertible < JekyllUnitTest assert_match(/invalid byte sequence in UTF-8/, out) assert_match(/#{File.join(@base, name)}/, out) end + + should "parse the front-matter but show an error if permalink is empty" do + name = 'empty_permalink.erb' + out = capture_stderr do + @convertible.read_yaml(@base, name) + end + assert_match(/Invalid permalink/, out) + assert_match(/#{File.join(@base, name)}/, out) + end end end