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