diff options
author | Stéphane Klein <stephaneklein221@gmail.com> | 2020-05-15 15:49:11 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-15 09:49:11 -0400 |
commit | 62a7fcbdc40479b7fdae98eeaedab1efc7b95d4a (patch) | |
tree | c6b771544d54cc582b3e2c6fbd5dca872d0fd551 /std/testing/asserts.ts | |
parent | 06f3268f3af12bdd217092185b1967ebf6b14632 (diff) |
fix(std/testing): Provide message and diff for assertStrictEq (#5417)
closes #5416
Diffstat (limited to 'std/testing/asserts.ts')
-rw-r--r-- | std/testing/asserts.ts | 52 |
1 files changed, 35 insertions, 17 deletions
diff --git a/std/testing/asserts.ts b/std/testing/asserts.ts index 6dd3af226..d3f8bb678 100644 --- a/std/testing/asserts.ts +++ b/std/testing/asserts.ts @@ -156,7 +156,8 @@ export function assertEquals( actualString.split("\n"), expectedString.split("\n") ); - message = buildMessage(diffResult).join("\n"); + const diffMsg = buildMessage(diffResult).join("\n"); + message = `Values are not equal:\n${diffMsg}`; } catch (e) { message = `\n${red(CAN_NOT_DISPLAY)} + \n\n`; } @@ -205,24 +206,41 @@ export function assertStrictEq( expected: unknown, msg?: string ): void { - if (actual !== expected) { - let actualString: string; - let expectedString: string; - try { - actualString = String(actual); - } catch (e) { - actualString = "[Cannot display]"; - } - try { - expectedString = String(expected); - } catch (e) { - expectedString = "[Cannot display]"; - } - if (!msg) { - msg = `actual: ${actualString} expected: ${expectedString}`; + if (actual === expected) { + return; + } + + let message: string; + + if (msg) { + message = msg; + } else { + const actualString = format(actual); + const expectedString = format(expected); + + if (actualString === expectedString) { + const withOffset = actualString + .split("\n") + .map((l) => ` ${l}`) + .join("\n"); + message = `Values have the same structure but are not reference-equal:\n\n${red( + withOffset + )}\n`; + } else { + try { + const diffResult = diff( + actualString.split("\n"), + expectedString.split("\n") + ); + const diffMsg = buildMessage(diffResult).join("\n"); + message = `Values are not strictly equal:\n${diffMsg}`; + } catch (e) { + message = `\n${red(CAN_NOT_DISPLAY)} + \n\n`; + } } - throw new AssertionError(msg); } + + throw new AssertionError(message); } /** |