(root)/
Python-3.12.0/
Lib/
test/
test_exception_variations.py
       1  
       2  import unittest
       3  
       4  class ESC[4;38;5;81mExceptTestCases(ESC[4;38;5;149munittestESC[4;38;5;149m.ESC[4;38;5;149mTestCase):
       5      def test_try_except_else_finally(self):
       6          hit_except = False
       7          hit_else = False
       8          hit_finally = False
       9  
      10          try:
      11              raise Exception('nyaa!')
      12          except:
      13              hit_except = True
      14          else:
      15              hit_else = True
      16          finally:
      17              hit_finally = True
      18  
      19          self.assertTrue(hit_except)
      20          self.assertTrue(hit_finally)
      21          self.assertFalse(hit_else)
      22  
      23      def test_try_except_else_finally_no_exception(self):
      24          hit_except = False
      25          hit_else = False
      26          hit_finally = False
      27  
      28          try:
      29              pass
      30          except:
      31              hit_except = True
      32          else:
      33              hit_else = True
      34          finally:
      35              hit_finally = True
      36  
      37          self.assertFalse(hit_except)
      38          self.assertTrue(hit_finally)
      39          self.assertTrue(hit_else)
      40  
      41      def test_try_except_finally(self):
      42          hit_except = False
      43          hit_finally = False
      44  
      45          try:
      46              raise Exception('yarr!')
      47          except:
      48              hit_except = True
      49          finally:
      50              hit_finally = True
      51  
      52          self.assertTrue(hit_except)
      53          self.assertTrue(hit_finally)
      54  
      55      def test_try_except_finally_no_exception(self):
      56          hit_except = False
      57          hit_finally = False
      58  
      59          try:
      60              pass
      61          except:
      62              hit_except = True
      63          finally:
      64              hit_finally = True
      65  
      66          self.assertFalse(hit_except)
      67          self.assertTrue(hit_finally)
      68  
      69      def test_try_except(self):
      70          hit_except = False
      71  
      72          try:
      73              raise Exception('ahoy!')
      74          except:
      75              hit_except = True
      76  
      77          self.assertTrue(hit_except)
      78  
      79      def test_try_except_no_exception(self):
      80          hit_except = False
      81  
      82          try:
      83              pass
      84          except:
      85              hit_except = True
      86  
      87          self.assertFalse(hit_except)
      88  
      89      def test_try_except_else(self):
      90          hit_except = False
      91          hit_else = False
      92  
      93          try:
      94              raise Exception('foo!')
      95          except:
      96              hit_except = True
      97          else:
      98              hit_else = True
      99  
     100          self.assertFalse(hit_else)
     101          self.assertTrue(hit_except)
     102  
     103      def test_try_except_else_no_exception(self):
     104          hit_except = False
     105          hit_else = False
     106  
     107          try:
     108              pass
     109          except:
     110              hit_except = True
     111          else:
     112              hit_else = True
     113  
     114          self.assertFalse(hit_except)
     115          self.assertTrue(hit_else)
     116  
     117      def test_try_finally_no_exception(self):
     118          hit_finally = False
     119  
     120          try:
     121              pass
     122          finally:
     123              hit_finally = True
     124  
     125          self.assertTrue(hit_finally)
     126  
     127      def test_nested(self):
     128          hit_finally = False
     129          hit_inner_except = False
     130          hit_inner_finally = False
     131  
     132          try:
     133              try:
     134                  raise Exception('inner exception')
     135              except:
     136                  hit_inner_except = True
     137              finally:
     138                  hit_inner_finally = True
     139          finally:
     140              hit_finally = True
     141  
     142          self.assertTrue(hit_inner_except)
     143          self.assertTrue(hit_inner_finally)
     144          self.assertTrue(hit_finally)
     145  
     146      def test_nested_else(self):
     147          hit_else = False
     148          hit_finally = False
     149          hit_except = False
     150          hit_inner_except = False
     151          hit_inner_else = False
     152  
     153          try:
     154              try:
     155                  pass
     156              except:
     157                  hit_inner_except = True
     158              else:
     159                  hit_inner_else = True
     160  
     161              raise Exception('outer exception')
     162          except:
     163              hit_except = True
     164          else:
     165              hit_else = True
     166          finally:
     167              hit_finally = True
     168  
     169          self.assertFalse(hit_inner_except)
     170          self.assertTrue(hit_inner_else)
     171          self.assertFalse(hit_else)
     172          self.assertTrue(hit_finally)
     173          self.assertTrue(hit_except)
     174  
     175      def test_nested_exception_in_except(self):
     176          hit_else = False
     177          hit_finally = False
     178          hit_except = False
     179          hit_inner_except = False
     180          hit_inner_else = False
     181  
     182          try:
     183              try:
     184                  raise Exception('inner exception')
     185              except:
     186                  hit_inner_except = True
     187                  raise Exception('outer exception')
     188              else:
     189                  hit_inner_else = True
     190          except:
     191              hit_except = True
     192          else:
     193              hit_else = True
     194          finally:
     195              hit_finally = True
     196  
     197          self.assertTrue(hit_inner_except)
     198          self.assertFalse(hit_inner_else)
     199          self.assertFalse(hit_else)
     200          self.assertTrue(hit_finally)
     201          self.assertTrue(hit_except)
     202  
     203      def test_nested_exception_in_else(self):
     204          hit_else = False
     205          hit_finally = False
     206          hit_except = False
     207          hit_inner_except = False
     208          hit_inner_else = False
     209  
     210          try:
     211              try:
     212                  pass
     213              except:
     214                  hit_inner_except = True
     215              else:
     216                  hit_inner_else = True
     217                  raise Exception('outer exception')
     218          except:
     219              hit_except = True
     220          else:
     221              hit_else = True
     222          finally:
     223              hit_finally = True
     224  
     225          self.assertFalse(hit_inner_except)
     226          self.assertTrue(hit_inner_else)
     227          self.assertFalse(hit_else)
     228          self.assertTrue(hit_finally)
     229          self.assertTrue(hit_except)
     230  
     231      def test_nested_exception_in_finally_no_exception(self):
     232          hit_else = False
     233          hit_finally = False
     234          hit_except = False
     235          hit_inner_except = False
     236          hit_inner_else = False
     237          hit_inner_finally = False
     238  
     239          try:
     240              try:
     241                  pass
     242              except:
     243                  hit_inner_except = True
     244              else:
     245                  hit_inner_else = True
     246              finally:
     247                  hit_inner_finally = True
     248                  raise Exception('outer exception')
     249          except:
     250              hit_except = True
     251          else:
     252              hit_else = True
     253          finally:
     254              hit_finally = True
     255  
     256          self.assertFalse(hit_inner_except)
     257          self.assertTrue(hit_inner_else)
     258          self.assertTrue(hit_inner_finally)
     259          self.assertFalse(hit_else)
     260          self.assertTrue(hit_finally)
     261          self.assertTrue(hit_except)
     262  
     263      def test_nested_exception_in_finally_with_exception(self):
     264          hit_else = False
     265          hit_finally = False
     266          hit_except = False
     267          hit_inner_except = False
     268          hit_inner_else = False
     269          hit_inner_finally = False
     270  
     271          try:
     272              try:
     273                  raise Exception('inner exception')
     274              except:
     275                  hit_inner_except = True
     276              else:
     277                  hit_inner_else = True
     278              finally:
     279                  hit_inner_finally = True
     280                  raise Exception('outer exception')
     281          except:
     282              hit_except = True
     283          else:
     284              hit_else = True
     285          finally:
     286              hit_finally = True
     287  
     288  
     289          self.assertTrue(hit_inner_except)
     290          self.assertFalse(hit_inner_else)
     291          self.assertTrue(hit_inner_finally)
     292          self.assertFalse(hit_else)
     293          self.assertTrue(hit_finally)
     294          self.assertTrue(hit_except)
     295  
     296  
     297  class ESC[4;38;5;81mExceptStarTestCases(ESC[4;38;5;149munittestESC[4;38;5;149m.ESC[4;38;5;149mTestCase):
     298      def test_try_except_else_finally(self):
     299          hit_except = False
     300          hit_else = False
     301          hit_finally = False
     302  
     303          try:
     304              raise Exception('nyaa!')
     305          except* BaseException:
     306              hit_except = True
     307          else:
     308              hit_else = True
     309          finally:
     310              hit_finally = True
     311  
     312          self.assertTrue(hit_except)
     313          self.assertTrue(hit_finally)
     314          self.assertFalse(hit_else)
     315  
     316      def test_try_except_else_finally_no_exception(self):
     317          hit_except = False
     318          hit_else = False
     319          hit_finally = False
     320  
     321          try:
     322              pass
     323          except* BaseException:
     324              hit_except = True
     325          else:
     326              hit_else = True
     327          finally:
     328              hit_finally = True
     329  
     330          self.assertFalse(hit_except)
     331          self.assertTrue(hit_finally)
     332          self.assertTrue(hit_else)
     333  
     334      def test_try_except_finally(self):
     335          hit_except = False
     336          hit_finally = False
     337  
     338          try:
     339              raise Exception('yarr!')
     340          except* BaseException:
     341              hit_except = True
     342          finally:
     343              hit_finally = True
     344  
     345          self.assertTrue(hit_except)
     346          self.assertTrue(hit_finally)
     347  
     348      def test_try_except_finally_no_exception(self):
     349          hit_except = False
     350          hit_finally = False
     351  
     352          try:
     353              pass
     354          except* BaseException:
     355              hit_except = True
     356          finally:
     357              hit_finally = True
     358  
     359          self.assertFalse(hit_except)
     360          self.assertTrue(hit_finally)
     361  
     362      def test_try_except(self):
     363          hit_except = False
     364  
     365          try:
     366              raise Exception('ahoy!')
     367          except* BaseException:
     368              hit_except = True
     369  
     370          self.assertTrue(hit_except)
     371  
     372      def test_try_except_no_exception(self):
     373          hit_except = False
     374  
     375          try:
     376              pass
     377          except* BaseException:
     378              hit_except = True
     379  
     380          self.assertFalse(hit_except)
     381  
     382      def test_try_except_else(self):
     383          hit_except = False
     384          hit_else = False
     385  
     386          try:
     387              raise Exception('foo!')
     388          except* BaseException:
     389              hit_except = True
     390          else:
     391              hit_else = True
     392  
     393          self.assertFalse(hit_else)
     394          self.assertTrue(hit_except)
     395  
     396      def test_try_except_else_no_exception(self):
     397          hit_except = False
     398          hit_else = False
     399  
     400          try:
     401              pass
     402          except* BaseException:
     403              hit_except = True
     404          else:
     405              hit_else = True
     406  
     407          self.assertFalse(hit_except)
     408          self.assertTrue(hit_else)
     409  
     410      def test_try_finally_no_exception(self):
     411          hit_finally = False
     412  
     413          try:
     414              pass
     415          finally:
     416              hit_finally = True
     417  
     418          self.assertTrue(hit_finally)
     419  
     420      def test_nested(self):
     421          hit_finally = False
     422          hit_inner_except = False
     423          hit_inner_finally = False
     424  
     425          try:
     426              try:
     427                  raise Exception('inner exception')
     428              except* BaseException:
     429                  hit_inner_except = True
     430              finally:
     431                  hit_inner_finally = True
     432          finally:
     433              hit_finally = True
     434  
     435          self.assertTrue(hit_inner_except)
     436          self.assertTrue(hit_inner_finally)
     437          self.assertTrue(hit_finally)
     438  
     439      def test_nested_else(self):
     440          hit_else = False
     441          hit_finally = False
     442          hit_except = False
     443          hit_inner_except = False
     444          hit_inner_else = False
     445  
     446          try:
     447              try:
     448                  pass
     449              except* BaseException:
     450                  hit_inner_except = True
     451              else:
     452                  hit_inner_else = True
     453  
     454              raise Exception('outer exception')
     455          except* BaseException:
     456              hit_except = True
     457          else:
     458              hit_else = True
     459          finally:
     460              hit_finally = True
     461  
     462          self.assertFalse(hit_inner_except)
     463          self.assertTrue(hit_inner_else)
     464          self.assertFalse(hit_else)
     465          self.assertTrue(hit_finally)
     466          self.assertTrue(hit_except)
     467  
     468      def test_nested_mixed1(self):
     469          hit_except = False
     470          hit_finally = False
     471          hit_inner_except = False
     472          hit_inner_finally = False
     473  
     474          try:
     475              try:
     476                  raise Exception('inner exception')
     477              except* BaseException:
     478                  hit_inner_except = True
     479              finally:
     480                  hit_inner_finally = True
     481          except:
     482              hit_except = True
     483          finally:
     484              hit_finally = True
     485  
     486          self.assertTrue(hit_inner_except)
     487          self.assertTrue(hit_inner_finally)
     488          self.assertFalse(hit_except)
     489          self.assertTrue(hit_finally)
     490  
     491      def test_nested_mixed2(self):
     492          hit_except = False
     493          hit_finally = False
     494          hit_inner_except = False
     495          hit_inner_finally = False
     496  
     497          try:
     498              try:
     499                  raise Exception('inner exception')
     500              except:
     501                  hit_inner_except = True
     502              finally:
     503                  hit_inner_finally = True
     504          except* BaseException:
     505              hit_except = True
     506          finally:
     507              hit_finally = True
     508  
     509          self.assertTrue(hit_inner_except)
     510          self.assertTrue(hit_inner_finally)
     511          self.assertFalse(hit_except)
     512          self.assertTrue(hit_finally)
     513  
     514  
     515      def test_nested_else_mixed1(self):
     516          hit_else = False
     517          hit_finally = False
     518          hit_except = False
     519          hit_inner_except = False
     520          hit_inner_else = False
     521  
     522          try:
     523              try:
     524                  pass
     525              except* BaseException:
     526                  hit_inner_except = True
     527              else:
     528                  hit_inner_else = True
     529  
     530              raise Exception('outer exception')
     531          except:
     532              hit_except = True
     533          else:
     534              hit_else = True
     535          finally:
     536              hit_finally = True
     537  
     538          self.assertFalse(hit_inner_except)
     539          self.assertTrue(hit_inner_else)
     540          self.assertFalse(hit_else)
     541          self.assertTrue(hit_finally)
     542          self.assertTrue(hit_except)
     543  
     544      def test_nested_else_mixed2(self):
     545          hit_else = False
     546          hit_finally = False
     547          hit_except = False
     548          hit_inner_except = False
     549          hit_inner_else = False
     550  
     551          try:
     552              try:
     553                  pass
     554              except:
     555                  hit_inner_except = True
     556              else:
     557                  hit_inner_else = True
     558  
     559              raise Exception('outer exception')
     560          except* BaseException:
     561              hit_except = True
     562          else:
     563              hit_else = True
     564          finally:
     565              hit_finally = True
     566  
     567          self.assertFalse(hit_inner_except)
     568          self.assertTrue(hit_inner_else)
     569          self.assertFalse(hit_else)
     570          self.assertTrue(hit_finally)
     571          self.assertTrue(hit_except)
     572  
     573  
     574  if __name__ == '__main__':
     575      unittest.main()