/pypy/translator/oosupport/test_template/exception.py

https://github.com/woodrow/pyoac · Python · 51 lines · 45 code · 6 blank · 0 comment · 10 complexity · e00b7a9886beaa11864e5d7062c92f14 MD5 · raw file

  1. import py
  2. from pypy.rpython.test.test_exception \
  3. import BaseTestException as RBaseTestException
  4. class BaseTestException(RBaseTestException):
  5. def test_nested_try(self):
  6. def helper(x):
  7. if x == 0:
  8. raise ValueError
  9. def dummy():
  10. pass
  11. def fn(x):
  12. try:
  13. try:
  14. helper(x)
  15. finally:
  16. dummy()
  17. except ValueError, e:
  18. raise
  19. self.interpret_raises(ValueError, fn, [0])
  20. def test_exception_not_last(self):
  21. def helper(x):
  22. if x == 0:
  23. raise ValueError
  24. def fn(x):
  25. helper(x)
  26. try:
  27. helper(1)
  28. finally:
  29. return -1
  30. return x
  31. self.interpret_raises(ValueError, fn, [0])
  32. def test_missing_return_block(self):
  33. class Base:
  34. def foo(self):
  35. raise ValueError
  36. class Derived(Base):
  37. def foo(self):
  38. return 42
  39. def fn(x):
  40. if x:
  41. obj = Base()
  42. else:
  43. obj = Derived()
  44. return obj.foo()
  45. assert self.interpret(fn, [0]) == 42