mirror of
https://github.com/jekyll/jekyll.git
synced 2026-01-30 17:28:29 -05:00
In case you are upgrading from 1.4.2 to 2.0 and the pygments option is set to true, then the highlighter option will be set to pygments automatically.
188 lines
7.8 KiB
Ruby
188 lines
7.8 KiB
Ruby
require 'helper'
|
|
|
|
class TestConfiguration < Test::Unit::TestCase
|
|
context "#stringify_keys" do
|
|
setup do
|
|
@mixed_keys = Configuration[{
|
|
'markdown' => 'maruku',
|
|
:permalink => 'date',
|
|
'baseurl' => '/',
|
|
:include => ['.htaccess'],
|
|
:source => './'
|
|
}]
|
|
@string_keys = Configuration[{
|
|
'markdown' => 'maruku',
|
|
'permalink' => 'date',
|
|
'baseurl' => '/',
|
|
'include' => ['.htaccess'],
|
|
'source' => './'
|
|
}]
|
|
end
|
|
should "stringify symbol keys" do
|
|
assert_equal @string_keys, @mixed_keys.stringify_keys
|
|
end
|
|
should "not mess with keys already strings" do
|
|
assert_equal @string_keys, @string_keys.stringify_keys
|
|
end
|
|
end
|
|
context "#config_files" do
|
|
setup do
|
|
@config = Configuration[{"source" => source_dir}]
|
|
@no_override = {}
|
|
@one_config_file = {"config" => "config.yml"}
|
|
@multiple_files = {"config" => %w[config/site.yml config/deploy.toml configuration.yml]}
|
|
end
|
|
|
|
should "always return an array" do
|
|
assert @config.config_files(@no_override).is_a?(Array)
|
|
assert @config.config_files(@one_config_file).is_a?(Array)
|
|
assert @config.config_files(@multiple_files).is_a?(Array)
|
|
end
|
|
should "return the default config path if no config files are specified" do
|
|
assert_equal [File.join(source_dir, "_config.yml")], @config.config_files(@no_override)
|
|
end
|
|
should "return the config if given one config file" do
|
|
assert_equal %w[config.yml], @config.config_files(@one_config_file)
|
|
end
|
|
should "return an array of the config files if given many config files" do
|
|
assert_equal %w[config/site.yml config/deploy.toml configuration.yml], @config.config_files(@multiple_files)
|
|
end
|
|
end
|
|
context "#backwards_compatibilize" do
|
|
setup do
|
|
@config = Configuration[{
|
|
"auto" => true,
|
|
"watch" => true,
|
|
"server" => true,
|
|
"exclude" => "READ-ME.md, Gemfile,CONTRIBUTING.hello.markdown",
|
|
"include" => "STOP_THE_PRESSES.txt,.heloses, .git",
|
|
"pygments" => true,
|
|
}]
|
|
end
|
|
should "unset 'auto' and 'watch'" do
|
|
assert @config.has_key?("auto")
|
|
assert @config.has_key?("watch")
|
|
assert !@config.backwards_compatibilize.has_key?("auto")
|
|
assert !@config.backwards_compatibilize.has_key?("watch")
|
|
end
|
|
should "unset 'server'" do
|
|
assert @config.has_key?("server")
|
|
assert !@config.backwards_compatibilize.has_key?("server")
|
|
end
|
|
should "transform string exclude into an array" do
|
|
assert @config.has_key?("exclude")
|
|
assert @config.backwards_compatibilize.has_key?("exclude")
|
|
assert_equal @config.backwards_compatibilize["exclude"], %w[READ-ME.md Gemfile CONTRIBUTING.hello.markdown]
|
|
end
|
|
should "transform string include into an array" do
|
|
assert @config.has_key?("include")
|
|
assert @config.backwards_compatibilize.has_key?("include")
|
|
assert_equal @config.backwards_compatibilize["include"], %w[STOP_THE_PRESSES.txt .heloses .git]
|
|
end
|
|
should "set highlighter to pygments" do
|
|
assert @config.has_key?("pygments")
|
|
assert !@config.backwards_compatibilize.has_key?("pygments")
|
|
assert_equal @config.backwards_compatibilize["highlighter"], "pygments"
|
|
end
|
|
end
|
|
context "#fix_common_issues" do
|
|
setup do
|
|
@config = Proc.new do |val|
|
|
Configuration[{
|
|
'paginate' => val
|
|
}]
|
|
end
|
|
end
|
|
should "sets an invalid 'paginate' value to nil" do
|
|
assert_nil @config.call(0).fix_common_issues['paginate']
|
|
assert_nil @config.call(-1).fix_common_issues['paginate']
|
|
assert_nil @config.call(true).fix_common_issues['paginate']
|
|
end
|
|
end
|
|
context "loading configuration" do
|
|
setup do
|
|
@path = File.join(Dir.pwd, '_config.yml')
|
|
@user_config = File.join(Dir.pwd, "my_config_file.yml")
|
|
end
|
|
|
|
should "fire warning with no _config.yml" do
|
|
mock(YAML).safe_load_file(@path) { raise SystemCallError, "No such file or directory - #{@path}" }
|
|
mock($stderr).puts("Configuration file: none".yellow)
|
|
assert_equal Jekyll::Configuration::DEFAULTS, Jekyll.configuration({})
|
|
end
|
|
|
|
should "load configuration as hash" do
|
|
mock(YAML).safe_load_file(@path) { Hash.new }
|
|
mock($stdout).puts("Configuration file: #{@path}")
|
|
assert_equal Jekyll::Configuration::DEFAULTS, Jekyll.configuration({})
|
|
end
|
|
|
|
should "fire warning with bad config" do
|
|
mock(YAML).safe_load_file(@path) { Array.new }
|
|
mock($stderr).puts(("WARNING: ".rjust(20) + "Error reading configuration. Using defaults (and options).").yellow)
|
|
mock($stderr).puts("Configuration file: (INVALID) #{@path}".yellow)
|
|
assert_equal Jekyll::Configuration::DEFAULTS, Jekyll.configuration({})
|
|
end
|
|
|
|
should "fire warning when user-specified config file isn't there" do
|
|
mock(YAML).safe_load_file(@user_config) { raise SystemCallError, "No such file or directory - #{@user_config}" }
|
|
mock($stderr).puts(("Fatal: ".rjust(20) + "The configuration file '#{@user_config}' could not be found.").red)
|
|
assert_raises LoadError do
|
|
Jekyll.configuration({'config' => [@user_config]})
|
|
end
|
|
end
|
|
end
|
|
context "loading config from external file" do
|
|
setup do
|
|
@paths = {
|
|
:default => File.join(Dir.pwd, '_config.yml'),
|
|
:other => File.join(Dir.pwd, '_config.live.yml'),
|
|
:toml => source_dir('_config.dev.toml'),
|
|
:empty => ""
|
|
}
|
|
end
|
|
|
|
should "load default config if no config_file is set" do
|
|
mock(YAML).safe_load_file(@paths[:default]) { Hash.new }
|
|
mock($stdout).puts("Configuration file: #{@paths[:default]}")
|
|
assert_equal Jekyll::Configuration::DEFAULTS, Jekyll.configuration({})
|
|
end
|
|
|
|
should "load different config if specified" do
|
|
mock(YAML).safe_load_file(@paths[:other]) { {"baseurl" => "http://wahoo.dev"} }
|
|
mock($stdout).puts("Configuration file: #{@paths[:other]}")
|
|
assert_equal Jekyll::Configuration::DEFAULTS.deep_merge({ "baseurl" => "http://wahoo.dev" }), Jekyll.configuration({ "config" => @paths[:other] })
|
|
end
|
|
|
|
should "load default config if path passed is empty" do
|
|
mock(YAML).safe_load_file(@paths[:default]) { Hash.new }
|
|
mock($stdout).puts("Configuration file: #{@paths[:default]}")
|
|
assert_equal Jekyll::Configuration::DEFAULTS, Jekyll.configuration({ "config" => @paths[:empty] })
|
|
end
|
|
|
|
should "successfully load a TOML file" do
|
|
Jekyll.logger.log_level = Jekyll::Stevenson::WARN
|
|
assert_equal Jekyll::Configuration::DEFAULTS.merge({ "baseurl" => "/you-beautiful-blog-you", "title" => "My magnificent site, wut" }), Jekyll.configuration({ "config" => [@paths[:toml]] })
|
|
Jekyll.logger.log_level = Jekyll::Stevenson::INFO
|
|
end
|
|
|
|
should "load multiple config files" do
|
|
mock(YAML).safe_load_file(@paths[:default]) { Hash.new }
|
|
mock(YAML).safe_load_file(@paths[:other]) { Hash.new }
|
|
mock(TOML).load_file(@paths[:toml]) { Hash.new }
|
|
mock($stdout).puts("Configuration file: #{@paths[:default]}")
|
|
mock($stdout).puts("Configuration file: #{@paths[:other]}")
|
|
mock($stdout).puts("Configuration file: #{@paths[:toml]}")
|
|
assert_equal Jekyll::Configuration::DEFAULTS, Jekyll.configuration({ "config" => [@paths[:default], @paths[:other], @paths[:toml]] })
|
|
end
|
|
|
|
should "load multiple config files and last config should win" do
|
|
mock(YAML).safe_load_file(@paths[:default]) { {"baseurl" => "http://example.dev"} }
|
|
mock(YAML).safe_load_file(@paths[:other]) { {"baseurl" => "http://wahoo.dev"} }
|
|
mock($stdout).puts("Configuration file: #{@paths[:default]}")
|
|
mock($stdout).puts("Configuration file: #{@paths[:other]}")
|
|
assert_equal Jekyll::Configuration::DEFAULTS.deep_merge({ "baseurl" => "http://wahoo.dev" }), Jekyll.configuration({ "config" => [@paths[:default], @paths[:other]] })
|
|
end
|
|
end
|
|
end
|