Author: Martin Matusiak <numero...@gmail.com>
Branch: stdlib-2.7.8
Changeset: r72987:5d1caa56b7cf
Date: 2014-07-27 10:15 +0200
http://bitbucket.org/pypy/pypy/changeset/5d1caa56b7cf/

Log:    add _csv test_delimiter test and replicate cpython error handling
        (grafted from 44f52293da324ce50c0138b5382d210e083de066)

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 '\0'
+    if not space.isinstance_w(w_src, space.w_str):
+        raise oefmt(space.w_TypeError, '"%s" must be string, not %T', name, 
w_src)
     src = space.str_w(w_src)
     if len(src) == 1:
         return src[0]
@@ -109,7 +111,7 @@
 
     if dialect.delimiter == '\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