diff options
author | Timothee Cour <timothee.cour2@gmail.com> | 2020-05-19 00:41:31 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-19 09:41:31 +0200 |
commit | e909486e5cde5a4a77cd6f21b42fc9ab38ec2ae6 (patch) | |
tree | 7367a3774091f156d91e46cd4c292441ab3da46e /testament/lib | |
parent | 27741d6a5c9ec87a6938b2928ae54b22bc93d9be (diff) | |
download | Nim-e909486e5cde5a4a77cd6f21b42fc9ab38ec2ae6.tar.gz |
trunner was not actually being tested in non-CTFFI mode; minor testament cleanups (#14377)
* use check * trunner now works with cpp * cleanup: move compiler/unittest_light => stdtest/unittest_light * fix tests/readme.md * remove deadcode references to rodfiles * fix for windows
Diffstat (limited to 'testament/lib')
-rw-r--r-- | testament/lib/stdtest/unittest_light.nim | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/testament/lib/stdtest/unittest_light.nim b/testament/lib/stdtest/unittest_light.nim new file mode 100644 index 000000000..d9842b399 --- /dev/null +++ b/testament/lib/stdtest/unittest_light.nim @@ -0,0 +1,38 @@ +# note: consider merging tests/assert/testhelper.nim here. + +proc mismatch*[T](lhs: T, rhs: T): string = + ## Simplified version of `unittest.require` that satisfies a common use case, + ## while avoiding pulling too many dependencies. On failure, diagnostic + ## information is provided that in particular makes it easy to spot + ## whitespace mismatches and where the mismatch is. + proc replaceInvisible(s: string): string = + for a in s: + case a + of '\n': result.add "\\n\n" + else: result.add a + + proc quoted(s: string): string = result.addQuoted s + + result.add "\n" + result.add "lhs:{" & replaceInvisible( + $lhs) & "}\nrhs:{" & replaceInvisible($rhs) & "}\n" + when compiles(lhs.len): + if lhs.len != rhs.len: + result.add "lhs.len: " & $lhs.len & " rhs.len: " & $rhs.len & "\n" + when compiles(lhs[0]): + var i = 0 + while i < lhs.len and i < rhs.len: + if lhs[i] != rhs[i]: break + i.inc + result.add "first mismatch index: " & $i & "\n" + if i < lhs.len and i < rhs.len: + result.add "lhs[i]: {" & quoted($lhs[i]) & "}\nrhs[i]: {" & quoted( + $rhs[i]) & "}\n" + result.add "lhs[0..<i]:{" & replaceInvisible($lhs[ + 0..<i]) & "}" + +proc assertEquals*[T](lhs: T, rhs: T) = + when false: # can be useful for debugging to see all that's fed to this. + echo "----" & $lhs + if lhs!=rhs: + doAssert false, mismatch(lhs, rhs) |