[Python-checkins] python/dist/src/Lib/test test_funcattrs.py, 1.15,
1.16
arigo at users.sourceforge.net
arigo at users.sourceforge.net
Thu Oct 28 18:32:11 CEST 2004
- Previous message: [Python-checkins] python/dist/src/Objects funcobject.c,2.66,2.67
- Next message: [Python-checkins] python/dist/src/Include cellobject.h, 2.3,
2.4 funcobject.h, 2.26, 2.27 intobject.h, 2.30,
2.31 listobject.h, 2.32, 2.33 methodobject.h, 2.27,
2.28 rangeobject.h, 2.19, 2.20 setobject.h, 2.4,
2.5 sliceobject.h, 2.7, 2.8 stringobject.h, 2.39,
2.40 tupleobject.h, 2.29, 2.30
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/python/python/dist/src/Lib/test
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19812/Lib/test
Modified Files:
test_funcattrs.py
Log Message:
Wrote down the invariants of some common objects whose structure is
exposed in header files. Fixed a few comments in these headers.
As we might have expected, writing down invariants systematically exposed a
(minor) bug. In this case, function objects have a writeable func_code
attribute, which could be set to code objects with the wrong number of
free variables. Calling the resulting function segfaulted the interpreter.
Added a corresponding test.
Index: test_funcattrs.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_funcattrs.py,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- test_funcattrs.py 13 Aug 2004 03:57:22 -0000 1.15
+++ test_funcattrs.py 28 Oct 2004 16:31:59 -0000 1.16
@@ -218,11 +218,11 @@
# Test all predefined function attributes systematically
-def cantset(obj, name, value):
+def cantset(obj, name, value, exception=(AttributeError, TypeError)):
verify(hasattr(obj, name)) # Otherwise it's probably a typo
try:
setattr(obj, name, value)
- except (AttributeError, TypeError):
+ except exception:
pass
else:
raise TestFailed, "shouldn't be able to set %s to %r" % (name, value)
@@ -279,11 +279,20 @@
def test_func_code():
+ a = b = 24
def f(): pass
def g(): print 12
+ def f1(): print a
+ def g1(): print b
+ def f2(): print a, b
verify(type(f.func_code) is types.CodeType)
f.func_code = g.func_code
cantset(f, "func_code", None)
+ # can't change the number of free vars
+ cantset(f, "func_code", f1.func_code, exception=ValueError)
+ cantset(f1, "func_code", f.func_code, exception=ValueError)
+ cantset(f1, "func_code", f2.func_code, exception=ValueError)
+ f1.func_code = g1.func_code
def test_func_defaults():
def f(a, b): return (a, b)
- Previous message: [Python-checkins] python/dist/src/Objects funcobject.c,2.66,2.67
- Next message: [Python-checkins] python/dist/src/Include cellobject.h, 2.3,
2.4 funcobject.h, 2.26, 2.27 intobject.h, 2.30,
2.31 listobject.h, 2.32, 2.33 methodobject.h, 2.27,
2.28 rangeobject.h, 2.19, 2.20 setobject.h, 2.4,
2.5 sliceobject.h, 2.7, 2.8 stringobject.h, 2.39,
2.40 tupleobject.h, 2.29, 2.30
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Python-checkins
mailing list