diff --git a/lib/jekyll/tags/post_url.rb b/lib/jekyll/tags/post_url.rb index 04c1ef29..b865cd67 100644 --- a/lib/jekyll/tags/post_url.rb +++ b/lib/jekyll/tags/post_url.rb @@ -14,7 +14,8 @@ module Jekyll "'#{name}' does not contain valid date and/or title." end - @name_regex = %r!^#{path}#{date}-#{slug}\.[^.]+! + @name_regex = %r!^_posts/#{path}#{date}-#{slug}\.[^.]+| + ^#{path}_posts/?#{date}-#{slug}\.[^.]+!x end def post_date @@ -23,7 +24,7 @@ module Jekyll end def ==(other) - other.basename.match(@name_regex) + other.relative_path.match(@name_regex) end def deprecated_equality(other) diff --git a/test/test_tags.rb b/test/test_tags.rb index 8a0395f3..6bf4b84b 100644 --- a/test/test_tags.rb +++ b/test/test_tags.rb @@ -589,6 +589,40 @@ CONTENT end end + context "simple page with nested post linking and path not used in `post_url`" do + setup do + content = < "pretty", + "source" => source_dir, + "destination" => dest_dir, + "read_posts" => true + }) + end + + should "not cause an error" do + refute_match(%r!markdown\-html\-error!, @result) + end + + should "have the url to the \"nested\" post from 2008-11-21" do + assert_match %r!1\s/2008/11/21/nested/!, @result + end + + should "throw a deprecation warning" do + deprecation_warning = " Deprecation: A call to "\ + "'{{ post_url 2008-11-21-nested }}' did not match a post using the new matching "\ + "method of checking name (path-date-slug) equality. Please make sure that you "\ + "change this tag to match the post's name exactly." + assert_includes Jekyll.logger.messages, deprecation_warning + end + end + context "simple page with invalid post name linking" do should "cause an error" do content = <