From: Jelte Jansen Date: Wed, 4 Jul 2012 07:45:05 +0000 (+0200) Subject: [2114] unit test for failing list-in-named-set X-Git-Tag: trac2351_base~184^2~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5ae7f87beb8f7f23bdf6e511d3bee672273b5175;p=thirdparty%2Fkea.git [2114] unit test for failing list-in-named-set --- diff --git a/src/lib/config/tests/testdata/spec32.spec b/src/lib/config/tests/testdata/spec32.spec index 0d8cf7c8c2..854d9670f7 100644 --- a/src/lib/config/tests/testdata/spec32.spec +++ b/src/lib/config/tests/testdata/spec32.spec @@ -33,6 +33,22 @@ } ] } + }, + { "item_name": "named_set_item3", + "item_type": "named_set", + "item_optional": true, + "item_default": { "values": [ 1, 2, 3 ] }, + "named_set_item_spec": { + "item_name": "named_set_element", + "item_type": "list", + "item_optional": false, + "item_default": [], + "list_item_spec": + { "item_name": "list_value", + "item_type": "integer", + "item_optional": true + } + } } ] } diff --git a/src/lib/python/isc/config/tests/config_data_test.py b/src/lib/python/isc/config/tests/config_data_test.py index 221ffa6821..86fbc11d1d 100644 --- a/src/lib/python/isc/config/tests/config_data_test.py +++ b/src/lib/python/isc/config/tests/config_data_test.py @@ -47,7 +47,7 @@ class TestConfigData(unittest.TestCase): self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, "a") self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, [ 1, 2 ]) self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, { "a": 1 }) - + spec_part = find_spec_part(config_spec, "value2") check_type(spec_part, 1.1) self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, 1) @@ -55,7 +55,7 @@ class TestConfigData(unittest.TestCase): self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, "a") self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, [ 1, 2 ]) self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, { "a": 1 }) - + spec_part = find_spec_part(config_spec, "value3") check_type(spec_part, True) check_type(spec_part, False) @@ -64,7 +64,7 @@ class TestConfigData(unittest.TestCase): self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, "a") self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, [ 1, 2 ]) self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, { "a": 1 }) - + spec_part = find_spec_part(config_spec, "value4") check_type(spec_part, "asdf") self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, 1) @@ -72,7 +72,7 @@ class TestConfigData(unittest.TestCase): self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, True) self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, [ 1, 2 ]) self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, { "a": 1 }) - + spec_part = find_spec_part(config_spec, "value5") check_type(spec_part, [1, 2]) self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, 1) @@ -81,7 +81,7 @@ class TestConfigData(unittest.TestCase): self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, "a") self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, [ "a", "b" ]) self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, { "a": 1 }) - + spec_part = find_spec_part(config_spec, "value6") check_type(spec_part, { "value1": "aaa", "value2": 2 }) self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, 1) @@ -107,7 +107,7 @@ class TestConfigData(unittest.TestCase): self.assertRaises(isc.cc.data.DataTypeError, convert_type, spec_part, { "a": 1 }) self.assertRaises(isc.cc.data.DataTypeError, convert_type, 1, "a") self.assertRaises(isc.cc.data.DataTypeError, convert_type, { 'somedict': 'somevalue' }, "a") - + spec_part = find_spec_part(config_spec, "value2") self.assertEqual(1.1, convert_type(spec_part, '1.1')) self.assertEqual(123.0, convert_type(spec_part, '123')) @@ -130,7 +130,7 @@ class TestConfigData(unittest.TestCase): self.assertEqual('1', convert_type(spec_part, 1)) self.assertEqual('1.1', convert_type(spec_part, 1.1)) self.assertEqual('True', convert_type(spec_part, True)) - + spec_part = find_spec_part(config_spec, "value5") self.assertEqual([1, 2], convert_type(spec_part, '1, 2')) self.assertEqual([1, 2, 3], convert_type(spec_part, '1 2 3')) @@ -254,7 +254,7 @@ class TestConfigData(unittest.TestCase): def test_init(self): self.assertRaises(ConfigDataError, ConfigData, "asdf") - + def test_get_value(self): value, default = self.cd.get_value("item1") self.assertEqual(1, value) @@ -337,7 +337,7 @@ class TestMultiConfigData(unittest.TestCase): else: self.data_path = "../../../testdata" self.mcd = MultiConfigData() - + def test_init(self): self.assertEqual({}, self.mcd._specifications) self.assertEqual({}, self.mcd._current_config) @@ -491,6 +491,12 @@ class TestMultiConfigData(unittest.TestCase): self.assertEqual(2, value) value = self.mcd.get_default_value("Spec32/named_set_item/no_such_item") self.assertEqual(None, value) + # Check that top-level default value works when named set contains list + # (issue #2114) + value = self.mcd.get_default_value("Spec32/named_set_item3/values[2]") + self.assertEqual(3, value) + self.assertRaises(IndexError, self.mcd.get_default_value, + "Spec32/named_set_item3/values[5]") def test_get_value(self): module_spec = isc.config.module_spec_from_file(self.data_path + os.sep + "spec2.spec") @@ -535,7 +541,7 @@ class TestMultiConfigData(unittest.TestCase): def test_get_value_maps(self): maps = self.mcd.get_value_maps() self.assertEqual([], maps) - + module_spec = isc.config.module_spec_from_file(self.data_path + os.sep + "spec1.spec") self.mcd.set_specification(module_spec) @@ -557,7 +563,7 @@ class TestMultiConfigData(unittest.TestCase): self.assertEqual([], maps) self.mcd.remove_specification("Spec1") self.mcd.remove_specification("foo") - + module_spec = isc.config.module_spec_from_file(self.data_path + os.sep + "spec2.spec") self.mcd.set_specification(module_spec) maps = self.mcd.get_value_maps() @@ -749,9 +755,12 @@ class TestMultiConfigData(unittest.TestCase): config_items = self.mcd.get_config_item_list(None, False) self.assertEqual(['Spec32'], config_items) config_items = self.mcd.get_config_item_list(None, True) - self.assertEqual(['Spec32/named_set_item', 'Spec32/named_set_item2'], config_items) - self.mcd.set_value('Spec32/named_set_item', { "aaaa": 4, "aabb": 5, "bbbb": 6}) - config_items = self.mcd.get_config_item_list("/Spec32/named_set_item", True) + self.assertEqual(['Spec32/named_set_item', 'Spec32/named_set_item2', + 'Spec32/named_set_item3'], config_items) + self.mcd.set_value('Spec32/named_set_item', { "aaaa": 4, "aabb": 5, + "bbbb": 6}) + config_items = self.mcd.get_config_item_list("/Spec32/named_set_item", + True) self.assertEqual(['Spec32/named_set_item/aaaa', 'Spec32/named_set_item/aabb', 'Spec32/named_set_item/bbbb',