Move all regenerate? checking to Regenerator
This commit is contained in:
parent
e58f8776b9
commit
fe5f0d124c
|
@ -51,11 +51,11 @@ module Jekyll
|
||||||
autoload :Layout, 'jekyll/layout'
|
autoload :Layout, 'jekyll/layout'
|
||||||
autoload :LayoutReader, 'jekyll/layout_reader'
|
autoload :LayoutReader, 'jekyll/layout_reader'
|
||||||
autoload :LogAdapter, 'jekyll/log_adapter'
|
autoload :LogAdapter, 'jekyll/log_adapter'
|
||||||
autoload :Metadata, 'jekyll/metadata'
|
|
||||||
autoload :Page, 'jekyll/page'
|
autoload :Page, 'jekyll/page'
|
||||||
autoload :PluginManager, 'jekyll/plugin_manager'
|
autoload :PluginManager, 'jekyll/plugin_manager'
|
||||||
autoload :Post, 'jekyll/post'
|
autoload :Post, 'jekyll/post'
|
||||||
autoload :Publisher, 'jekyll/publisher'
|
autoload :Publisher, 'jekyll/publisher'
|
||||||
|
autoload :Regenerator, 'jekyll/regenerator'
|
||||||
autoload :RelatedPosts, 'jekyll/related_posts'
|
autoload :RelatedPosts, 'jekyll/related_posts'
|
||||||
autoload :Renderer, 'jekyll/renderer'
|
autoload :Renderer, 'jekyll/renderer'
|
||||||
autoload :Site, 'jekyll/site'
|
autoload :Site, 'jekyll/site'
|
||||||
|
|
|
@ -29,7 +29,7 @@ module Jekyll
|
||||||
#
|
#
|
||||||
# Returns an Array with the metdata file as the only item
|
# Returns an Array with the metdata file as the only item
|
||||||
def metadata_file
|
def metadata_file
|
||||||
[site.metadata.metadata_file]
|
[site.regenerator.metadata_file]
|
||||||
end
|
end
|
||||||
|
|
||||||
# Private: The list of existing files, apart from those included in keep_files and hidden files.
|
# Private: The list of existing files, apart from those included in keep_files and hidden files.
|
||||||
|
|
|
@ -168,15 +168,6 @@ module Jekyll
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
# Determine whether to regenerate the file based on metadata.
|
|
||||||
#
|
|
||||||
# Returns true if file needs to be regenerated
|
|
||||||
def regenerate?
|
|
||||||
asset_file? ||
|
|
||||||
data['regenerate'] ||
|
|
||||||
site.metadata.regenerate?(site.in_source_dir(relative_path))
|
|
||||||
end
|
|
||||||
|
|
||||||
# Determine whether the file should be placed into layouts.
|
# Determine whether the file should be placed into layouts.
|
||||||
#
|
#
|
||||||
# Returns false if the document is an asset file.
|
# Returns false if the document is an asset file.
|
||||||
|
@ -217,7 +208,7 @@ module Jekyll
|
||||||
File.join(site.config['layouts'], layout.name))
|
File.join(site.config['layouts'], layout.name))
|
||||||
|
|
||||||
# Add layout to dependency tree
|
# Add layout to dependency tree
|
||||||
site.metadata.add_dependency(
|
site.regenerator.add_dependency(
|
||||||
site.in_source_dir(path),
|
site.in_source_dir(path),
|
||||||
site.in_source_dir(layout.path)
|
site.in_source_dir(layout.path)
|
||||||
)
|
)
|
||||||
|
|
|
@ -107,13 +107,6 @@ module Jekyll
|
||||||
!(coffeescript_file? || yaml_file?)
|
!(coffeescript_file? || yaml_file?)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Determine whether the document should be regenerated based on metadata.
|
|
||||||
#
|
|
||||||
# Returns true if the document needs to be regenerated.
|
|
||||||
def regenerate?
|
|
||||||
data['regenerate'] || site.metadata.regenerate?(path, write?)
|
|
||||||
end
|
|
||||||
|
|
||||||
# Determine whether the file should be placed into layouts.
|
# Determine whether the file should be placed into layouts.
|
||||||
#
|
#
|
||||||
# Returns false if the document is either an asset file or a yaml file,
|
# Returns false if the document is either an asset file or a yaml file,
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
module Jekyll
|
module Jekyll
|
||||||
class Metadata
|
class Regenerator
|
||||||
attr_reader :site, :metadata, :cache
|
attr_reader :site, :metadata, :cache
|
||||||
|
|
||||||
def initialize(site)
|
def initialize(site)
|
||||||
|
@ -12,6 +12,25 @@ module Jekyll
|
||||||
@cache = {}
|
@cache = {}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Checks if a renderable object needs to be regenerated
|
||||||
|
#
|
||||||
|
# Returns a boolean.
|
||||||
|
def regenerate?(document)
|
||||||
|
case document
|
||||||
|
when Post, Page
|
||||||
|
document.asset_file? || document.data['regenerate'] ||
|
||||||
|
modified?(site.in_source_dir(document.relative_path))
|
||||||
|
when Document
|
||||||
|
!document.write? || document.data['regenerate'] || modified?(document.path)
|
||||||
|
else
|
||||||
|
if document.respond_to?(:path)
|
||||||
|
modified?(document.path)
|
||||||
|
else
|
||||||
|
true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
# Add a path to the metadata
|
# Add a path to the metadata
|
||||||
#
|
#
|
||||||
# Returns true, also on failure.
|
# Returns true, also on failure.
|
||||||
|
@ -40,10 +59,11 @@ module Jekyll
|
||||||
@cache = {}
|
@cache = {}
|
||||||
end
|
end
|
||||||
|
|
||||||
# Checks if a path should be regenerated
|
# Checks if a path's (or one of its dependencies)
|
||||||
|
# mtime has changed
|
||||||
#
|
#
|
||||||
# Returns a boolean.
|
# Returns a boolean.
|
||||||
def regenerate?(path, add = true)
|
def modified?(path)
|
||||||
return true if disabled?
|
return true if disabled?
|
||||||
|
|
||||||
# Check for path in cache
|
# Check for path in cache
|
||||||
|
@ -55,19 +75,19 @@ module Jekyll
|
||||||
data = metadata[path]
|
data = metadata[path]
|
||||||
if data
|
if data
|
||||||
data["deps"].each do |dependency|
|
data["deps"].each do |dependency|
|
||||||
if regenerate?(dependency)
|
if modified?(dependency)
|
||||||
return cache[dependency] = cache[path] = true
|
return cache[dependency] = cache[path] = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if data["mtime"].eql? File.mtime(path)
|
if data["mtime"].eql? File.mtime(path)
|
||||||
return cache[path] = false
|
return cache[path] = false
|
||||||
else
|
else
|
||||||
return !add || add(path)
|
return add(path)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# Path does not exist in metadata, add it
|
# Path does not exist in metadata, add it
|
||||||
return !add || add(path)
|
return add(path)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Add a dependency of a path
|
# Add a dependency of a path
|
|
@ -140,7 +140,7 @@ module Jekyll
|
||||||
)
|
)
|
||||||
|
|
||||||
# Add layout to dependency tree
|
# Add layout to dependency tree
|
||||||
site.metadata.add_dependency(
|
site.regenerator.add_dependency(
|
||||||
site.in_source_dir(document.path),
|
site.in_source_dir(document.path),
|
||||||
site.in_source_dir(layout.path)
|
site.in_source_dir(layout.path)
|
||||||
) if document.write?
|
) if document.write?
|
||||||
|
|
|
@ -11,7 +11,7 @@ module Jekyll
|
||||||
:gems, :plugin_manager
|
:gems, :plugin_manager
|
||||||
|
|
||||||
attr_accessor :converters, :generators
|
attr_accessor :converters, :generators
|
||||||
attr_reader :metadata
|
attr_reader :regenerator
|
||||||
|
|
||||||
# Public: Initialize a new Site.
|
# Public: Initialize a new Site.
|
||||||
#
|
#
|
||||||
|
@ -28,8 +28,8 @@ module Jekyll
|
||||||
@source = File.expand_path(config['source']).freeze
|
@source = File.expand_path(config['source']).freeze
|
||||||
@dest = File.expand_path(config['destination']).freeze
|
@dest = File.expand_path(config['destination']).freeze
|
||||||
|
|
||||||
# Build metadata
|
# Initialize incremental regenerator
|
||||||
@metadata = Metadata.new(self)
|
@regenerator = Regenerator.new(self)
|
||||||
|
|
||||||
self.plugin_manager = Jekyll::PluginManager.new(self)
|
self.plugin_manager = Jekyll::PluginManager.new(self)
|
||||||
self.plugins = plugin_manager.plugins_path
|
self.plugins = plugin_manager.plugins_path
|
||||||
|
@ -295,13 +295,17 @@ module Jekyll
|
||||||
payload = site_payload
|
payload = site_payload
|
||||||
collections.each do |label, collection|
|
collections.each do |label, collection|
|
||||||
collection.docs.each do |document|
|
collection.docs.each do |document|
|
||||||
document.output = Jekyll::Renderer.new(self, document, payload).run if document.regenerate?
|
if regenerator.regenerate?(document)
|
||||||
|
document.output = Jekyll::Renderer.new(self, document, payload).run
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
payload = site_payload
|
payload = site_payload
|
||||||
[posts, pages].flatten.each do |page_or_post|
|
[posts, pages].flatten.each do |page_or_post|
|
||||||
page_or_post.render(layouts, payload) if page_or_post.regenerate?
|
if regenerator.regenerate?(page_or_post)
|
||||||
|
page_or_post.render(layouts, payload)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
rescue Errno::ENOENT
|
rescue Errno::ENOENT
|
||||||
# ignore missing layout dir
|
# ignore missing layout dir
|
||||||
|
@ -319,9 +323,9 @@ module Jekyll
|
||||||
# Returns nothing.
|
# Returns nothing.
|
||||||
def write
|
def write
|
||||||
each_site_file { |item|
|
each_site_file { |item|
|
||||||
item.write(dest) if item.regenerate?
|
item.write(dest) if regenerator.regenerate?(item)
|
||||||
}
|
}
|
||||||
metadata.write unless full_rebuild?
|
regenerator.write unless full_rebuild?
|
||||||
end
|
end
|
||||||
|
|
||||||
# Construct a Hash of Posts indexed by the specified Post attribute.
|
# Construct a Hash of Posts indexed by the specified Post attribute.
|
||||||
|
@ -487,7 +491,7 @@ module Jekyll
|
||||||
@frontmatter_defaults ||= FrontmatterDefaults.new(self)
|
@frontmatter_defaults ||= FrontmatterDefaults.new(self)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Whether to perform a full rebuild without metadata
|
# Whether to perform a full rebuild without incremental regeneration
|
||||||
#
|
#
|
||||||
# Returns a Boolean: true for a full rebuild, false for normal build
|
# Returns a Boolean: true for a full rebuild, false for normal build
|
||||||
def full_rebuild?(override = {})
|
def full_rebuild?(override = {})
|
||||||
|
|
|
@ -65,8 +65,6 @@ module Jekyll
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
alias_method :regenerate?, :write?
|
|
||||||
|
|
||||||
# Write the static file to the destination directory (if modified).
|
# Write the static file to the destination directory (if modified).
|
||||||
#
|
#
|
||||||
# dest - The String path to the destination dir.
|
# dest - The String path to the destination dir.
|
||||||
|
|
|
@ -116,7 +116,7 @@ eos
|
||||||
|
|
||||||
# Add include to dependency tree
|
# Add include to dependency tree
|
||||||
if context.registers[:page] and context.registers[:page].has_key? "path"
|
if context.registers[:page] and context.registers[:page].has_key? "path"
|
||||||
site.metadata.add_dependency(
|
site.regenerator.add_dependency(
|
||||||
site.in_source_dir(context.registers[:page]["path"]),
|
site.in_source_dir(context.registers[:page]["path"]),
|
||||||
path
|
path
|
||||||
)
|
)
|
||||||
|
|
|
@ -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
|
|
|
@ -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
|
should "write only modified static files" do
|
||||||
clear_dest
|
clear_dest
|
||||||
StaticFile.reset_cache
|
StaticFile.reset_cache
|
||||||
@site.metadata.clear
|
@site.regenerator.clear
|
||||||
|
|
||||||
@site.process
|
@site.process
|
||||||
some_static_file = @site.static_files[0].path
|
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
|
should "write static files if not modified but missing in destination" do
|
||||||
clear_dest
|
clear_dest
|
||||||
StaticFile.reset_cache
|
StaticFile.reset_cache
|
||||||
@site.metadata.clear
|
@site.regenerator.clear
|
||||||
|
|
||||||
@site.process
|
@site.process
|
||||||
dest = File.expand_path(@site.static_files[0].destination(@site.dest))
|
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
|
context 'with orphaned files in destination' do
|
||||||
setup do
|
setup do
|
||||||
clear_dest
|
clear_dest
|
||||||
@site.metadata.clear
|
@site.regenerator.clear
|
||||||
@site.process
|
@site.process
|
||||||
# generate some orphaned files:
|
# generate some orphaned files:
|
||||||
# single file
|
# single file
|
||||||
|
|
Loading…
Reference in New Issue