Source

pyyaml / tests / test_reader.py

Diff from to

File tests/test_reader.py

 
-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()
+    except yaml.reader.ReaderError, exc:
+        if verbose:
+            print exc
+    else:
+        raise AssertionError("expected an exception")
 
-TestReaderErrors.add_tests('testReaderUnicodeErrors', '.stream-error')
-TestReaderErrors.add_tests('testReaderStringErrors', '.stream-error')
-TestReaderErrors.add_tests('testReaderFileErrors', '.stream-error')
+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())
+