summaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
authorKitson Kelly <me@kitsonkelly.com>2018-12-21 22:03:27 +1100
committerRyan Dahl <ry@tinyclouds.org>2018-12-21 06:03:27 -0500
commit317fddbbf8615b8cb4dc3c0ea7d81c0c80a8e3ee (patch)
tree62f41c7cdd3fe9d36e6cc43739133c18f3690fbe /js
parente4be1209b6216ad12729981947c0725b5ccc55a5 (diff)
Improve handling of non-coercable objects in assertEqual (#1385)
Diffstat (limited to 'js')
-rw-r--r--js/testing/util.ts26
-rw-r--r--js/testing/util_test.ts34
2 files changed, 51 insertions, 9 deletions
diff --git a/js/testing/util.ts b/js/testing/util.ts
index 1e245fb71..096b184b8 100644
--- a/js/testing/util.ts
+++ b/js/testing/util.ts
@@ -13,19 +13,29 @@
limitations under the License.
*/
-// TODO(ry) Use unknown here for parameters types.
-// tslint:disable-next-line:no-any
-export function assertEqual(actual: any, expected: any, msg?: string) {
- if (!msg) {
- msg = `actual: ${actual} expected: ${expected}`;
- }
+export function assertEqual(actual: unknown, expected: unknown, msg?: string) {
if (!equal(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]";
+ }
console.error(
"assertEqual failed. actual =",
- actual,
+ actualString,
"expected =",
- expected
+ expectedString
);
+ if (!msg) {
+ msg = `actual: ${actualString} expected: ${expectedString}`;
+ }
throw new Error(msg);
}
}
diff --git a/js/testing/util_test.ts b/js/testing/util_test.ts
index 9ac3dfd71..25f0b2c45 100644
--- a/js/testing/util_test.ts
+++ b/js/testing/util_test.ts
@@ -17,7 +17,7 @@ import { test } from "./testing.ts";
import { assert } from "./util.ts";
import * as util from "./util.ts";
-test(async function util_equal() {
+test(function util_equal() {
assert(util.equal("world", "world"));
assert(!util.equal("hello", "world"));
assert(util.equal(5, 5));
@@ -38,3 +38,35 @@ test(async function util_equal() {
)
);
});
+
+test(function util_assertEqual() {
+ const a = Object.create(null);
+ a.b = "foo";
+ util.assertEqual(a, a);
+});
+
+test(function util_assertEqualActualUncoercable() {
+ let didThrow = false;
+ const a = Object.create(null);
+ try {
+ util.assertEqual(a, "bar");
+ } catch (e) {
+ didThrow = true;
+ console.log(e.message);
+ assert(e.message === "actual: [Cannot display] expected: bar");
+ }
+ assert(didThrow);
+});
+
+test(function util_assertEqualExpectedUncoercable() {
+ let didThrow = false;
+ const a = Object.create(null);
+ try {
+ util.assertEqual("bar", a);
+ } catch (e) {
+ didThrow = true;
+ console.log(e.message);
+ assert(e.message === "actual: bar expected: [Cannot display]");
+ }
+ assert(didThrow);
+});