mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-13 06:43:52 +00:00
fix bug in doAssertRaises when exception==Exception (#10172)
* fix bug in doAssertRaises when exception==Exception * add testcase for doAssertRaises
This commit is contained in:
committed by
Andreas Rumpf
parent
5101b6befd
commit
319b46230c
@@ -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))
|
||||
|
||||
|
||||
@@ -112,6 +112,18 @@ doAssertRaises(IndexError):
|
||||
foo(toOpenArray(arrNeg, -1, 0))
|
||||
doAssertRaises(IndexError):
|
||||
foo(toOpenArray(arrNeg, -1, -3))
|
||||
doAssertRaises(Exception):
|
||||
raise newException(Exception, "foo")
|
||||
|
||||
block:
|
||||
var didThrow = false
|
||||
try:
|
||||
doAssertRaises(IndexError): # should fail since it's wrong exception
|
||||
raise newException(FieldError, "foo")
|
||||
except AssertionError:
|
||||
# ok, throwing was correct behavior
|
||||
didThrow = true
|
||||
doAssert didThrow
|
||||
|
||||
type seqqType = ptr UncheckedArray[int]
|
||||
let qData = cast[seqqType](addr seqq[0])
|
||||
|
||||
Reference in New Issue
Block a user