check if relative URL contains a colon

fixes #2834
This commit is contained in:
Florian Thomas 2016-07-08 20:33:47 +02:00
parent f6dc749332
commit cc82d44222
No known key found for this signature in database
GPG Key ID: FCEEC9743EC7B893
3 changed files with 22 additions and 4 deletions

View File

@ -9,8 +9,9 @@ module Jekyll
InvalidYAMLFrontMatterError = Class.new(FatalException)
MissingDependencyException = Class.new(FatalException)
InvalidDateError = Class.new(FatalException)
InvalidPostNameError = Class.new(FatalException)
PostURLError = Class.new(FatalException)
InvalidDateError = Class.new(FatalException)
InvalidPostNameError = Class.new(FatalException)
PostURLError = Class.new(FatalException)
InvalidURLError = Class.new(FatalException)
end
end

View File

@ -35,8 +35,15 @@ module Jekyll
# The generated relative URL of the resource
#
# Returns the String URL
# Raises a Jekyll::Errors::InvalidURLError if the relative URL contains a colon
def to_s
sanitize_url(generated_permalink || generated_url)
sanitized_url = sanitize_url(generated_permalink || generated_url)
if sanitized_url.include?(":")
raise Jekyll::Errors::InvalidURLError,
"The URL #{sanitized_url} is invalid because it contains a colon."
else
sanitized_url
end
end
# Generates a URL from the permalink

View File

@ -70,5 +70,15 @@ class TestURL < JekyllUnitTest
:placeholders => matching_doc.url_placeholders
).to_s
end
should "throw an exception if the URL contains a colon" do
url = URL.new(
:template => "/:x/:y/:z",
:placeholders => { :x => "foo", :z => "bar" }
)
assert_raises Jekyll::Errors::InvalidURLError do
url.to_s
end
end
end
end