mirror of
https://github.com/jekyll/jekyll.git
synced 2026-04-06 03:01:43 -04:00
Move all regenerate? checking to Regenerator
This commit is contained in:
@@ -1,140 +0,0 @@
|
||||
require 'helper'
|
||||
|
||||
class TestMetadata < Test::Unit::TestCase
|
||||
context "The site metadata" do
|
||||
setup do
|
||||
FileUtils.rm_rf(source_dir(".jekyll-metadata"))
|
||||
|
||||
@site = Site.new(Jekyll.configuration({
|
||||
"source" => source_dir,
|
||||
"destination" => dest_dir
|
||||
}))
|
||||
|
||||
@site.process
|
||||
@path = @site.in_source_dir(@site.pages.first.path)
|
||||
@metadata = @site.metadata
|
||||
end
|
||||
|
||||
should "store modification times" do
|
||||
assert_equal File.mtime(@path), @metadata.metadata[@path]["mtime"]
|
||||
end
|
||||
|
||||
should "cache processed entries" do
|
||||
assert @metadata.cache[@path]
|
||||
end
|
||||
|
||||
should "write to the metadata file" do
|
||||
@metadata.clear
|
||||
@metadata.add(@path)
|
||||
@metadata.write
|
||||
assert File.file?(source_dir(".jekyll-metadata"))
|
||||
end
|
||||
|
||||
should "read from the metadata file" do
|
||||
@metadata = Metadata.new(@site)
|
||||
assert_equal File.mtime(@path), @metadata.metadata[@path]["mtime"]
|
||||
end
|
||||
|
||||
# Methods
|
||||
|
||||
should "be able to add a path to the metadata" do
|
||||
@metadata.clear
|
||||
@metadata.add(@path)
|
||||
assert_equal File.mtime(@path), @metadata.metadata[@path]["mtime"]
|
||||
assert_equal [], @metadata.metadata[@path]["deps"]
|
||||
assert @metadata.cache[@path]
|
||||
end
|
||||
|
||||
should "return true on nonexistent path" do
|
||||
@metadata.clear
|
||||
assert @metadata.add("/bogus/path.md")
|
||||
assert @metadata.regenerate?("/bogus/path.md")
|
||||
end
|
||||
|
||||
should "be able to force a path to regenerate" do
|
||||
@metadata.clear
|
||||
@metadata.force(@path)
|
||||
assert @metadata.cache[@path]
|
||||
assert @metadata.regenerate?(@path)
|
||||
end
|
||||
|
||||
should "be able to clear metadata and cache" do
|
||||
@metadata.clear
|
||||
@metadata.add(@path)
|
||||
assert_equal 1, @metadata.metadata.length
|
||||
assert_equal 1, @metadata.cache.length
|
||||
@metadata.clear
|
||||
assert_equal 0, @metadata.metadata.length
|
||||
assert_equal 0, @metadata.cache.length
|
||||
end
|
||||
|
||||
should "not regenerate a path if it is not modified" do
|
||||
@metadata.clear
|
||||
@metadata.add(@path)
|
||||
@metadata.write
|
||||
@metadata = Metadata.new(@site)
|
||||
|
||||
assert !@metadata.regenerate?(@path)
|
||||
end
|
||||
|
||||
should "not regenerate if path in cache is false" do
|
||||
@metadata.clear
|
||||
@metadata.add(@path)
|
||||
@metadata.write
|
||||
@metadata = Metadata.new(@site)
|
||||
|
||||
assert !@metadata.regenerate?(@path)
|
||||
assert !@metadata.cache[@path]
|
||||
assert !@metadata.regenerate?(@path)
|
||||
end
|
||||
|
||||
should "regenerate if path in not in metadata" do
|
||||
@metadata.clear
|
||||
@metadata.add(@path)
|
||||
|
||||
assert @metadata.regenerate?(@path)
|
||||
end
|
||||
|
||||
should "regenerate if path in cache is true" do
|
||||
@metadata.clear
|
||||
@metadata.add(@path)
|
||||
|
||||
assert @metadata.regenerate?(@path)
|
||||
assert @metadata.cache[@path]
|
||||
assert @metadata.regenerate?(@path)
|
||||
end
|
||||
|
||||
should "regenerate if file is modified" do
|
||||
@metadata.clear
|
||||
@metadata.add(@path)
|
||||
@metadata.metadata[@path]["mtime"] = Time.at(0)
|
||||
@metadata.write
|
||||
@metadata = Metadata.new(@site)
|
||||
|
||||
assert_not_same File.mtime(@path), @metadata.metadata[@path]["mtime"]
|
||||
assert @metadata.regenerate?(@path)
|
||||
end
|
||||
|
||||
should "regenerate if dependency is modified" do
|
||||
@metadata.clear
|
||||
@metadata.add(@path)
|
||||
@metadata.write
|
||||
@metadata = Metadata.new(@site)
|
||||
|
||||
@metadata.add_dependency(@path, "new.dependency")
|
||||
assert_equal ["new.dependency"], @metadata.metadata[@path]["deps"]
|
||||
assert @metadata.regenerate?("new.dependency")
|
||||
assert @metadata.regenerate?(@path)
|
||||
end
|
||||
|
||||
should "regenerate everything if metadata is disabled" do
|
||||
@site.config["full_rebuild"] = true
|
||||
@metadata.clear
|
||||
@metadata.add(@path)
|
||||
@metadata.write
|
||||
@metadata = Metadata.new(@site)
|
||||
|
||||
assert @metadata.regenerate?(@path)
|
||||
end
|
||||
end
|
||||
end
|
||||
193
test/test_regenerator.rb
Normal file
193
test/test_regenerator.rb
Normal file
@@ -0,0 +1,193 @@
|
||||
require 'helper'
|
||||
|
||||
class TestRegenerator < Test::Unit::TestCase
|
||||
context "The site regenerator" do
|
||||
setup do
|
||||
FileUtils.rm_rf(source_dir(".jekyll-metadata"))
|
||||
|
||||
@site = Site.new(Jekyll.configuration({
|
||||
"source" => source_dir,
|
||||
"destination" => dest_dir,
|
||||
"collections" => {
|
||||
"methods" => {
|
||||
"output" => true
|
||||
}
|
||||
}
|
||||
}))
|
||||
|
||||
@site.read
|
||||
@page = @site.pages.first
|
||||
@post = @site.posts.first
|
||||
@document = @site.docs_to_write.first
|
||||
@asset_file = @site.pages.find(&:asset_file?)
|
||||
@regenerator = @site.regenerator
|
||||
end
|
||||
|
||||
should "regenerate documents and assets if changed or not in metadata" do
|
||||
assert @regenerator.regenerate?(@page)
|
||||
assert @regenerator.regenerate?(@post)
|
||||
assert @regenerator.regenerate?(@document)
|
||||
assert @regenerator.regenerate?(@asset_file)
|
||||
end
|
||||
|
||||
should "not regenerate if not changed" do
|
||||
# Process files
|
||||
@regenerator.regenerate?(@page)
|
||||
@regenerator.regenerate?(@post)
|
||||
@regenerator.regenerate?(@document)
|
||||
@regenerator.regenerate?(@asset_file)
|
||||
|
||||
@regenerator.write
|
||||
@regenerator = Regenerator.new(@site)
|
||||
|
||||
assert !@regenerator.regenerate?(@page)
|
||||
assert !@regenerator.regenerate?(@post)
|
||||
assert !@regenerator.regenerate?(@document)
|
||||
end
|
||||
|
||||
should "always regenerate asset files" do
|
||||
assert @regenerator.regenerate?(@asset_file)
|
||||
end
|
||||
|
||||
should "always regenerate objects that don't respond to :path" do
|
||||
assert @regenerator.regenerate?(Object.new)
|
||||
end
|
||||
end
|
||||
|
||||
context "The site metadata" do
|
||||
setup do
|
||||
FileUtils.rm_rf(source_dir(".jekyll-metadata"))
|
||||
|
||||
@site = Site.new(Jekyll.configuration({
|
||||
"source" => source_dir,
|
||||
"destination" => dest_dir
|
||||
}))
|
||||
|
||||
@site.process
|
||||
@path = @site.in_source_dir(@site.pages.first.path)
|
||||
@regenerator = @site.regenerator
|
||||
end
|
||||
|
||||
should "store modification times" do
|
||||
assert_equal File.mtime(@path), @regenerator.metadata[@path]["mtime"]
|
||||
end
|
||||
|
||||
should "cache processed entries" do
|
||||
assert @regenerator.cache[@path]
|
||||
end
|
||||
|
||||
should "write to the metadata file" do
|
||||
@regenerator.clear
|
||||
@regenerator.add(@path)
|
||||
@regenerator.write
|
||||
assert File.file?(source_dir(".jekyll-metadata"))
|
||||
end
|
||||
|
||||
should "read from the metadata file" do
|
||||
@regenerator = Regenerator.new(@site)
|
||||
assert_equal File.mtime(@path), @regenerator.metadata[@path]["mtime"]
|
||||
end
|
||||
|
||||
# Methods
|
||||
|
||||
should "be able to add a path to the metadata" do
|
||||
@regenerator.clear
|
||||
@regenerator.add(@path)
|
||||
assert_equal File.mtime(@path), @regenerator.metadata[@path]["mtime"]
|
||||
assert_equal [], @regenerator.metadata[@path]["deps"]
|
||||
assert @regenerator.cache[@path]
|
||||
end
|
||||
|
||||
should "return true on nonexistent path" do
|
||||
@regenerator.clear
|
||||
assert @regenerator.add("/bogus/path.md")
|
||||
assert @regenerator.modified?("/bogus/path.md")
|
||||
end
|
||||
|
||||
should "be able to force a path to regenerate" do
|
||||
@regenerator.clear
|
||||
@regenerator.force(@path)
|
||||
assert @regenerator.cache[@path]
|
||||
assert @regenerator.modified?(@path)
|
||||
end
|
||||
|
||||
should "be able to clear metadata and cache" do
|
||||
@regenerator.clear
|
||||
@regenerator.add(@path)
|
||||
assert_equal 1, @regenerator.metadata.length
|
||||
assert_equal 1, @regenerator.cache.length
|
||||
@regenerator.clear
|
||||
assert_equal 0, @regenerator.metadata.length
|
||||
assert_equal 0, @regenerator.cache.length
|
||||
end
|
||||
|
||||
should "not regenerate a path if it is not modified" do
|
||||
@regenerator.clear
|
||||
@regenerator.add(@path)
|
||||
@regenerator.write
|
||||
@regenerator = Regenerator.new(@site)
|
||||
|
||||
assert !@regenerator.modified?(@path)
|
||||
end
|
||||
|
||||
should "not regenerate if path in cache is false" do
|
||||
@regenerator.clear
|
||||
@regenerator.add(@path)
|
||||
@regenerator.write
|
||||
@regenerator = Regenerator.new(@site)
|
||||
|
||||
assert !@regenerator.modified?(@path)
|
||||
assert !@regenerator.cache[@path]
|
||||
assert !@regenerator.modified?(@path)
|
||||
end
|
||||
|
||||
should "regenerate if path in not in metadata" do
|
||||
@regenerator.clear
|
||||
@regenerator.add(@path)
|
||||
|
||||
assert @regenerator.modified?(@path)
|
||||
end
|
||||
|
||||
should "regenerate if path in cache is true" do
|
||||
@regenerator.clear
|
||||
@regenerator.add(@path)
|
||||
|
||||
assert @regenerator.modified?(@path)
|
||||
assert @regenerator.cache[@path]
|
||||
assert @regenerator.modified?(@path)
|
||||
end
|
||||
|
||||
should "regenerate if file is modified" do
|
||||
@regenerator.clear
|
||||
@regenerator.add(@path)
|
||||
@regenerator.metadata[@path]["mtime"] = Time.at(0)
|
||||
@regenerator.write
|
||||
@regenerator = Regenerator.new(@site)
|
||||
|
||||
assert_not_same File.mtime(@path), @regenerator.metadata[@path]["mtime"]
|
||||
assert @regenerator.modified?(@path)
|
||||
end
|
||||
|
||||
should "regenerate if dependency is modified" do
|
||||
@regenerator.clear
|
||||
@regenerator.add(@path)
|
||||
@regenerator.write
|
||||
@regenerator = Regenerator.new(@site)
|
||||
|
||||
@regenerator.add_dependency(@path, "new.dependency")
|
||||
assert_equal ["new.dependency"], @regenerator.metadata[@path]["deps"]
|
||||
assert @regenerator.modified?("new.dependency")
|
||||
assert @regenerator.modified?(@path)
|
||||
end
|
||||
|
||||
should "regenerate everything if metadata is disabled" do
|
||||
@site.config["full_rebuild"] = true
|
||||
@regenerator.clear
|
||||
@regenerator.add(@path)
|
||||
@regenerator.write
|
||||
@regenerator = Regenerator.new(@site)
|
||||
|
||||
assert @regenerator.modified?(@path)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -99,7 +99,7 @@ class TestSite < Test::Unit::TestCase
|
||||
should "write only modified static files" do
|
||||
clear_dest
|
||||
StaticFile.reset_cache
|
||||
@site.metadata.clear
|
||||
@site.regenerator.clear
|
||||
|
||||
@site.process
|
||||
some_static_file = @site.static_files[0].path
|
||||
@@ -129,7 +129,7 @@ class TestSite < Test::Unit::TestCase
|
||||
should "write static files if not modified but missing in destination" do
|
||||
clear_dest
|
||||
StaticFile.reset_cache
|
||||
@site.metadata.clear
|
||||
@site.regenerator.clear
|
||||
|
||||
@site.process
|
||||
dest = File.expand_path(@site.static_files[0].destination(@site.dest))
|
||||
@@ -243,7 +243,7 @@ class TestSite < Test::Unit::TestCase
|
||||
context 'with orphaned files in destination' do
|
||||
setup do
|
||||
clear_dest
|
||||
@site.metadata.clear
|
||||
@site.regenerator.clear
|
||||
@site.process
|
||||
# generate some orphaned files:
|
||||
# single file
|
||||
|
||||
Reference in New Issue
Block a user