Author: Martin Matusiak <[email protected]>
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
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit