Author: Martin Matusiak <numero...@gmail.com>
Branch: py3.3
Changeset: r72550:44f52293da32
Date: 2014-07-27 10:15 +0200
http://bitbucket.org/pypy/pypy/changeset/44f52293da32/

Log:    add _csv test_delimiter test and replicate cpython error handling

diff --git a/pypy/module/_csv/interp_csv.py b/pypy/module/_csv/interp_csv.py
--- a/pypy/module/_csv/interp_csv.py
+++ b/pypy/module/_csv/interp_csv.py
@@ -49,6 +49,8 @@
         return default
     if space.is_w(w_src, space.w_None):
         return u'\0'
+    if not space.isinstance_w(w_src, space.w_unicode):
+        raise oefmt(space.w_TypeError, '"%s" must be string, not %T', name, 
w_src)
     src = space.unicode_w(w_src)
     if len(src) == 1:
         return src[0]
@@ -109,7 +111,7 @@
 
     if dialect.delimiter == u'\0':
         raise OperationError(space.w_TypeError,
-                             space.wrap('delimiter must be set'))
+                             space.wrap('"delimiter" must be a 1-character 
string'))
 
     if space.is_w(w_quotechar, space.w_None) and w_quoting is None:
         tmp_quoting = QUOTE_NONE
diff --git a/pypy/module/_csv/test/test_dialect.py 
b/pypy/module/_csv/test/test_dialect.py
--- a/pypy/module/_csv/test/test_dialect.py
+++ b/pypy/module/_csv/test/test_dialect.py
@@ -80,6 +80,21 @@
         _csv.register_dialect('foo1', strict=_csv)    # :-/
         assert _csv.get_dialect('foo1').strict == True
 
+    def test_delimiter(self):
+        import _csv
+
+        exc_info = raises(TypeError, _csv.register_dialect, 'foo1', 
delimiter=":::")
+        assert exc_info.value.args[0] == '"delimiter" must be a 1-character 
string'
+
+        exc_info = raises(TypeError, _csv.register_dialect, 'foo1', 
delimiter="")
+        assert exc_info.value.args[0] == '"delimiter" must be a 1-character 
string'
+
+        exc_info = raises(TypeError, _csv.register_dialect, 'foo1', 
delimiter=b",")
+        assert exc_info.value.args[0] == '"delimiter" must be string, not 
bytes'
+
+        exc_info = raises(TypeError, _csv.register_dialect, 'foo1', 
delimiter=4)
+        assert exc_info.value.args[0] == '"delimiter" must be string, not int'
+
     def test_line_terminator(self):
         # lineterminator can be the empty string
         import _csv
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to