summaryrefslogtreecommitdiff
path: root/_test/lib/test_reader.py
diff options
context:
space:
mode:
Diffstat (limited to '_test/lib/test_reader.py')
-rw-r--r--_test/lib/test_reader.py48
1 files changed, 48 insertions, 0 deletions
diff --git a/_test/lib/test_reader.py b/_test/lib/test_reader.py
new file mode 100644
index 0000000..25f67b7
--- /dev/null
+++ b/_test/lib/test_reader.py
@@ -0,0 +1,48 @@
+from __future__ import absolute_import
+from __future__ import print_function
+
+import codecs
+import io
+
+from ruamel.yaml.compat import PY2
+import ruamel.yaml.reader
+
+def _run_reader(data, verbose):
+ try:
+ stream = ruamel.yaml.py.reader.Reader(data)
+ while stream.peek() != u'\0':
+ stream.forward()
+ except ruamel.yaml.py.reader.ReaderError as exc:
+ if verbose:
+ print(exc)
+ else:
+ raise AssertionError("expected an exception")
+
+def test_stream_error(error_filename, verbose=False):
+ with open(error_filename, 'rb') as fp0:
+ _run_reader(fp0, verbose)
+ with open(error_filename, 'rb') as fp0:
+ _run_reader(fp0.read(), verbose)
+ for encoding in ['utf-8', 'utf-16-le', 'utf-16-be']:
+ try:
+ if PY2:
+ with open(error_filename, 'rb') as fp0:
+ data = unicode(fp0.read(), encoding)
+ else:
+ with open(error_filename, 'rb') as fp0:
+ data = fp0.read().decode(encoding)
+ break
+ except UnicodeDecodeError:
+ pass
+ else:
+ return
+ _run_reader(data, verbose)
+ with io.open(error_filename, encoding=encoding) as fp:
+ _run_reader(fp, verbose)
+
+test_stream_error.unittest = ['.stream-error']
+
+if __name__ == '__main__':
+ import test_appliance
+ test_appliance.run(globals())
+