@@ -396,6 +396,33 @@ def method(self):
396396 with self .assertRaisesRegex (TypeError , "argument 1 must be a type" ):
397397 C ().method ()
398398
399+ def test_supercheck_fail (self ):
400+ class C :
401+ def method (self , type_ , obj ):
402+ return super (type_ , obj ).method ()
403+
404+ c = C ()
405+ err_msg = (
406+ r"super\(type, obj\): obj \({} {}\) is not "
407+ r"an instance or subtype of type \({}\)."
408+ )
409+
410+ cases = (
411+ (int , c , int .__name__ , C .__name__ , "instance of" ),
412+ # obj is instance of type
413+ (C , list (), C .__name__ , list .__name__ , "instance of" ),
414+ # obj is type itself
415+ (C , list , C .__name__ , list .__name__ , "type" ),
416+ )
417+
418+ for case in cases :
419+ with self .subTest (case = case ):
420+ type_ , obj , type_str , obj_str , instance_or_type = case
421+ regex = err_msg .format (instance_or_type , obj_str , type_str )
422+
423+ with self .assertRaisesRegex (TypeError , regex ):
424+ c .method (type_ , obj )
425+
399426 def test_super___class__ (self ):
400427 class C :
401428 def method (self ):
0 commit comments