diff --git a/lib/squib/deck.rb b/lib/squib/deck.rb index 0ed3289..ecc4d75 100644 --- a/lib/squib/deck.rb +++ b/lib/squib/deck.rb @@ -115,7 +115,7 @@ module Squib thefile = file thefile = "#{File.dirname(__FILE__)}/layouts/#{file}" unless File.exists?(file) if File.exists? thefile - yml = @layout.merge(YAML.load_file(thefile)) + yml = @layout.merge(YAML.load_file(thefile) || {}) #load_file returns false on empty file yml.each do |key, value| @layout[key] = recurse_extends(yml, key, {}) end @@ -157,7 +157,7 @@ module Squib # :nodoc: # @api private def has_extends?(yml, key) - yml[key].key?('extends') + !!yml[key] && yml[key].key?('extends') end # Safeguard against malformed circular extends diff --git a/spec/data/layouts/empty-rule.yml b/spec/data/layouts/empty-rule.yml new file mode 100644 index 0000000..3bc51d3 --- /dev/null +++ b/spec/data/layouts/empty-rule.yml @@ -0,0 +1 @@ +empty: #no rules actually set \ No newline at end of file diff --git a/spec/data/layouts/empty.yml b/spec/data/layouts/empty.yml new file mode 100644 index 0000000..df6c743 --- /dev/null +++ b/spec/data/layouts/empty.yml @@ -0,0 +1 @@ +# testing for an empty yaml file here \ No newline at end of file diff --git a/spec/deck_spec.rb b/spec/deck_spec.rb index 23e4962..938756c 100644 --- a/spec/deck_spec.rb +++ b/spec/deck_spec.rb @@ -207,6 +207,18 @@ describe Squib::Deck do }) end + it 'loads nothing on an empty layout file' do + d = Squib::Deck.new(layout: layout_file('empty.yml')) + expect(d.layout).to eq({}) + end + + it 'handles extends on a rule with no args' do + d = Squib::Deck.new(layout: layout_file('empty-rule.yml')) + expect(d.layout).to eq({ + 'empty' => nil + }) + end + end end