Rubocop: test/test_site.rb
This commit is contained in:
parent
5a23b130ce
commit
fbff506faa
|
@ -1,45 +1,47 @@
|
|||
require 'helper'
|
||||
require "helper"
|
||||
|
||||
class TestSite < JekyllUnitTest
|
||||
context "configuring sites" do
|
||||
should "have an array for plugins by default" do
|
||||
site = Site.new default_configuration
|
||||
assert_equal [File.join(Dir.pwd, '_plugins')], site.plugins
|
||||
assert_equal [File.join(Dir.pwd, "_plugins")], site.plugins
|
||||
end
|
||||
|
||||
should "look for plugins under the site directory by default" do
|
||||
site = Site.new(site_configuration)
|
||||
assert_equal [source_dir('_plugins')], site.plugins
|
||||
assert_equal [source_dir("_plugins")], site.plugins
|
||||
end
|
||||
|
||||
should "have an array for plugins if passed as a string" do
|
||||
site = Site.new(site_configuration({ 'plugins_dir' => '/tmp/plugins' }))
|
||||
assert_equal ['/tmp/plugins'], site.plugins
|
||||
site = Site.new(site_configuration({ "plugins_dir" => "/tmp/plugins" }))
|
||||
assert_equal ["/tmp/plugins"], site.plugins
|
||||
end
|
||||
|
||||
should "have an array for plugins if passed as an array" do
|
||||
site = Site.new(site_configuration({ 'plugins_dir' => ['/tmp/plugins', '/tmp/otherplugins'] }))
|
||||
assert_equal ['/tmp/plugins', '/tmp/otherplugins'], site.plugins
|
||||
site = Site.new(site_configuration({
|
||||
"plugins_dir" => ["/tmp/plugins", "/tmp/otherplugins"]
|
||||
}))
|
||||
assert_equal ["/tmp/plugins", "/tmp/otherplugins"], site.plugins
|
||||
end
|
||||
|
||||
should "have an empty array for plugins if nothing is passed" do
|
||||
site = Site.new(site_configuration({ 'plugins_dir' => [] }))
|
||||
site = Site.new(site_configuration({ "plugins_dir" => [] }))
|
||||
assert_equal [], site.plugins
|
||||
end
|
||||
|
||||
should "have the default for plugins if nil is passed" do
|
||||
site = Site.new(site_configuration({ 'plugins_dir' => nil }))
|
||||
assert_equal [source_dir('_plugins')], site.plugins
|
||||
site = Site.new(site_configuration({ "plugins_dir" => nil }))
|
||||
assert_equal [source_dir("_plugins")], site.plugins
|
||||
end
|
||||
|
||||
should "expose default baseurl" do
|
||||
site = Site.new(default_configuration)
|
||||
assert_equal Jekyll::Configuration::DEFAULTS['baseurl'], site.baseurl
|
||||
assert_equal Jekyll::Configuration::DEFAULTS["baseurl"], site.baseurl
|
||||
end
|
||||
|
||||
should "expose baseurl passed in from config" do
|
||||
site = Site.new(site_configuration({ 'baseurl' => '/blog' }))
|
||||
assert_equal '/blog', site.baseurl
|
||||
site = Site.new(site_configuration({ "baseurl" => "/blog" }))
|
||||
assert_equal "/blog", site.baseurl
|
||||
end
|
||||
end
|
||||
context "creating sites" do
|
||||
|
@ -55,7 +57,7 @@ class TestSite < JekyllUnitTest
|
|||
end
|
||||
|
||||
should "have an empty tag hash by default" do
|
||||
assert_equal Hash.new, @site.tags
|
||||
assert_equal({}, @site.tags)
|
||||
end
|
||||
|
||||
should "give site with parsed pages and posts to generators" do
|
||||
|
@ -65,14 +67,14 @@ class TestSite < JekyllUnitTest
|
|||
raise "#{page} isn't a page" unless page.is_a?(Page)
|
||||
raise "#{page} doesn't respond to :name" unless page.respond_to?(:name)
|
||||
end
|
||||
site.file_read_opts[:secret_message] = 'hi'
|
||||
site.file_read_opts[:secret_message] = "hi"
|
||||
end
|
||||
end
|
||||
@site = Site.new(site_configuration)
|
||||
@site.read
|
||||
@site.generate
|
||||
refute_equal 0, @site.pages.size
|
||||
assert_equal 'hi', @site.file_read_opts[:secret_message]
|
||||
assert_equal "hi", @site.file_read_opts[:secret_message]
|
||||
end
|
||||
|
||||
should "reset data before processing" do
|
||||
|
@ -157,13 +159,21 @@ class TestSite < JekyllUnitTest
|
|||
end
|
||||
|
||||
should "setup plugins in priority order" do
|
||||
assert_equal @site.converters.sort_by(&:class).map{|c|c.class.priority}, @site.converters.map{|c|c.class.priority}
|
||||
assert_equal @site.generators.sort_by(&:class).map{|g|g.class.priority}, @site.generators.map{|g|g.class.priority}
|
||||
assert_equal(
|
||||
@site.converters.sort_by(&:class).map { |c| c.class.priority },
|
||||
@site.converters.map { |c| c.class.priority }
|
||||
)
|
||||
assert_equal(
|
||||
@site.generators.sort_by(&:class).map { |g| g.class.priority },
|
||||
@site.generators.map { |g| g.class.priority }
|
||||
)
|
||||
end
|
||||
|
||||
should "sort pages alphabetically" do
|
||||
method = Dir.method(:entries)
|
||||
allow(Dir).to receive(:entries) { |*args, &block| method.call(*args, &block).reverse }
|
||||
allow(Dir).to receive(:entries) do |*args, &block|
|
||||
method.call(*args, &block).reverse
|
||||
end
|
||||
@site.process
|
||||
# files in symlinked directories may appear twice
|
||||
sorted_pages = %w(
|
||||
|
@ -192,9 +202,11 @@ class TestSite < JekyllUnitTest
|
|||
end
|
||||
|
||||
should "read posts" do
|
||||
@site.posts.docs.concat(PostReader.new(@site).read_posts(''))
|
||||
posts = Dir[source_dir('_posts', '**', '*')]
|
||||
posts.delete_if { |post| File.directory?(post) && !(post =~ Document::DATE_FILENAME_MATCHER) }
|
||||
@site.posts.docs.concat(PostReader.new(@site).read_posts(""))
|
||||
posts = Dir[source_dir("_posts", "**", "*")]
|
||||
posts.delete_if do |post|
|
||||
File.directory?(post) && !(post =~ Document::DATE_FILENAME_MATCHER)
|
||||
end
|
||||
assert_equal posts.size - @num_invalid_posts, @site.posts.size
|
||||
end
|
||||
|
||||
|
@ -209,11 +221,11 @@ class TestSite < JekyllUnitTest
|
|||
end
|
||||
|
||||
should "expose jekyll version to site payload" do
|
||||
assert_equal Jekyll::VERSION, @site.site_payload['jekyll']['version']
|
||||
assert_equal Jekyll::VERSION, @site.site_payload["jekyll"]["version"]
|
||||
end
|
||||
|
||||
should "expose list of static files to site payload" do
|
||||
assert_equal @site.static_files, @site.site_payload['site']['static_files']
|
||||
assert_equal @site.static_files, @site.site_payload["site"]["static_files"]
|
||||
end
|
||||
|
||||
should "deploy payload" do
|
||||
|
@ -221,118 +233,125 @@ class TestSite < JekyllUnitTest
|
|||
@site.process
|
||||
|
||||
posts = Dir[source_dir("**", "_posts", "**", "*")]
|
||||
posts.delete_if { |post| File.directory?(post) && !(post =~ Document::DATE_FILENAME_MATCHER) }
|
||||
categories = %w(2013 bar baz category foo z_category MixedCase Mixedcase publish_test win).sort
|
||||
posts.delete_if do |post|
|
||||
File.directory?(post) && !(post =~ Document::DATE_FILENAME_MATCHER)
|
||||
end
|
||||
categories = %w(
|
||||
2013 bar baz category foo z_category MixedCase Mixedcase publish_test win
|
||||
).sort
|
||||
|
||||
assert_equal posts.size - @num_invalid_posts, @site.posts.size
|
||||
assert_equal categories, @site.categories.keys.sort
|
||||
assert_equal 5, @site.categories['foo'].size
|
||||
assert_equal 5, @site.categories["foo"].size
|
||||
end
|
||||
|
||||
context 'error handling' do
|
||||
context "error handling" do
|
||||
should "raise if destination is included in source" do
|
||||
assert_raises Jekyll::Errors::FatalException do
|
||||
Site.new(site_configuration('destination' => source_dir))
|
||||
Site.new(site_configuration("destination" => source_dir))
|
||||
end
|
||||
end
|
||||
|
||||
should "raise if destination is source" do
|
||||
assert_raises Jekyll::Errors::FatalException do
|
||||
Site.new(site_configuration('destination' => File.join(source_dir, "..")))
|
||||
Site.new(site_configuration("destination" => File.join(source_dir, "..")))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'with orphaned files in destination' do
|
||||
context "with orphaned files in destination" do
|
||||
setup do
|
||||
clear_dest
|
||||
@site.regenerator.clear
|
||||
@site.process
|
||||
# generate some orphaned files:
|
||||
# single file
|
||||
File.open(dest_dir('obsolete.html'), 'w')
|
||||
File.open(dest_dir("obsolete.html"), "w")
|
||||
# single file in sub directory
|
||||
FileUtils.mkdir(dest_dir('qux'))
|
||||
File.open(dest_dir('qux/obsolete.html'), 'w')
|
||||
FileUtils.mkdir(dest_dir("qux"))
|
||||
File.open(dest_dir("qux/obsolete.html"), "w")
|
||||
# empty directory
|
||||
FileUtils.mkdir(dest_dir('quux'))
|
||||
FileUtils.mkdir(dest_dir('.git'))
|
||||
FileUtils.mkdir(dest_dir('.svn'))
|
||||
FileUtils.mkdir(dest_dir('.hg'))
|
||||
FileUtils.mkdir(dest_dir("quux"))
|
||||
FileUtils.mkdir(dest_dir(".git"))
|
||||
FileUtils.mkdir(dest_dir(".svn"))
|
||||
FileUtils.mkdir(dest_dir(".hg"))
|
||||
# single file in repository
|
||||
File.open(dest_dir('.git/HEAD'), 'w')
|
||||
File.open(dest_dir('.svn/HEAD'), 'w')
|
||||
File.open(dest_dir('.hg/HEAD'), 'w')
|
||||
File.open(dest_dir(".git/HEAD"), "w")
|
||||
File.open(dest_dir(".svn/HEAD"), "w")
|
||||
File.open(dest_dir(".hg/HEAD"), "w")
|
||||
end
|
||||
|
||||
teardown do
|
||||
FileUtils.rm_f(dest_dir('obsolete.html'))
|
||||
FileUtils.rm_rf(dest_dir('qux'))
|
||||
FileUtils.rm_f(dest_dir('quux'))
|
||||
FileUtils.rm_rf(dest_dir('.git'))
|
||||
FileUtils.rm_rf(dest_dir('.svn'))
|
||||
FileUtils.rm_rf(dest_dir('.hg'))
|
||||
FileUtils.rm_f(dest_dir("obsolete.html"))
|
||||
FileUtils.rm_rf(dest_dir("qux"))
|
||||
FileUtils.rm_f(dest_dir("quux"))
|
||||
FileUtils.rm_rf(dest_dir(".git"))
|
||||
FileUtils.rm_rf(dest_dir(".svn"))
|
||||
FileUtils.rm_rf(dest_dir(".hg"))
|
||||
end
|
||||
|
||||
should 'remove orphaned files in destination' do
|
||||
should "remove orphaned files in destination" do
|
||||
@site.process
|
||||
refute_exist dest_dir('obsolete.html')
|
||||
refute_exist dest_dir('qux')
|
||||
refute_exist dest_dir('quux')
|
||||
assert_exist dest_dir('.git')
|
||||
assert_exist dest_dir('.git', 'HEAD')
|
||||
refute_exist dest_dir("obsolete.html")
|
||||
refute_exist dest_dir("qux")
|
||||
refute_exist dest_dir("quux")
|
||||
assert_exist dest_dir(".git")
|
||||
assert_exist dest_dir(".git", "HEAD")
|
||||
end
|
||||
|
||||
should 'remove orphaned files in destination - keep_files .svn' do
|
||||
config = site_configuration('keep_files' => %w{.svn})
|
||||
should "remove orphaned files in destination - keep_files .svn" do
|
||||
config = site_configuration("keep_files" => %w(.svn))
|
||||
@site = Site.new(config)
|
||||
@site.process
|
||||
refute_exist dest_dir('.htpasswd')
|
||||
refute_exist dest_dir('obsolete.html')
|
||||
refute_exist dest_dir('qux')
|
||||
refute_exist dest_dir('quux')
|
||||
refute_exist dest_dir('.git')
|
||||
refute_exist dest_dir('.git', 'HEAD')
|
||||
assert_exist dest_dir('.svn')
|
||||
assert_exist dest_dir('.svn', 'HEAD')
|
||||
refute_exist dest_dir(".htpasswd")
|
||||
refute_exist dest_dir("obsolete.html")
|
||||
refute_exist dest_dir("qux")
|
||||
refute_exist dest_dir("quux")
|
||||
refute_exist dest_dir(".git")
|
||||
refute_exist dest_dir(".git", "HEAD")
|
||||
assert_exist dest_dir(".svn")
|
||||
assert_exist dest_dir(".svn", "HEAD")
|
||||
end
|
||||
end
|
||||
|
||||
context 'using a non-default markdown processor in the configuration' do
|
||||
should 'use the non-default markdown processor' do
|
||||
context "using a non-default markdown processor in the configuration" do
|
||||
should "use the non-default markdown processor" do
|
||||
class Jekyll::Converters::Markdown::CustomMarkdown
|
||||
def initialize(*args)
|
||||
@args = args
|
||||
end
|
||||
|
||||
def convert(*args)
|
||||
def convert(*_args)
|
||||
""
|
||||
end
|
||||
end
|
||||
|
||||
custom_processor = "CustomMarkdown"
|
||||
s = Site.new(site_configuration('markdown' => custom_processor))
|
||||
s = Site.new(site_configuration("markdown" => custom_processor))
|
||||
s.process
|
||||
|
||||
# Do some cleanup, we don't like straggling stuff's.
|
||||
Jekyll::Converters::Markdown.send(:remove_const, :CustomMarkdown)
|
||||
end
|
||||
|
||||
should 'ignore, if there are any bad characters in the class name' do
|
||||
should "ignore, if there are any bad characters in the class name" do
|
||||
module Jekyll::Converters::Markdown::Custom
|
||||
class Markdown
|
||||
def initialize(*args)
|
||||
@args = args
|
||||
end
|
||||
|
||||
def convert(*args)
|
||||
def convert(*_args)
|
||||
""
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
bad_processor = "Custom::Markdown"
|
||||
s = Site.new(site_configuration('markdown' => bad_processor, 'incremental' => false))
|
||||
s = Site.new(site_configuration(
|
||||
"markdown" => bad_processor,
|
||||
"incremental" => false
|
||||
))
|
||||
assert_raises Jekyll::Errors::FatalException do
|
||||
s.process
|
||||
end
|
||||
|
@ -342,96 +361,105 @@ class TestSite < JekyllUnitTest
|
|||
end
|
||||
end
|
||||
|
||||
context 'with an invalid markdown processor in the configuration' do
|
||||
should 'not throw an error at initialization time' do
|
||||
bad_processor = 'not a processor name'
|
||||
assert Site.new(site_configuration('markdown' => bad_processor))
|
||||
context "with an invalid markdown processor in the configuration" do
|
||||
should "not throw an error at initialization time" do
|
||||
bad_processor = "not a processor name"
|
||||
assert Site.new(site_configuration("markdown" => bad_processor))
|
||||
end
|
||||
|
||||
should 'throw FatalException at process time' do
|
||||
bad_processor = 'not a processor name'
|
||||
s = Site.new(site_configuration('markdown' => bad_processor, 'incremental' => false))
|
||||
should "throw FatalException at process time" do
|
||||
bad_processor = "not a processor name"
|
||||
s = Site.new(site_configuration(
|
||||
"markdown" => bad_processor,
|
||||
"incremental" => false
|
||||
))
|
||||
assert_raises Jekyll::Errors::FatalException do
|
||||
s.process
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'data directory' do
|
||||
should 'auto load yaml files' do
|
||||
context "data directory" do
|
||||
should "auto load yaml files" do
|
||||
site = Site.new(site_configuration)
|
||||
site.process
|
||||
|
||||
file_content = SafeYAML.load_file(File.join(source_dir, '_data', 'members.yaml'))
|
||||
file_content = SafeYAML.load_file(File.join(source_dir, "_data", "members.yaml"))
|
||||
|
||||
assert_equal site.data['members'], file_content
|
||||
assert_equal site.site_payload['site']['data']['members'], file_content
|
||||
assert_equal site.data["members"], file_content
|
||||
assert_equal site.site_payload["site"]["data"]["members"], file_content
|
||||
end
|
||||
|
||||
should 'load yaml files from extracted method' do
|
||||
should "load yaml files from extracted method" do
|
||||
site = Site.new(site_configuration)
|
||||
site.process
|
||||
|
||||
file_content = DataReader.new(site).read_data_file(source_dir('_data', 'members.yaml'))
|
||||
file_content = DataReader.new(site)
|
||||
.read_data_file(source_dir("_data", "members.yaml"))
|
||||
|
||||
assert_equal site.data['members'], file_content
|
||||
assert_equal site.site_payload['site']['data']['members'], file_content
|
||||
assert_equal site.data["members"], file_content
|
||||
assert_equal site.site_payload["site"]["data"]["members"], file_content
|
||||
end
|
||||
|
||||
should 'auto load yml files' do
|
||||
should "auto load yml files" do
|
||||
site = Site.new(site_configuration)
|
||||
site.process
|
||||
|
||||
file_content = SafeYAML.load_file(File.join(source_dir, '_data', 'languages.yml'))
|
||||
file_content = SafeYAML.load_file(File.join(source_dir, "_data", "languages.yml"))
|
||||
|
||||
assert_equal site.data['languages'], file_content
|
||||
assert_equal site.site_payload['site']['data']['languages'], file_content
|
||||
assert_equal site.data["languages"], file_content
|
||||
assert_equal site.site_payload["site"]["data"]["languages"], file_content
|
||||
end
|
||||
|
||||
should 'auto load json files' do
|
||||
should "auto load json files" do
|
||||
site = Site.new(site_configuration)
|
||||
site.process
|
||||
|
||||
file_content = SafeYAML.load_file(File.join(source_dir, '_data', 'members.json'))
|
||||
file_content = SafeYAML.load_file(File.join(source_dir, "_data", "members.json"))
|
||||
|
||||
assert_equal site.data['members'], file_content
|
||||
assert_equal site.site_payload['site']['data']['members'], file_content
|
||||
assert_equal site.data["members"], file_content
|
||||
assert_equal site.site_payload["site"]["data"]["members"], file_content
|
||||
end
|
||||
|
||||
should 'auto load yaml files in subdirectory' do
|
||||
should "auto load yaml files in subdirectory" do
|
||||
site = Site.new(site_configuration)
|
||||
site.process
|
||||
|
||||
file_content = SafeYAML.load_file(File.join(source_dir, '_data', 'categories', 'dairy.yaml'))
|
||||
file_content = SafeYAML.load_file(File.join(
|
||||
source_dir, "_data", "categories", "dairy.yaml"
|
||||
))
|
||||
|
||||
assert_equal site.data['categories']['dairy'], file_content
|
||||
assert_equal site.site_payload['site']['data']['categories']['dairy'], file_content
|
||||
assert_equal site.data["categories"]["dairy"], file_content
|
||||
assert_equal(
|
||||
site.site_payload["site"]["data"]["categories"]["dairy"],
|
||||
file_content
|
||||
)
|
||||
end
|
||||
|
||||
should "load symlink files in unsafe mode" do
|
||||
site = Site.new(site_configuration('safe' => false))
|
||||
site = Site.new(site_configuration("safe" => false))
|
||||
site.process
|
||||
|
||||
file_content = SafeYAML.load_file(File.join(source_dir, '_data', 'products.yml'))
|
||||
file_content = SafeYAML.load_file(File.join(source_dir, "_data", "products.yml"))
|
||||
|
||||
assert_equal site.data['products'], file_content
|
||||
assert_equal site.site_payload['site']['data']['products'], file_content
|
||||
assert_equal site.data["products"], file_content
|
||||
assert_equal site.site_payload["site"]["data"]["products"], file_content
|
||||
end
|
||||
|
||||
should "load the symlink files in safe mode, as they resolve to inside site.source" do
|
||||
site = Site.new(site_configuration('safe' => true))
|
||||
should "load the symlink files in safe mode, " \
|
||||
"as they resolve to inside site.source" do
|
||||
site = Site.new(site_configuration("safe" => true))
|
||||
site.process
|
||||
file_content = SafeYAML.load_file(File.join(source_dir, '_data', 'products.yml'))
|
||||
assert_equal site.data['products'], file_content
|
||||
assert_equal site.site_payload['site']['data']['products'], file_content
|
||||
file_content = SafeYAML.load_file(File.join(source_dir, "_data", "products.yml"))
|
||||
assert_equal site.data["products"], file_content
|
||||
assert_equal site.site_payload["site"]["data"]["products"], file_content
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
context "manipulating the Jekyll environment" do
|
||||
setup do
|
||||
@site = Site.new(site_configuration({
|
||||
'incremental' => false
|
||||
"incremental" => false
|
||||
}))
|
||||
@site.process
|
||||
@page = @site.pages.find { |p| p.name == "environment.html" }
|
||||
|
@ -445,7 +473,7 @@ class TestSite < JekyllUnitTest
|
|||
setup do
|
||||
ENV["JEKYLL_ENV"] = "production"
|
||||
@site = Site.new(site_configuration({
|
||||
'incremental' => false
|
||||
"incremental" => false
|
||||
}))
|
||||
@site.process
|
||||
@page = @site.pages.find { |p| p.name == "environment.html" }
|
||||
|
@ -463,7 +491,7 @@ class TestSite < JekyllUnitTest
|
|||
|
||||
context "with liquid profiling" do
|
||||
setup do
|
||||
@site = Site.new(site_configuration('profile' => true))
|
||||
@site = Site.new(site_configuration("profile" => true))
|
||||
end
|
||||
|
||||
# Suppress output while testing
|
||||
|
@ -483,7 +511,7 @@ class TestSite < JekyllUnitTest
|
|||
context "incremental build" do
|
||||
setup do
|
||||
@site = Site.new(site_configuration({
|
||||
'incremental' => true
|
||||
"incremental" => true
|
||||
}))
|
||||
@site.read
|
||||
end
|
||||
|
@ -533,8 +561,6 @@ class TestSite < JekyllUnitTest
|
|||
mtime2 = File.stat(dest).mtime.to_i
|
||||
refute_equal mtime1, mtime2 # must be regenerated
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue