import test_appliance from yaml.reader import Reader, ReaderError import codecs class TestReaderErrors(test_appliance.TestAppliance): def _testReaderUnicodeErrors(self, test_name, stream_filename): for encoding in ['utf-8', 'utf-16-le', 'utf-16-be']: try: data = unicode(file(stream_filename, 'rb').read(), encoding) break except: pass else: return #self._load(data) self.failUnlessRaises(ReaderError, lambda: self._load(data)) #self._load(codecs.open(stream_filename, encoding=encoding)) self.failUnlessRaises(ReaderError, lambda: self._load(codecs.open(stream_filename, encoding=encoding))) def _testReaderStringErrors(self, test_name, stream_filename): data = file(stream_filename, 'rb').read() #self._load(data) self.failUnlessRaises(ReaderError, lambda: self._load(data)) def _testReaderFileErrors(self, test_name, stream_filename): data = file(stream_filename, 'rb') #self._load(data) self.failUnlessRaises(ReaderError, lambda: self._load(data)) def _load(self, data): stream = Reader(data) while stream.peek() != u'\0': stream.forward() TestReaderErrors.add_tests('testReaderUnicodeErrors', '.stream-error') TestReaderErrors.add_tests('testReaderStringErrors', '.stream-error') TestReaderErrors.add_tests('testReaderFileErrors', '.stream-error')