Author: Brian Kearns <[email protected]>
Branch:
Changeset: r70993:e87d8dddb7f3
Date: 2014-04-25 19:38 -0400
http://bitbucket.org/pypy/pypy/changeset/e87d8dddb7f3/
Log: test/fix tcsetattr validation of attributes
diff --git a/pypy/module/termios/interp_termios.py
b/pypy/module/termios/interp_termios.py
--- a/pypy/module/termios/interp_termios.py
+++ b/pypy/module/termios/interp_termios.py
@@ -4,7 +4,7 @@
"""
from pypy.interpreter.gateway import unwrap_spec
-from pypy.interpreter.error import wrap_oserror
+from pypy.interpreter.error import wrap_oserror, OperationError
from rpython.rlib import rtermios
import termios
@@ -19,6 +19,10 @@
@unwrap_spec(when=int)
def tcsetattr(space, w_fd, when, w_attributes):
fd = space.c_filedescriptor_w(w_fd)
+ if not space.isinstance_w(w_attributes, space.w_list) or \
+ space.len_w(w_attributes) != 7:
+ raise OperationError(space.w_TypeError, space.wrap(
+ "tcsetattr, arg 3: must be 7 element list"))
w_iflag, w_oflag, w_cflag, w_lflag, w_ispeed, w_ospeed, w_cc = \
space.unpackiterable(w_attributes, expected_length=7)
w_builtin = space.getbuiltinmodule('__builtin__')
diff --git a/pypy/module/termios/test/test_termios.py
b/pypy/module/termios/test/test_termios.py
--- a/pypy/module/termios/test/test_termios.py
+++ b/pypy/module/termios/test/test_termios.py
@@ -149,4 +149,7 @@
def test_error_tcsetattr(self):
import termios
- raises(ValueError, termios.tcsetattr, 0, 1, (1, 2))
+ exc = raises(TypeError, termios.tcsetattr, 0, 1, (1, 2))
+ assert str(exc.value) == "tcsetattr, arg 3: must be 7 element list"
+ exc = raises(TypeError, termios.tcsetattr, 0, 1, (1, 2, 3, 4, 5, 6, 7))
+ assert str(exc.value) == "tcsetattr, arg 3: must be 7 element list"
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit