[svn] commit: r974 - in /trunk/src/lib/config/python/isc/config: module_spec.py module_spec_test.py
BIND 10 source code commits
bind10-changes at lists.isc.org
Thu Feb 25 23:03:11 UTC 2010
Author: jelte
Date: Thu Feb 25 23:03:11 2010
New Revision: 974
Log:
and some more unit tests
Modified:
trunk/src/lib/config/python/isc/config/module_spec.py
trunk/src/lib/config/python/isc/config/module_spec_test.py
Modified: trunk/src/lib/config/python/isc/config/module_spec.py
==============================================================================
--- trunk/src/lib/config/python/isc/config/module_spec.py (original)
+++ trunk/src/lib/config/python/isc/config/module_spec.py Thu Feb 25 23:03:11 2010
@@ -236,7 +236,7 @@
return False
elif data_type == "list" and type(value) != list:
if errors != None:
- errors.append(str(value) + " should be a list, not a " + str(value.__class__.__name__))
+ errors.append(str(value) + " should be a list")
return False
elif data_type == "map" and type(value) != dict:
if errors != None:
Modified: trunk/src/lib/config/python/isc/config/module_spec_test.py
==============================================================================
--- trunk/src/lib/config/python/isc/config/module_spec_test.py (original)
+++ trunk/src/lib/config/python/isc/config/module_spec_test.py Thu Feb 25 23:03:11 2010
@@ -49,6 +49,9 @@
file1 = open(self.spec_file("spec1.spec"))
dd = isc.config.module_spec_from_file(file1)
self.spec1(dd)
+
+ def test_open_bad_file_obj(self):
+ self.assertRaises(ModuleSpecError, isc.config.module_spec_from_file, 1)
def test_bad_specfiles(self):
self.assertRaises(ModuleSpecError, self.read_spec_file, "spec3.spec")
@@ -88,5 +91,197 @@
self.assertEqual(True, self.validate_data("spec22.spec", "data22_7.data"))
self.assertEqual(False, self.validate_data("spec22.spec", "data22_8.data"))
+ def test_init(self):
+ self.assertRaises(ModuleSpecError, ModuleSpec, 1)
+ module_spec = isc.config.module_spec_from_file(self.spec_file("spec1.spec"), False)
+ self.spec1(module_spec)
+
+ def test_str(self):
+ module_spec = isc.config.module_spec_from_file(self.spec_file("spec1.spec"), False)
+ self.assertEqual(module_spec.__str__(), "{'module_name': 'Spec1'}")
+
+ def test_check_module_spec(self):
+ self.assertRaises(ModuleSpecError, isc.config.module_spec._check, 1)
+
+ def test_check_command_spec(self):
+ self.assertRaises(ModuleSpecError, isc.config.module_spec._check_command_spec, 1 )
+
+ self.assertRaises(ModuleSpecError, isc.config.module_spec._check_command_spec, [ 1 ] )
+
+ self.assertRaises(ModuleSpecError, isc.config.module_spec._check_command_spec,
+ [ { 'command_name': 1,
+ 'command_description': 'just for testing',
+ 'command_args': [
+ { 'item_name': 'arg1',
+ 'item_type': 'string',
+ 'item_optional': True
+ }
+ ]
+ }
+ ]
+ )
+
+ self.assertRaises(ModuleSpecError, isc.config.module_spec._check_command_spec,
+ [ { 'command_name': 'test_command',
+ 'command_description': 1,
+ 'command_args': [
+ { 'item_name': 'arg1',
+ 'item_type': 'string',
+ 'item_optional': True
+ }
+ ]
+ }
+ ]
+ )
+
+ self.assertRaises(ModuleSpecError, isc.config.module_spec._check_command_spec,
+ [ { 'command_name': 'test_command',
+ 'command_args': [ 1 ]
+ }
+ ]
+ )
+
+ def test_check_item_spec(self):
+ self.assertRaises(ModuleSpecError, isc.config.module_spec._check_item_spec, 1 )
+ self.assertRaises(ModuleSpecError, isc.config.module_spec._check_item_spec,
+ { 'item_name': 1,
+ 'item_type': "string",
+ 'item_optional': False,
+ 'item_default': "asdf"
+ }
+ )
+
+ self.assertRaises(ModuleSpecError, isc.config.module_spec._check_item_spec,
+ { 'item_name': "an_item",
+ 'item_type': "bad_type",
+ 'item_optional': False,
+ 'item_default': "asdf"
+ }
+ )
+
+ self.assertRaises(ModuleSpecError, isc.config.module_spec._check_item_spec,
+ { 'item_name': "an_item",
+ 'item_type': 1,
+ 'item_optional': False,
+ 'item_default': "asdf"
+ }
+ )
+
+ self.assertRaises(ModuleSpecError, isc.config.module_spec._check_item_spec,
+ { 'item_name': "an_item",
+ 'item_type': "string",
+ 'item_optional': False,
+ }
+ )
+
+ self.assertRaises(ModuleSpecError, isc.config.module_spec._check_item_spec,
+ { 'item_name': "an_item",
+ 'item_type': "string",
+ 'item_optional': 1,
+ }
+ )
+
+ self.assertRaises(ModuleSpecError, isc.config.module_spec._check_item_spec,
+ { 'item_name': "an_item",
+ 'item_type': "string",
+ 'item_optional': False,
+ 'item_default': 1
+ }
+ )
+
+
+ self.assertRaises(ModuleSpecError, isc.config.module_spec._check_item_spec,
+ { 'item_name': "an_item",
+ 'item_type': "list",
+ 'item_optional': False,
+ 'item_default': []
+ }
+ )
+
+ self.assertRaises(ModuleSpecError, isc.config.module_spec._check_item_spec,
+ { 'item_name': "an_item",
+ 'item_type': "list",
+ 'item_optional': False,
+ 'item_default': [],
+ 'list_item_spec': 1
+ }
+ )
+
+ self.assertRaises(ModuleSpecError, isc.config.module_spec._check_item_spec,
+ { 'item_name': "an_item",
+ 'item_type': "map",
+ 'item_optional': False,
+ 'item_default': {}
+ }
+ )
+
+ self.assertRaises(ModuleSpecError, isc.config.module_spec._check_item_spec,
+ { 'item_name': "an_item",
+ 'item_type': "map",
+ 'item_optional': False,
+ 'item_default': {},
+ 'map_item_spec': 1
+ }
+ )
+
+ self.assertRaises(ModuleSpecError, isc.config.module_spec._check_item_spec,
+ { 'item_name': "an_item",
+ 'item_type': "map",
+ 'item_optional': False,
+ 'item_default': {},
+ 'map_item_spec': [ 1 ]
+ }
+ )
+
+ def test_validate_type(self):
+ errors = []
+ self.assertEqual(True, isc.config.module_spec._validate_type({ 'item_type': 'integer' }, 1, errors))
+ self.assertEqual(False, isc.config.module_spec._validate_type({ 'item_type': 'integer' }, "a", None))
+ self.assertEqual(False, isc.config.module_spec._validate_type({ 'item_type': 'integer' }, "a", errors))
+ self.assertEqual(['a should be an integer'], errors)
+
+ errors = []
+ self.assertEqual(True, isc.config.module_spec._validate_type({ 'item_type': 'real' }, 1.1, errors))
+ self.assertEqual(False, isc.config.module_spec._validate_type({ 'item_type': 'real' }, "a", None))
+ self.assertEqual(False, isc.config.module_spec._validate_type({ 'item_type': 'real' }, "a", errors))
+ self.assertEqual(['a should be a real'], errors)
+
+ errors = []
+ self.assertEqual(True, isc.config.module_spec._validate_type({ 'item_type': 'boolean' }, True, errors))
+ self.assertEqual(False, isc.config.module_spec._validate_type({ 'item_type': 'boolean' }, "a", None))
+ self.assertEqual(False, isc.config.module_spec._validate_type({ 'item_type': 'boolean' }, "a", errors))
+ self.assertEqual(['a should be a boolean'], errors)
+
+ errors = []
+ self.assertEqual(True, isc.config.module_spec._validate_type({ 'item_type': 'string' }, "a", errors))
+ self.assertEqual(False, isc.config.module_spec._validate_type({ 'item_type': 'string' }, 1, None))
+ self.assertEqual(False, isc.config.module_spec._validate_type({ 'item_type': 'string' }, 1, errors))
+ self.assertEqual(['1 should be a string'], errors)
+
+ errors = []
+ self.assertEqual(True, isc.config.module_spec._validate_type({ 'item_type': 'list' }, [ 1, 1], errors))
+ self.assertEqual(False, isc.config.module_spec._validate_type({ 'item_type': 'list' }, 1, None))
+ self.assertEqual(False, isc.config.module_spec._validate_type({ 'item_type': 'list' }, 1, errors))
+ self.assertEqual(['1 should be a list'], errors)
+
+ errors = []
+ self.assertEqual(True, isc.config.module_spec._validate_type({ 'item_type': 'map' }, {"a": 1}, errors))
+ self.assertEqual(False, isc.config.module_spec._validate_type({ 'item_type': 'map' }, 1, None))
+ self.assertEqual(False, isc.config.module_spec._validate_type({ 'item_type': 'map' }, 1, errors))
+ self.assertEqual(['1 should be a map'], errors)
+
+ def test_validate_spec(self):
+ spec = { 'item_name': "an_item",
+ 'item_type': "string",
+ 'item_optional': False,
+ 'item_default': "asdf"
+ }
+ errors = []
+ self.assertEqual(False, isc.config.module_spec._validate_spec(spec, True, {}, None))
+ self.assertEqual(False, isc.config.module_spec._validate_spec(spec, True, {}, errors))
+ self.assertEqual(['non-optional item an_item missing'], errors)
+
+
+
if __name__ == '__main__':
unittest.main()
More information about the bind10-changes
mailing list