diff --git a/lib/jekyll/tags/post_url.rb b/lib/jekyll/tags/post_url.rb index 063e22a4..3076b75e 100644 --- a/lib/jekyll/tags/post_url.rb +++ b/lib/jekyll/tags/post_url.rb @@ -7,6 +7,7 @@ module Jekyll def initialize(name) all, path, date, slug = *name.sub(/^\//, "").match(MATCHER) + raise ArgumentError unless all @slug = path ? path + slug : slug @date = Time.parse(date) end @@ -38,7 +39,15 @@ module Jekyll def initialize(tag_name, post, tokens) super @orig_post = post.strip - @post = PostComparer.new(@orig_post) + begin + @post = PostComparer.new(@orig_post) + rescue + raise ArgumentError.new <<-eos +Could not parse name of post "#{@orig_post}" in tag 'post_url'. + +Make sure the post exists and the name is correct. +eos + end end def render(context) diff --git a/test/test_tags.rb b/test/test_tags.rb index b21f4931..193ac998 100644 --- a/test/test_tags.rb +++ b/test/test_tags.rb @@ -237,6 +237,22 @@ CONTENT end end + context "simple page with invalid post name linking" do + should "cause an error" do + content = < 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true}) + end + end + end + context "gist tag" do context "simple" do setup do