Browse Source

Warn on conf when an option is not recognized

dev
Andy Meneely 10 years ago
parent
commit
7126afbc9c
  1. 1
      CHANGELOG.md
  2. 9
      lib/squib/conf.rb
  3. 11
      spec/conf_spec.rb
  4. 4
      spec/data/conf/unrecognized.yml

1
CHANGELOG.md

@ -5,6 +5,7 @@ Squib follows [semantic versioning](http://semver.org).
Chores:
* Ripped out a lot of old constants used from the old way we handled arguments. Yay negative churn!
* Emit a warning when a `config.yml` option is not recognized
## v0.8.0 / 2015-10-26
Features

9
lib/squib/conf.rb

@ -52,6 +52,7 @@ module Squib
Squib::logger.info { " using config: #{file}" }
yaml = YAML.load_file(file) || {}
end
warn_unrecognized(yaml)
Conf.new(DEFAULTS.merge(yaml))
end
@ -113,5 +114,13 @@ module Squib
@config_hash['antialias'] = ANTIALIAS_OPTS[@config_hash['antialias'].downcase.strip]
end
# Were there any unrecognized options in the config file?
def self.warn_unrecognized(yaml)
unrec = yaml.keys - DEFAULTS.keys
if unrec.any?
Squib::logger.warn "Unrecognized configuration option(s): #{unrec.join(',')}"
end
end
end
end

11
spec/conf_spec.rb

@ -4,17 +4,17 @@ require 'spec_helper'
describe Squib::Conf do
it 'parses the project template file just fine' do
conf = Squib::Conf.load(project_template('config.yml'))
conf = Squib::Conf.load project_template('config.yml')
expect(conf.backend).to eq(Squib::Conf::DEFAULTS['backend'])
end
it 'parses an empty file' do
conf = Squib::Conf.load(conf('empty.yml'))
conf = Squib::Conf.load conf('empty.yml')
expect(conf.backend).to eq(Squib::Conf::DEFAULTS['backend'])
end
it 'parses the sample custom config' do
conf = Squib::Conf.load(sample_file('custom-config.yml'))
conf = Squib::Conf.load sample_file('custom-config.yml')
expect(conf.progress_bars).to be true
expect(conf.text_hint).to eq '#FF0000'
expect(conf.custom_colors).to eq({ 'foo' => '#ccc' })
@ -26,4 +26,9 @@ describe Squib::Conf do
expect(Squib::Conf.new.antialias).to eq 'subpixel'
end
it 'warns when the yml has an unrecognized option' do
expect(Squib::logger).to receive(:warn).with('Unrecognized configuration option(s): unicorns')
Squib::Conf.load conf('unrecognized.yml')
end
end

4
spec/data/conf/unrecognized.yml

@ -0,0 +1,4 @@
# This is recognized, so it should be fine.
backend: svg
# This is not recognized.
unicorns: true
Loading…
Cancel
Save