Always normalize the result of the relative_url filter (#6185)

Merge pull request 6185
This commit is contained in:
Ben Balter 2017-06-30 21:58:25 -04:00 committed by jekyllbot
parent b089e44016
commit 9f7815786b
2 changed files with 11 additions and 2 deletions

View File

@ -23,9 +23,9 @@ module Jekyll
# Returns a URL relative to the domain root as a String.
def relative_url(input)
return if input.nil?
return ensure_leading_slash(input.to_s) if sanitized_baseurl.nil?
parts = [sanitized_baseurl, input]
Addressable::URI.parse(
ensure_leading_slash(sanitized_baseurl) + ensure_leading_slash(input.to_s)
parts.compact.map { |part| ensure_leading_slash(part.to_s) }.join
).normalize.to_s
end

View File

@ -491,6 +491,15 @@ class TestFilters < JekyllUnitTest
})
assert_equal "/", filter.relative_url(page_url)
end
should "not return the url by reference" do
filter = make_filter_mock({ :baseurl => nil })
page = Page.new(filter.site, test_dir("fixtures"), "", "front_matter.erb")
assert_equal "/front_matter.erb", page.url
url = filter.relative_url(page.url)
url << "foo"
assert_equal "/front_matter.erb", page.url
end
end
context "strip_index filter" do