From 0bebe0f31c63e8df275c725fb3cc21c5993f2e05 Mon Sep 17 00:00:00 2001 From: Lucas Jenss Date: Sun, 31 Mar 2013 20:20:15 +0200 Subject: [PATCH 1/3] Add test for processing of symlinked static files and pages --- test/source/symlink-test/symlinked-dir | 1 + test/source/symlink-test/symlinked-file | 1 + test/test_site.rb | 14 ++++++++++++++ 3 files changed, 16 insertions(+) create mode 120000 test/source/symlink-test/symlinked-dir create mode 120000 test/source/symlink-test/symlinked-file diff --git a/test/source/symlink-test/symlinked-dir b/test/source/symlink-test/symlinked-dir new file mode 120000 index 00000000..d2d7c52c --- /dev/null +++ b/test/source/symlink-test/symlinked-dir @@ -0,0 +1 @@ +../css \ No newline at end of file diff --git a/test/source/symlink-test/symlinked-file b/test/source/symlink-test/symlinked-file new file mode 120000 index 00000000..79c5d6f0 --- /dev/null +++ b/test/source/symlink-test/symlinked-file @@ -0,0 +1 @@ +../index.html \ No newline at end of file diff --git a/test/test_site.rb b/test/test_site.rb index 6934596f..17303f7d 100644 --- a/test/test_site.rb +++ b/test/test_site.rb @@ -206,12 +206,26 @@ class TestSite < Test::Unit::TestCase Jekyll::DEFAULTS.merge({'source' => source_dir, 'destination' => dest_dir, 'safe' => true}) end site = Site.new(Jekyll.configuration) + + site.read_directories("symlink-test") + assert_equal [], site.pages + assert_equal [], site.static_files + stub(File).symlink?('symlink.js') {true} files = %w[symlink.js] assert_equal [], site.filter_entries(files) end should "not filter symlink entries when safe mode disabled" do + stub(Jekyll).configuration do + Jekyll::DEFAULTS.merge({'source' => source_dir, 'destination' => dest_dir, 'safe' => false}) + end + site = Site.new(Jekyll.configuration) + + site.read_directories("symlink-test") + assert_not_equal [], site.pages + assert_not_equal [], site.static_files + stub(File).symlink?('symlink.js') {true} files = %w[symlink.js] assert_equal files, @site.filter_entries(files) From 2c7325223fcc945e919f0f1de0106c8196d39ac7 Mon Sep 17 00:00:00 2001 From: Lucas Jenss Date: Sun, 31 Mar 2013 20:49:43 +0200 Subject: [PATCH 2/3] Fix symlinked assets not being included, even in unsafe mode --- lib/jekyll/site.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/jekyll/site.rb b/lib/jekyll/site.rb index b4b40442..b9a82ef2 100644 --- a/lib/jekyll/site.rb +++ b/lib/jekyll/site.rb @@ -159,7 +159,7 @@ module Jekyll if File.directory?(f_abs) next if self.dest.sub(/\/$/, '') == f_abs read_directories(f_rel) - elsif !File.symlink?(f_abs) + else first3 = File.open(f_abs) { |fd| fd.read(3) } if first3 == "---" # file appears to have a YAML header so process it as a page From 571bdd686cc09dcc0f309debd1ee6a215462f790 Mon Sep 17 00:00:00 2001 From: Lucas Jenss Date: Mon, 1 Apr 2013 12:02:15 +0200 Subject: [PATCH 3/3] Move tests for symlinked files to separate test cases --- test/test_site.rb | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/test/test_site.rb b/test/test_site.rb index 17303f7d..42643b13 100644 --- a/test/test_site.rb +++ b/test/test_site.rb @@ -206,17 +206,29 @@ class TestSite < Test::Unit::TestCase Jekyll::DEFAULTS.merge({'source' => source_dir, 'destination' => dest_dir, 'safe' => true}) end site = Site.new(Jekyll.configuration) - - site.read_directories("symlink-test") - assert_equal [], site.pages - assert_equal [], site.static_files - stub(File).symlink?('symlink.js') {true} files = %w[symlink.js] assert_equal [], site.filter_entries(files) end should "not filter symlink entries when safe mode disabled" do + stub(File).symlink?('symlink.js') {true} + files = %w[symlink.js] + assert_equal files, @site.filter_entries(files) + end + + should "not include symlinks in safe mode" do + stub(Jekyll).configuration do + Jekyll::DEFAULTS.merge({'source' => source_dir, 'destination' => dest_dir, 'safe' => true}) + end + site = Site.new(Jekyll.configuration) + + site.read_directories("symlink-test") + assert_equal [], site.pages + assert_equal [], site.static_files + end + + should "include symlinks in unsafe mode" do stub(Jekyll).configuration do Jekyll::DEFAULTS.merge({'source' => source_dir, 'destination' => dest_dir, 'safe' => false}) end @@ -225,10 +237,6 @@ class TestSite < Test::Unit::TestCase site.read_directories("symlink-test") assert_not_equal [], site.pages assert_not_equal [], site.static_files - - stub(File).symlink?('symlink.js') {true} - files = %w[symlink.js] - assert_equal files, @site.filter_entries(files) end context 'error handling' do