[Python-checkins] python/dist/src/Lib/test test_descr.py,1.161,1.162
gvanrossum@users.sourceforge.net
gvanrossum@users.sourceforge.net
Mon, 25 Nov 2002 13:39:08 -0800
Update of /cvsroot/python/python/dist/src/Lib/test
In directory sc8-pr-cvs1:/tmp/cvs-serv18947
Modified Files:
test_descr.py
Log Message:
A tweaked version of Jeremy's patch #642489, to produce better error
messages about MRO conflicts. (Tweaks here: don't print the message,
but compare it with an expected string.)
Index: test_descr.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_descr.py,v
retrieving revision 1.161
retrieving revision 1.162
diff -C2 -d -r1.161 -r1.162
*** test_descr.py 23 Nov 2002 16:57:00 -0000 1.161
--- test_descr.py 25 Nov 2002 21:38:52 -0000 1.162
***************
*** 1055,1058 ****
--- 1055,1088 ----
Pane, ScrollingMixin, EditingMixin, object))
+ def mro_disagreement():
+ if verbose: print "Testing error messages for MRO disagreement..."
+ def raises(exc, expected, callable, *args):
+ try:
+ callable(*args)
+ except exc, msg:
+ if str(msg) != expected:
+ raise TestFailed, "Message %r, expected %r" % (str(msg),
+ expected)
+ else:
+ raise TestFailed, "Expected %s" % exc
+ class A(object): pass
+ class B(A): pass
+ class C(object): pass
+ # Test some very simple errors
+ raises(TypeError, "duplicate base class A",
+ type, "X", (A, A), {})
+ raises(TypeError, "MRO conflict among bases B, A",
+ type, "X", (A, B), {})
+ raises(TypeError, "MRO conflict among bases C, B, A",
+ type, "X", (A, C, B), {})
+ # Test a slightly more complex error
+ class GridLayout(object): pass
+ class HorizontalGrid(GridLayout): pass
+ class VerticalGrid(GridLayout): pass
+ class HVGrid(HorizontalGrid, VerticalGrid): pass
+ class VHGrid(VerticalGrid, HorizontalGrid): pass
+ raises(TypeError, "MRO conflict among bases VerticalGrid, HorizontalGrid",
+ type, "ConfusedGrid", (HVGrid, VHGrid), {})
+
def objects():
if verbose: print "Testing object class..."
***************
*** 3423,3426 ****
--- 3453,3457 ----
pymods()
multi()
+ mro_disagreement()
diamond()
ex5()