Merge pull request #1951 from jens-na/include-tag-error-path

This commit is contained in:
Parker Moore 2014-01-21 20:07:11 -08:00
commit 05df50f929
2 changed files with 24 additions and 4 deletions

View File

@ -102,7 +102,7 @@ eos
validate_file_name(file) validate_file_name(file)
path = File.join(dir, file) path = File.join(dir, file)
validate_file(path, context.registers[:site].safe) validate_file(context.registers[:site].source, path, context.registers[:site].safe)
begin begin
partial = Liquid::Template.parse(source(path, context)) partial = Liquid::Template.parse(source(path, context))
@ -122,11 +122,12 @@ eos
end end
end end
def validate_file(file, safe) def validate_file(sourcedir, file, safe)
relative_file = Pathname.new(file).relative_path_from(Pathname.new(sourcedir))
if !File.exists?(file) if !File.exists?(file)
raise IOError.new "Included file '#{file}' not found" raise IOError.new "Included file '#{relative_file}' not found"
elsif File.symlink?(file) && safe elsif File.symlink?(file) && safe
raise IOError.new "The included file '#{file}' should not be a symlink" raise IOError.new "The included file '#{relative_file}' should not be a symlink"
end end
end end

View File

@ -487,6 +487,25 @@ CONTENT
end end
end end
context "include missing file" do
setup do
@content = <<CONTENT
---
title: missing file
---
{% include missing.html %}
CONTENT
end
should "raise error relative to source directory" do
exception = assert_raise IOError do
create_post(@content, {'permalink' => 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true})
end
assert_equal 'Included file \'_includes/missing.html\' not found', exception.message
end
end
context "include tag with variable and liquid filters" do context "include tag with variable and liquid filters" do
setup do setup do
stub(Jekyll).configuration do stub(Jekyll).configuration do