1# mode: run 2# tag: nogil, withgil, exceptions 3 4cdef void foo_nogil(int i) nogil except *: 5 if i != 0: raise ValueError("huhu !") 6 7 8cdef void foo(int i) except * with gil: 9 if i != 0: raise ValueError 10 11 12cdef int bar(int i) except? -1 with gil: 13 if i != 0: raise ValueError 14 return 0 15 16 17cdef int spam(int i) except? -1 with gil: 18 if i != 0: raise TypeError 19 return -1 20 21 22def test_foo_nogil(): 23 """ 24 >>> test_foo_nogil() 25 """ 26 # 27 foo_nogil(0) 28 foo_nogil(0) 29 with nogil: 30 foo_nogil(0) 31 foo_nogil(0) 32 # 33 try: 34 with nogil: 35 foo_nogil(0) 36 finally: 37 pass 38 # 39 try: 40 with nogil: 41 foo_nogil(0) 42 with nogil: 43 foo_nogil(0) 44 finally: 45 pass 46 # 47 try: 48 with nogil: 49 foo_nogil(0) 50 with nogil: 51 foo_nogil(1) 52 except: 53 with nogil: 54 foo_nogil(0) 55 finally: 56 with nogil: 57 foo_nogil(0) 58 pass 59 # 60 try: 61 with nogil: 62 foo_nogil(0) 63 foo_nogil(0) 64 finally: 65 pass 66 # 67 try: 68 with nogil: 69 foo_nogil(0) 70 foo_nogil(1) 71 except: 72 with nogil: 73 foo_nogil(0) 74 finally: 75 with nogil: 76 foo_nogil(0) 77 pass 78 # 79 try: 80 with nogil: 81 foo_nogil(0) 82 try: 83 with nogil: 84 foo_nogil(1) 85 except: 86 with nogil: 87 foo_nogil(1) 88 finally: 89 with nogil: 90 foo_nogil(0) 91 pass 92 except: 93 with nogil: 94 foo_nogil(0) 95 finally: 96 with nogil: 97 foo_nogil(0) 98 pass 99 # 100 try: 101 with nogil: 102 foo_nogil(0) 103 try: 104 with nogil: 105 foo_nogil(1) 106 except: 107 with nogil: 108 foo_nogil(1) 109 finally: 110 with nogil: 111 foo_nogil(1) 112 pass 113 except: 114 with nogil: 115 foo_nogil(0) 116 finally: 117 with nogil: 118 foo_nogil(0) 119 pass 120 # 121 122 123def test_foo(): 124 """ 125 >>> test_foo() 126 """ 127 # 128 foo(0) 129 foo(0) 130 with nogil: 131 foo(0) 132 foo(0) 133 # 134 try: 135 with nogil: 136 foo(0) 137 finally: 138 pass 139 # 140 try: 141 with nogil: 142 foo(0) 143 with nogil: 144 foo(0) 145 finally: 146 pass 147 # 148 try: 149 with nogil: 150 foo(0) 151 with nogil: 152 foo(1) 153 except: 154 with nogil: 155 foo(0) 156 finally: 157 with nogil: 158 foo(0) 159 pass 160 # 161 try: 162 with nogil: 163 foo(0) 164 foo(0) 165 finally: 166 pass 167 # 168 try: 169 with nogil: 170 foo(0) 171 foo(1) 172 except: 173 with nogil: 174 foo(0) 175 finally: 176 with nogil: 177 foo(0) 178 pass 179 # 180 try: 181 with nogil: 182 foo(0) 183 try: 184 with nogil: 185 foo(1) 186 except: 187 with nogil: 188 foo(1) 189 finally: 190 with nogil: 191 foo(0) 192 pass 193 except: 194 with nogil: 195 foo(0) 196 finally: 197 with nogil: 198 foo(0) 199 pass 200 # 201 try: 202 with nogil: 203 foo(0) 204 try: 205 with nogil: 206 foo(1) 207 except: 208 with nogil: 209 foo(1) 210 finally: 211 with nogil: 212 foo(1) 213 pass 214 except: 215 with nogil: 216 foo(0) 217 finally: 218 with nogil: 219 foo(0) 220 pass 221 # 222 223 224def test_bar(): 225 """ 226 >>> test_bar() 227 """ 228 # 229 bar(0) 230 bar(0) 231 with nogil: 232 bar(0) 233 bar(0) 234 # 235 try: 236 with nogil: 237 bar(0) 238 finally: 239 pass 240 # 241 try: 242 with nogil: 243 bar(0) 244 with nogil: 245 bar(0) 246 finally: 247 pass 248 # 249 try: 250 with nogil: 251 bar(0) 252 with nogil: 253 bar(1) 254 except ValueError: 255 with nogil: 256 bar(0) 257 finally: 258 with nogil: 259 bar(0) 260 pass 261 # 262 try: 263 with nogil: 264 bar(0) 265 bar(0) 266 finally: 267 pass 268 # 269 try: 270 with nogil: 271 bar(0) 272 bar(1) 273 except ValueError: 274 with nogil: 275 bar(0) 276 finally: 277 with nogil: 278 bar(0) 279 pass 280 # 281 try: 282 with nogil: 283 bar(0) 284 try: 285 with nogil: 286 bar(1) 287 except ValueError: 288 with nogil: 289 bar(1) 290 finally: 291 with nogil: 292 bar(0) 293 pass 294 except ValueError: 295 with nogil: 296 bar(0) 297 finally: 298 with nogil: 299 bar(0) 300 pass 301 # 302 try: 303 with nogil: 304 bar(0) 305 try: 306 with nogil: 307 bar(1) 308 except ValueError: 309 with nogil: 310 bar(1) 311 finally: 312 with nogil: 313 bar(1) 314 pass 315 except ValueError: 316 with nogil: 317 bar(0) 318 finally: 319 with nogil: 320 bar(0) 321 pass 322 # 323 324def test_spam(): 325 """ 326 >>> test_spam() 327 """ 328 # 329 spam(0) 330 spam(0) 331 with nogil: 332 spam(0) 333 spam(0) 334 # 335 try: 336 with nogil: 337 spam(0) 338 finally: 339 pass 340 # 341 try: 342 with nogil: 343 spam(0) 344 with nogil: 345 spam(0) 346 finally: 347 pass 348 # 349 try: 350 with nogil: 351 spam(0) 352 with nogil: 353 spam(1) 354 except TypeError: 355 with nogil: 356 spam(0) 357 finally: 358 with nogil: 359 spam(0) 360 pass 361 # 362 try: 363 with nogil: 364 spam(0) 365 spam(0) 366 finally: 367 pass 368 # 369 try: 370 with nogil: 371 spam(0) 372 spam(1) 373 except TypeError: 374 with nogil: 375 spam(0) 376 finally: 377 with nogil: 378 spam(0) 379 pass 380 # 381 try: 382 with nogil: 383 spam(0) 384 try: 385 with nogil: 386 spam(1) 387 except TypeError: 388 with nogil: 389 spam(1) 390 finally: 391 with nogil: 392 spam(0) 393 pass 394 except TypeError: 395 with nogil: 396 spam(0) 397 finally: 398 with nogil: 399 spam(0) 400 pass 401 # 402 try: 403 with nogil: 404 spam(0) 405 try: 406 with nogil: 407 spam(1) 408 except TypeError: 409 with nogil: 410 spam(1) 411 finally: 412 with nogil: 413 spam(1) 414 pass 415 except TypeError: 416 with nogil: 417 spam(0) 418 finally: 419 with nogil: 420 spam(0) 421 pass 422 # 423