Merge pull request #1390 from mojombo/better-errors
Catch and fix (somehow) common configuration errors
This commit is contained in:
commit
cb52535c03
|
@ -150,7 +150,7 @@ module Jekyll
|
||||||
$stderr.puts "#{err}"
|
$stderr.puts "#{err}"
|
||||||
end
|
end
|
||||||
|
|
||||||
configuration.backwards_compatibilize
|
configuration.fix_common_issues.backwards_compatibilize
|
||||||
end
|
end
|
||||||
|
|
||||||
# Public: Split a CSV string into an array containing its values
|
# Public: Split a CSV string into an array containing its values
|
||||||
|
@ -205,5 +205,17 @@ module Jekyll
|
||||||
config
|
config
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def fix_common_issues
|
||||||
|
config = clone
|
||||||
|
|
||||||
|
if config.has_key?('paginate') && (!config['paginate'].is_a?(Integer) || config['paginate'] < 1)
|
||||||
|
Jekyll.logger.warn "Config Warning:", "The `paginate` key must be a" +
|
||||||
|
" positive integer or nil. It's currently set to '#{config['paginate'].inspect}'."
|
||||||
|
config['paginate'] = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
config
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,18 +2,18 @@ module Jekyll
|
||||||
class Deprecator
|
class Deprecator
|
||||||
def self.process(args)
|
def self.process(args)
|
||||||
no_subcommand(args)
|
no_subcommand(args)
|
||||||
deprecation_message args, "--server", "The --server command has been replaced by the \
|
arg_is_present? args, "--server", "The --server command has been replaced by the \
|
||||||
'serve' subcommand."
|
'serve' subcommand."
|
||||||
deprecation_message args, "--no-server", "To build Jekyll without launching a server, \
|
arg_is_present? args, "--no-server", "To build Jekyll without launching a server, \
|
||||||
use the 'build' subcommand."
|
use the 'build' subcommand."
|
||||||
deprecation_message args, "--auto", "The switch '--auto' has been replaced with '--watch'."
|
arg_is_present? args, "--auto", "The switch '--auto' has been replaced with '--watch'."
|
||||||
deprecation_message args, "--no-auto", "To disable auto-replication, simply leave off \
|
arg_is_present? args, "--no-auto", "To disable auto-replication, simply leave off \
|
||||||
the '--watch' switch."
|
the '--watch' switch."
|
||||||
deprecation_message args, "--pygments", "The 'pygments' setting can only be set in \
|
arg_is_present? args, "--pygments", "The 'pygments' setting can only be set in \
|
||||||
your config files."
|
your config files."
|
||||||
deprecation_message args, "--paginate", "The 'paginate' setting can only be set in your \
|
arg_is_present? args, "--paginate", "The 'paginate' setting can only be set in your \
|
||||||
config files."
|
config files."
|
||||||
deprecation_message args, "--url", "The 'url' setting can only be set in your config files."
|
arg_is_present? args, "--url", "The 'url' setting can only be set in your config files."
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.no_subcommand(args)
|
def self.no_subcommand(args)
|
||||||
|
@ -23,10 +23,14 @@ module Jekyll
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.deprecation_message(args, deprecated_argument, message)
|
def self.arg_is_present?(args, deprecated_argument, message)
|
||||||
if args.include?(deprecated_argument)
|
if args.include?(deprecated_argument)
|
||||||
|
deprecation_message(message)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.deprecation_message(message)
|
||||||
Jekyll.logger.error "Deprecation:", message
|
Jekyll.logger.error "Deprecation:", message
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
|
@ -79,6 +79,20 @@ class TestConfiguration < Test::Unit::TestCase
|
||||||
assert_equal @config.backwards_compatibilize["include"], %w[STOP_THE_PRESSES.txt .heloses .git]
|
assert_equal @config.backwards_compatibilize["include"], %w[STOP_THE_PRESSES.txt .heloses .git]
|
||||||
end
|
end
|
||||||
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
|
context "loading configuration" do
|
||||||
setup do
|
setup do
|
||||||
@path = File.join(Dir.pwd, '_config.yml')
|
@path = File.join(Dir.pwd, '_config.yml')
|
||||||
|
|
Loading…
Reference in New Issue