import yaml.reader import codecs def _run_reader(data, verbose): try: stream = yaml.reader.Reader(data) while stream.peek() != u'\0': stream.forward() 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())