[Zodb-checkins] CVS: Packages/ZConfig/tests - test_schema.py:1.1.2.38
Fred L. Drake, Jr.
fred@zope.com
Fri, 3 Jan 2003 12:05:26 -0500
Update of /cvs-repository/Packages/ZConfig/tests
In directory cvs.zope.org:/tmp/cvs-serv12732/tests
Modified Files:
Tag: zconfig-schema-devel-branch
test_schema.py
Log Message:
Allow a sectiontype to extend an existing group.
This is needed to allow schema components to themselves be extensible (for
example, to add new concrete storage types to an abstract "storage" type).
=== Packages/ZConfig/tests/test_schema.py 1.1.2.37 => 1.1.2.38 ===
--- Packages/ZConfig/tests/test_schema.py:1.1.2.37 Fri Jan 3 00:50:42 2003
+++ Packages/ZConfig/tests/test_schema.py Fri Jan 3 12:05:22 2003
@@ -342,6 +342,40 @@
self.assert_(conf.g[2]._type is t2)
self.assert_(conf.g[3]._type is t2)
+ def test_sectiongroup_extension(self):
+ schema = self.load_schema_text(
+ "<schema>"
+ " <sectiongroup type='group'/>"
+ " <sectiontype type='extra' group='group'/>"
+ " <section name='thing' type='group'/>"
+ "</schema>")
+ group = schema.gettype("group")
+ self.assert_(schema.gettype("extra") is group.gettype("extra"))
+
+ # make sure we can use the extension in a config:
+ conf = self.load_config_text(schema, "<extra thing/>")
+ self.assertEqual(conf.thing.getSectionType(), "extra")
+
+ def test_sectiongroup_extension_errors(self):
+ # specifying a non-existant group
+ self.assertRaises(ZConfig.SchemaError, self.load_schema_text,
+ "<schema>"
+ " <sectiontype type='s' group='group'/>"
+ "</schema>")
+ # specifying something that isn't a group
+ self.assertRaises(ZConfig.SchemaError, self.load_schema_text,
+ "<schema>"
+ " <sectiontype type='t1'/>"
+ " <sectiontype type='t2' group='t1'/>"
+ "</schema>")
+ # specifying a group from w/in a group
+ self.assertRaises(ZConfig.SchemaError, self.load_schema_text,
+ "<schema>"
+ " <sectiongroup type='group'>"
+ " <sectiontype type='t' group='group'/>"
+ " </sectiongroup>"
+ "</schema>")
+
def test_arbitrary_key(self):
schema = self.load_schema_text(
"<schema>"