fix bug in doAssertRaises when exception==Exception (#10172)

* fix bug in doAssertRaises when exception==Exception
* add testcase for doAssertRaises
This commit is contained in:
Timothee Cour 2019-01-04 04:54:02 -08:00 • committed by Andreas Rumpf
commit 319b46230c
2 changed files with 31 additions and 11 deletions

View file

@ -4353,7 +4353,7 @@ else:
template runnableExamples*(body: untyped) =
discard
template doAssertRaises*(exception, code: untyped): typed =
template doAssertRaises*(exception: typedesc, code: untyped): typed =
## Raises ``AssertionError`` if specified ``code`` does not raise the
## specified exception. Example:
##
@ -4361,16 +4361,24 @@ template doAssertRaises*(exception, code: untyped): typed =
## doAssertRaises(ValueError):
## raise newException(ValueError, "Hello World")
var wrong = false
try:
if true:
code
wrong = true
except exception:
discard
except Exception as exc:
raiseAssert(astToStr(exception) &
" wasn't raised, another error was raised instead by:\n"&
astToStr(code))
when Exception is exception:
try:
if true:
code
wrong = true
except Exception:
discard
else:
try:
if true:
code
wrong = true
except exception:
discard
except Exception as exc:
raiseAssert(astToStr(exception) &
" wasn't raised, another error was raised instead by:\n"&
astToStr(code))
if wrong:
raiseAssert(astToStr(exception) & " wasn't raised by:\n" & astToStr(code))