Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix std/node/assert misnamed exports, close #7102 #7123

Merged
merged 9 commits into from
Aug 20, 2020
13 changes: 10 additions & 3 deletions std/node/assert.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,21 @@ import {
assertEquals,
assertNotEquals,
assertStrictEquals,
assertNotStrictEquals,
assertMatch,
assertThrows,
} from "../testing/asserts.ts";

export { assert, fail } from "../testing/asserts.ts";
export {
assert as default,
assert as ok,
assert,
fail,
} from "../testing/asserts.ts";

export const equal = assertEquals;
export const notEqual = assertNotEquals;
export const deepStrictEqual = assertEquals;
export const notDeepStrictEqual = assertNotEquals;
export const strictEqual = assertStrictEquals;
export const notStrictEqual = assertNotStrictEquals;
export const match = assertMatch;
export const throws = assertThrows;
65 changes: 65 additions & 0 deletions std/node/assert_test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
import {
assert as denoAssert,
assertEquals,
assertNotEquals,
assertStrictEquals,
assertNotStrictEquals,
assertMatch,
assertThrows,
fail as denoFail,
} from "../testing/asserts.ts";

import assert from "./assert.ts";

import {
ok,
assert as assert_,
deepStrictEqual,
notDeepStrictEqual,
strictEqual,
notStrictEqual,
match,
throws,
fail,
} from "./assert.ts";

Deno.test("API should be exposed", () => {
assertStrictEquals(
assert_,
assert,
"`assert()` should be the default export",
);
assertStrictEquals(assert_, denoAssert, "`assert()` should be exposed");
assertStrictEquals(assert_, ok, "`assert()` should be an alias of `ok()`");
assertStrictEquals(
assertEquals,
deepStrictEqual,
"`assertEquals()` should be exposed as `deepStrictEqual()`",
);
assertStrictEquals(
assertNotEquals,
notDeepStrictEqual,
"`assertNotEquals()` should be exposed as `notDeepStrictEqual()`",
);
assertStrictEquals(
assertStrictEquals,
strictEqual,
"`assertStrictEquals()` should be exposed as `strictEqual()`",
);
assertStrictEquals(
assertNotStrictEquals,
notStrictEqual,
"`assertNotStrictEquals()` should be exposed as `notStrictEqual()`",
);
assertStrictEquals(
assertMatch,
match,
"`assertMatch()` should be exposed as `match()`",
);
assertStrictEquals(
assertThrows,
throws,
"`assertThrows()` should be exposed as `throws()`",
);
assertStrictEquals(fail, denoFail, "`fail()` should be exposed");
});
41 changes: 41 additions & 0 deletions std/testing/asserts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -242,10 +242,20 @@ export function assertNotEquals(
* assertStrictEquals(1, 2)
* ```
*/
export function assertStrictEquals(
actual: unknown,
expected: unknown,
msg?: string,
): void;
export function assertStrictEquals<T>(
actual: T,
expected: T,
msg?: string,
): void;
export function assertStrictEquals(
actual: unknown,
expected: unknown,
msg?: string,
): void {
if (actual === expected) {
return;
Expand Down Expand Up @@ -285,6 +295,37 @@ export function assertStrictEquals<T>(
throw new AssertionError(message);
}

/**
* Make an assertion that `actual` and `expected` are not strictly equal.
* If the values are strictly equal then throw.
* ```ts
* assertNotStrictEquals(1, 1)
* ```
*/
export function assertNotStrictEquals(
actual: unknown,
expected: unknown,
msg?: string,
): void;
export function assertNotStrictEquals<T>(
actual: T,
expected: T,
msg?: string,
): void;
export function assertNotStrictEquals(
actual: unknown,
expected: unknown,
msg?: string,
): void {
if (actual !== expected) {
return;
}

throw new AssertionError(
msg ?? `Expected "actual" to be strictly unequal to: ${_format(actual)}\n`,
);
}

/**
* Make an assertion that actual contains expected. If not
* then thrown.
Expand Down
32 changes: 31 additions & 1 deletion std/testing/asserts_test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {
assertMatch,
assertEquals,
assertStrictEquals,
assertNotStrictEquals,
assertThrows,
assertThrowsAsync,
AssertionError,
Expand Down Expand Up @@ -463,13 +464,42 @@ Deno.test({
});

Deno.test({
name: "assert* functions with specified type paratemeter",
name: "strictly unequal pass case",
fn(): void {
assertNotStrictEquals(true, false);
assertNotStrictEquals(10, 11);
assertNotStrictEquals("abc", "xyz");
assertNotStrictEquals(1, "1");

const xs = [1, false, "foo"];
const ys = [1, true, "bar"];
assertNotStrictEquals(xs, ys);

const x = { a: 1 };
const y = { a: 2 };
assertNotStrictEquals(x, y);
},
});

Deno.test({
name: "strictly unequal fail case",
fn(): void {
assertThrows(
() => assertNotStrictEquals(1, 1),
AssertionError,
);
},
});

Deno.test({
name: "assert* functions with specified type parameter",
fn(): void {
assertEquals<string>("hello", "hello");
assertNotEquals<number>(1, 2);
assertArrayContains<boolean>([true, false], [true]);
const value = { x: 1 };
assertStrictEquals<typeof value>(value, value);
assertNotStrictEquals<object>(value, { x: 1 });
},
});

Expand Down