def test_validate_extra_values(self):
     conf = ConfigObj(inipath, configspec=specpath)
     conf.validate(Validator(), preserve_errors=True)
     
     self.assertEqual(conf.extra_values, ['extra', 'extra-section'])
     
     self.assertEqual(conf['section'].extra_values, ['extra-sub-section'])
     self.assertEqual(conf['section']['sub-section'].extra_values,
                      ['extra'])
 def test_get_extra_values(self):
     conf = ConfigObj(inipath, configspec=specpath)
     
     conf.validate(Validator(), preserve_errors=True)
     extra_values = get_extra_values(conf)
     
     expected = sorted([
         ((), 'extra'),
         ((), 'extra-section'),
         (('section', 'sub-section'), 'extra'),
         (('section',), 'extra-sub-section'),
     ])
     self.assertEqual(sorted(extra_values), expected)
 def test_validate_preserve_errors(self):
     conf = ConfigObj(inipath, configspec=specpath)
     
     validator = Validator()
     result = conf.validate(validator, preserve_errors=True)
     
     self.assertFalse(result['value'])
     self.assertFalse(result['missing-section'])
     
     section = result['section']
     self.assertFalse(section['value'])
     self.assertFalse(section['sub-section']['value'])
     self.assertFalse(section['missing-subsection'])
 def test_validate_no_valid_entries(self):
     conf = ConfigObj(inipath, configspec=specpath)
     
     validator = Validator()
     result = conf.validate(validator)
     self.assertFalse(result)