[pypy-commit] pypy py3.3: add _csv test_delimiter test and replicate cpython error handling
numerodix
noreply at buildbot.pypy.org
Sun Jul 27 10:25:54 CEST 2014
Author: Martin Matusiak <numerodix at 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
More information about the pypy-commit
mailing list