diff options
author | Timothee Cour <timothee.cour2@gmail.com> | 2021-05-08 08:13:47 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-08 17:13:47 +0200 |
commit | 4e0f38fbb12c8b7faf56bb71846f0b4178ed6470 (patch) | |
tree | 8169dff0f9c84a5b2b12494af3971e2d08f5e968 /testament/lib | |
parent | eba1c3fd24ba7b76af4ef75e5003fd344ea7c6ca (diff) | |
download | Nim-4e0f38fbb12c8b7faf56bb71846f0b4178ed6470.tar.gz |
testament :show duration also for failed tests; improve `tshould_not_work`; mitigate #17946 tchannels timeouts (#17947)
* refs #17946; refactor testament test summary, show test duration for failures; increase timeout tchannels * revert workarounds from https://github.com/nim-lang/Nim/pull/16698 and add allowPrefixMatch optional param to greedyOrderedSubsetLines * add test * workaround for yet another testament bug
Diffstat (limited to 'testament/lib')
-rw-r--r-- | testament/lib/stdtest/testutils.nim | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/testament/lib/stdtest/testutils.nim b/testament/lib/stdtest/testutils.nim index 241ab1770..6d8620dc7 100644 --- a/testament/lib/stdtest/testutils.nim +++ b/testament/lib/stdtest/testutils.nim @@ -29,11 +29,17 @@ template flakyAssert*(cond: untyped, msg = "", notifySuccess = true) = when not defined(js): import std/strutils - proc greedyOrderedSubsetLines*(lhs, rhs: string): bool = + proc greedyOrderedSubsetLines*(lhs, rhs: string, allowPrefixMatch = false): bool = ## Returns true if each stripped line in `lhs` appears in rhs, using a greedy matching. + # xxx improve error reporting by showing the last matched pair iterator splitLinesClosure(): string {.closure.} = for line in splitLines(rhs.strip): yield line + template isMatch(lhsi, rhsi): bool = + if allowPrefixMatch: + startsWith(rhsi, lhsi): + else: + lhsi == rhsi var rhsIter = splitLinesClosure var currentLine = strip(rhsIter()) @@ -41,7 +47,7 @@ when not defined(js): for line in lhs.strip.splitLines: let line = line.strip if line.len != 0: - while line != currentLine: + while not isMatch(line, currentLine): currentLine = strip(rhsIter()) if rhsIter.finished: return false |