mirror of
https://github.com/inspec/inspec
synced 2024-12-18 17:14:33 +00:00
1dafe50bd9
See https://github.com/chef/inspec/issues/1709 Fixes https://github.com/chef/inspec/issues/1709 Signed-off-by: Dominik Richter <dominik.richter@gmail.com>
121 lines
3.6 KiB
Ruby
121 lines
3.6 KiB
Ruby
# encoding: utf-8
|
|
# author: Christoph Hartmann
|
|
# author: Dominik Richter
|
|
|
|
require 'helper'
|
|
|
|
describe 'SimpleConfig Default Parser' do
|
|
it 'should parse an empty string' do
|
|
cur = SimpleConfig.new('')
|
|
cur.params.must_equal({})
|
|
end
|
|
|
|
it 'should parse only spaces' do
|
|
cur = SimpleConfig.new(' ')
|
|
cur.params.must_equal({})
|
|
end
|
|
|
|
it 'should parse only tabs' do
|
|
cur = SimpleConfig.new("\t")
|
|
cur.params.must_equal({})
|
|
end
|
|
|
|
it 'should parse only newlines' do
|
|
cur = SimpleConfig.new("\n")
|
|
cur.params.must_equal({})
|
|
end
|
|
|
|
it 'should parse a simple assignment' do
|
|
cur = SimpleConfig.new('a = b')
|
|
cur.params.must_equal({ 'a' => 'b' })
|
|
end
|
|
|
|
it 'should parse a multiple assignments' do
|
|
cur = SimpleConfig.new("a = b\n\nc = d")
|
|
cur.params.must_equal({ 'a' => 'b', 'c' => 'd' })
|
|
end
|
|
|
|
it 'handles files with only comments' do
|
|
cur = SimpleConfig.new('#a comment')
|
|
cur.params.must_equal({})
|
|
end
|
|
|
|
it 'handles separate comments and assignments' do
|
|
cur = SimpleConfig.new("# hello world\n\na = b")
|
|
cur.params.must_equal({ 'a' => 'b' })
|
|
end
|
|
|
|
it 'handles comments and assignments combined' do
|
|
cur = SimpleConfig.new('a = b# hello')
|
|
cur.params.must_equal({ 'a' => 'b' })
|
|
end
|
|
|
|
it 'handles groups' do
|
|
cur = SimpleConfig.new('[g]')
|
|
cur.params.must_equal({ 'g' => {} })
|
|
cur.groups.must_equal(['g'])
|
|
end
|
|
|
|
it 'handles non-group assignments and groups' do
|
|
cur = SimpleConfig.new("a = b\n[g]")
|
|
cur.params.must_equal({ 'a' => 'b', 'g' => {} })
|
|
cur.groups.must_equal(['g'])
|
|
end
|
|
|
|
it 'handles assignments in groups' do
|
|
cur = SimpleConfig.new("[g]\na = b")
|
|
cur.params.must_equal({ 'g' => { 'a' => 'b' } })
|
|
cur.groups.must_equal(['g'])
|
|
end
|
|
|
|
it 'handles multiple groups' do
|
|
cur = SimpleConfig.new("[g]\na = b\n[k]\n\nc = d")
|
|
res = {
|
|
'g' => { 'a' => 'b' },
|
|
'k' => { 'c' => 'd' },
|
|
}
|
|
cur.params.must_equal(res)
|
|
cur.groups.must_equal(['g', 'k'])
|
|
end
|
|
|
|
it 'provides methods to access returned hashes' do
|
|
cur = SimpleConfig.new("[section1]\nkey1 = value1\n\n[section2]\nkey2 = value2\n")
|
|
cur.params['section1'].key1.must_equal('value1')
|
|
cur.params['section2'].key2.must_equal('value2')
|
|
cur.params['section2'].missing_key.must_be_nil
|
|
end
|
|
|
|
it 'supports :assignment_regex for specifying the assignment' do
|
|
cur = SimpleConfig.new("key:::val", assignment_regex: /^(.*):::(.*)$/)
|
|
cur.params.must_equal({'key' => 'val'})
|
|
end
|
|
|
|
it 'supports :assignment_re for specifying the assignment with a deprecation warning' do
|
|
assert_output(nil, /DEPRECATION/) do
|
|
cur = SimpleConfig.new("key:::val", assignment_re: /^(.*):::(.*)$/)
|
|
cur.params.must_equal({'key' => 'val'})
|
|
end
|
|
end
|
|
|
|
it 'only reads the first assignment match group by default' do
|
|
cur = SimpleConfig.new("1:2:3", assignment_regex: /^(.*):(.*):(.*)$/)
|
|
cur.params.must_equal({'1' => '2'})
|
|
end
|
|
|
|
it 'supports :key_values for specifying the number of values' do
|
|
cur = SimpleConfig.new("1:2:3", assignment_regex: /^(.*):(.*):(.*)$/, key_values: 2)
|
|
cur.params.must_equal({'1' => ['2', '3']})
|
|
end
|
|
|
|
it 'supports :key_values with more values than match groups' do
|
|
cur = SimpleConfig.new("1:2:3", assignment_regex: /^(.*):(.*):(.*)$/, key_values: 4)
|
|
cur.params.must_equal({'1' => ['2', '3', nil, nil]})
|
|
end
|
|
|
|
it 'supports :key_vals for specifying the assignment with a deprecation warning' do
|
|
assert_output(nil, /DEPRECATION/) do
|
|
cur = SimpleConfig.new("1:2:3", assignment_regex: /^(.*):(.*):(.*)$/, key_vals: 2)
|
|
cur.params.must_equal({'1' => ['2', '3']})
|
|
end
|
|
end
|
|
end
|