summaryrefslogtreecommitdiff
path: root/std/testing/asserts.ts
diff options
context:
space:
mode:
authorStéphane Klein <stephaneklein221@gmail.com>2020-05-15 15:49:11 +0200
committerGitHub <noreply@github.com>2020-05-15 09:49:11 -0400
commit62a7fcbdc40479b7fdae98eeaedab1efc7b95d4a (patch)
treec6b771544d54cc582b3e2c6fbd5dca872d0fd551 /std/testing/asserts.ts
parent06f3268f3af12bdd217092185b1967ebf6b14632 (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.ts52
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);
}
/**