diff options
Diffstat (limited to 'tests/test_reader.py')
-rw-r--r-- | tests/test_reader.py | 67 |
1 files changed, 29 insertions, 38 deletions
diff --git a/tests/test_reader.py b/tests/test_reader.py index 1bfae1a..3576ae6 100644 --- a/tests/test_reader.py +++ b/tests/test_reader.py @@ -1,44 +1,35 @@ -import test_appliance -from yaml.reader import Reader, ReaderError - +import yaml.reader 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) +def _run_reader(data, verbose): + try: + stream = yaml.reader.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') - + except yaml.reader.ReaderError, exc: + if verbose: + print exc + else: + raise AssertionError("expected an exception") + +def test_stream_error(error_filename, verbose=False): + _run_reader(open(error_filename, 'rb'), verbose) + _run_reader(open(error_filename, 'rb').read(), verbose) + for encoding in ['utf-8', 'utf-16-le', 'utf-16-be']: + try: + data = unicode(open(error_filename, 'rb').read(), encoding) + break + except UnicodeDecodeError: + pass + else: + return + _run_reader(data, verbose) + _run_reader(codecs.open(error_filename, encoding=encoding), verbose) + +test_stream_error.unittest = ['.stream-error'] + +if __name__ == '__main__': + import test_appliance + test_appliance.run(globals()) |