Rubocop: test/test_site.rb

This commit is contained in:
Pat Hawks 2016-05-26 00:00:08 -05:00
parent 5a23b130ce
commit fbff506faa
1 changed files with 140 additions and 114 deletions

View File

@ -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