File tree Expand file tree Collapse file tree 1 file changed +74
-0
lines changed
Expand file tree Collapse file tree 1 file changed +74
-0
lines changed Original file line number Diff line number Diff line change @@ -490,6 +490,80 @@ def g2(): return 1
490490 x = g2 ()
491491 check_syntax_error (self , "class foo:return 1" )
492492
493+ def test_break_in_finally (self ):
494+ count = 0
495+ while count < 2 :
496+ count += 1
497+ try :
498+ pass
499+ finally :
500+ break
501+ self .assertEqual (count , 1 )
502+
503+ count = 0
504+ while count < 2 :
505+ count += 1
506+ try :
507+ continue
508+ finally :
509+ break
510+ self .assertEqual (count , 1 )
511+
512+ count = 0
513+ while count < 2 :
514+ count += 1
515+ try :
516+ 1 / 0
517+ finally :
518+ break
519+ self .assertEqual (count , 1 )
520+
521+ for count in [0 , 1 ]:
522+ self .assertEqual (count , 0 )
523+ try :
524+ pass
525+ finally :
526+ break
527+ self .assertEqual (count , 0 )
528+
529+ for count in [0 , 1 ]:
530+ self .assertEqual (count , 0 )
531+ try :
532+ continue
533+ finally :
534+ break
535+ self .assertEqual (count , 0 )
536+
537+ for count in [0 , 1 ]:
538+ self .assertEqual (count , 0 )
539+ try :
540+ 1 / 0
541+ finally :
542+ break
543+ self .assertEqual (count , 0 )
544+
545+ def test_return_in_finally (self ):
546+ def g1 ():
547+ try :
548+ pass
549+ finally :
550+ return 1
551+ self .assertEqual (g1 (), 1 )
552+
553+ def g2 ():
554+ try :
555+ return 2
556+ finally :
557+ return 3
558+ self .assertEqual (g2 (), 3 )
559+
560+ def g3 ():
561+ try :
562+ 1 / 0
563+ finally :
564+ return 4
565+ self .assertEqual (g3 (), 4 )
566+
493567 def testYield (self ):
494568 check_syntax_error (self , "class foo:yield 1" )
495569
You can’t perform that action at this time.
0 commit comments