parent
04baeefaa8
commit
72c410363c
|
@ -30,7 +30,7 @@ module Jekyll
|
|||
def existing_files
|
||||
files = Set.new
|
||||
Dir.glob(File.join(site.dest, "**", "*"), File::FNM_DOTMATCH) do |file|
|
||||
files << file unless file =~ /\/\.{1,2}$/ || file =~ keep_file_regex
|
||||
files << file unless file =~ /\/\.{1,2}$/ || file =~ keep_file_regex || keep_dirs.include?(file)
|
||||
end
|
||||
files
|
||||
end
|
||||
|
@ -71,6 +71,14 @@ module Jekyll
|
|||
new_dirs.select { |dir| File.file?(dir) }.to_set
|
||||
end
|
||||
|
||||
# Private: The list of directories that need to be kept because they are parent directories
|
||||
# of files specified in keep_files
|
||||
#
|
||||
# Returns a Set with the directory paths
|
||||
def keep_dirs
|
||||
site.keep_files.map{|file| parent_dirs(File.join(site.dest, file))}.flatten.to_set
|
||||
end
|
||||
|
||||
# Private: Creates a regular expression from the config's keep_files array
|
||||
#
|
||||
# Examples
|
||||
|
|
|
@ -1,6 +1,45 @@
|
|||
require 'helper'
|
||||
|
||||
class TestCleaner < Test::Unit::TestCase
|
||||
context "directory in keep_files" do
|
||||
setup do
|
||||
clear_dest
|
||||
stub(Jekyll).configuration do
|
||||
Jekyll::Configuration::DEFAULTS.merge({'source' => source_dir, 'destination' => dest_dir})
|
||||
end
|
||||
|
||||
FileUtils.mkdir_p(dest_dir('to_keep/child_dir'))
|
||||
FileUtils.touch(File.join(dest_dir('to_keep'), 'index.html'))
|
||||
FileUtils.touch(File.join(dest_dir('to_keep/child_dir'), 'index.html'))
|
||||
|
||||
@site = Site.new(Jekyll.configuration)
|
||||
@site.keep_files = ['to_keep/child_dir']
|
||||
|
||||
@cleaner = Site::Cleaner.new(@site)
|
||||
@cleaner.cleanup!
|
||||
end
|
||||
|
||||
teardown do
|
||||
FileUtils.rm_rf(dest_dir('to_keep'))
|
||||
end
|
||||
|
||||
should "keep the parent directory" do
|
||||
assert File.exist?(dest_dir('to_keep'))
|
||||
end
|
||||
|
||||
should "keep the child directory" do
|
||||
assert File.exist?(dest_dir('to_keep/child_dir'))
|
||||
end
|
||||
|
||||
should "keep the file in the directory in keep_files" do
|
||||
assert File.exist?(File.join(dest_dir('to_keep/child_dir'), 'index.html'))
|
||||
end
|
||||
|
||||
should "delete the file in the directory not in keep_files" do
|
||||
assert !File.exist?(File.join(dest_dir('to_keep'), 'index.html'))
|
||||
end
|
||||
end
|
||||
|
||||
context "directory containing no files and non-empty directories" do
|
||||
setup do
|
||||
clear_dest
|
||||
|
|
Loading…
Reference in New Issue