示例#1
0
    def test_builtin_full_override(self):
        # check our assumptions...
        # and yes, the signatures below are for file rather than
        # dict; we need a cpy class for the test, the ConfigHint doesn't
        # have to be accurate however
        class cls(dict):
            __slots__ = ()

        self.assertRaises(TypeError, basics.ConfigType, cls)

        raw_hint = ConfigHint(types={
            "filename": "str",
            "mode": "r",
            "buffering": "int"
        },
                              typename='file',
                              required=['filename'],
                              positional=['filename'])

        # make sure it still tries to introspect, and throws typeerror.
        # introspection is generally wanted- if it must be skipped, the
        # ConfigHint must make it explicit
        cls.pkgcore_config_type = raw_hint
        self.assertRaises(TypeError, basics.ConfigType, cls)
        cls.pkgcore_config_type = raw_hint.clone(authorative=True)
        conf = basics.ConfigType(cls)
        self.assertEqual(conf.name, 'file')
        self.assertEqual(list(conf.required), ['filename'])
        self.assertEqual(list(conf.positional), ['filename'])
        self.assertEqual(sorted(conf.types), ['buffering', 'filename', 'mode'])
示例#2
0
 def test_clone(self):
     c = ConfigHint(types={'foo':'list', 'one':'str'},
         positional=['one'], required=['one'],
         typename='barn', doc='orig doc')
     c2 = c.clone(types={'foo':'list', 'one':'str', 'two':'str'},
         required=['one', 'two'])
     self.assertEqual(c2.types, {'foo':'list', 'one':'str', 'two':'str'})
     self.assertEqual(c2.positional, c.positional)
     self.assertEqual(c2.required, ['one', 'two'])
     self.assertEqual(c2.typename, c.typename)
     self.assertEqual(c2.allow_unknowns, c.allow_unknowns)
     self.assertEqual(c2.doc, c.doc)
示例#3
0
 def test_clone(self):
     c = ConfigHint(types={
         'foo': 'list',
         'one': 'str'
     },
                    positional=['one'],
                    required=['one'],
                    typename='barn',
                    doc='orig doc')
     c2 = c.clone(types={
         'foo': 'list',
         'one': 'str',
         'two': 'str'
     },
                  required=['one', 'two'])
     self.assertEqual(c2.types, {'foo': 'list', 'one': 'str', 'two': 'str'})
     self.assertEqual(c2.positional, c.positional)
     self.assertEqual(c2.required, ['one', 'two'])
     self.assertEqual(c2.typename, c.typename)
     self.assertEqual(c2.allow_unknowns, c.allow_unknowns)
     self.assertEqual(c2.doc, c.doc)
示例#4
0
    def test_builtin_full_override(self):
        # check our assumptions...
        # and yes, the signatures below are for file rather than
        # dict; we need a cpy class for the test, the ConfigHint doesn't
        # have to be accurate however
        class cls(dict):
            __slots__ = ()
        self.assertRaises(TypeError, basics.ConfigType, cls)

        raw_hint = ConfigHint(types={"filename":"str", "mode":"r",
            "buffering":"int"}, typename='file',
            required=['filename'], positional=['filename'])

        # make sure it still tries to introspect, and throws typeerror.
        # introspection is generally wanted- if it must be skipped, the
        # ConfigHint must make it explicit
        cls.pkgcore_config_type = raw_hint
        self.assertRaises(TypeError, basics.ConfigType, cls)
        cls.pkgcore_config_type = raw_hint.clone(authorative=True)
        conf = basics.ConfigType(cls)
        self.assertEqual(conf.name, 'file')
        self.assertEqual(list(conf.required), ['filename'])
        self.assertEqual(list(conf.positional), ['filename'])
        self.assertEqual(sorted(conf.types), ['buffering', 'filename', 'mode'])