@@ -705,6 +705,88 @@ def test_raise_handle_all_raise_two_unnamed(self):
705705 self .assertMetadataEqual (orig , exc .exceptions [0 ].__context__ )
706706 self .assertMetadataEqual (orig , exc .exceptions [1 ].__context__ )
707707
708+ def test_raise_base_exception (self ):
709+ class MyBaseException (BaseException ):
710+ pass
711+
712+ orig = ExceptionGroup ("eg" , [ValueError (1 ), OSError (2 )])
713+ try :
714+ try :
715+ raise orig
716+ except* OSError :
717+ raise MyBaseException (3 )
718+ except BaseException as e :
719+ exc = e
720+
721+ self .assertIs (type (exc ), BaseExceptionGroup )
722+ self .assertEqual (exc .message , "" )
723+ self .assertEqual (len (exc .exceptions ), 2 )
724+ self .assertExceptionIsLike (exc .exceptions [0 ], MyBaseException (3 ))
725+ self .assertExceptionIsLike (
726+ exc .exceptions [1 ], ExceptionGroup ("eg" , [ValueError (1 )]))
727+
728+ self .assertExceptionIsLike (
729+ exc .exceptions [0 ].__context__ ,
730+ ExceptionGroup ("eg" , [OSError (2 )]))
731+
732+ self .assertMetadataNotEqual (orig , exc )
733+ self .assertMetadataEqual (orig , exc .exceptions [0 ].__context__ )
734+
735+ def test_raise_handle_all_raise_one_base_exception (self ):
736+ class MyBaseException (BaseException ):
737+ pass
738+
739+ orig = ExceptionGroup ("eg" , [TypeError (1 ), ValueError (2 )])
740+ try :
741+ try :
742+ raise orig
743+ except* (TypeError , ValueError ):
744+ raise MyBaseException (3 )
745+ except BaseException as e :
746+ exc = e
747+
748+ self .assertExceptionIsLike (exc , MyBaseException (3 ))
749+
750+ self .assertExceptionIsLike (
751+ exc .__context__ ,
752+ ExceptionGroup ("eg" , [TypeError (1 ), ValueError (2 )]))
753+
754+ self .assertMetadataNotEqual (orig , exc )
755+ self .assertMetadataEqual (orig , exc .__context__ )
756+
757+ def test_raise_handle_all_raise_base_exception_and_exception (self ):
758+ class MyBaseException (BaseException ):
759+ pass
760+
761+ orig = ExceptionGroup ("eg" , [TypeError (1 ), ValueError (2 )])
762+ try :
763+ try :
764+ raise orig
765+ except* TypeError :
766+ raise MyBaseException (3 )
767+ except* ValueError :
768+ raise SyntaxError (4 )
769+ except BaseException as e :
770+ exc = e
771+
772+ self .assertIs (type (exc ), BaseExceptionGroup )
773+ self .assertEqual (exc .message , "" )
774+ self .assertEqual (len (exc .exceptions ), 2 )
775+ self .assertExceptionIsLike (exc .exceptions [0 ], MyBaseException (3 ))
776+ self .assertExceptionIsLike (exc .exceptions [1 ], SyntaxError (4 ))
777+
778+ self .assertExceptionIsLike (
779+ exc .exceptions [0 ].__context__ ,
780+ ExceptionGroup ("eg" , [TypeError (1 )]))
781+
782+ self .assertExceptionIsLike (
783+ exc .exceptions [1 ].__context__ ,
784+ ExceptionGroup ("eg" , [ValueError (2 )]))
785+
786+ self .assertMetadataNotEqual (orig , exc )
787+ self .assertMetadataEqual (orig , exc .exceptions [0 ].__context__ )
788+ self .assertMetadataEqual (orig , exc .exceptions [1 ].__context__ )
789+
708790
709791class TestExceptStarRaiseFrom (ExceptStarTest ):
710792 def test_raise_named (self ):
0 commit comments