1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-27 16:10:57 -05:00
denoland-deno/std/flags/unknown_test.ts
2020-07-14 15:24:17 -04:00

110 lines
2.9 KiB
TypeScript
Executable file

// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
import { assertEquals } from "../testing/asserts.ts";
import { parse } from "./mod.ts";
Deno.test("booleanAndAliasIsNotUnknown", function (): void {
const unknown: unknown[] = [];
function unknownFn(arg: string, k?: string, v?: unknown): boolean {
unknown.push({ arg, k, v });
return false;
}
const aliased = ["-h", "true", "--derp", "true"];
const regular = ["--herp", "true", "-d", "false"];
const opts = {
alias: { h: "herp" },
boolean: "h",
unknown: unknownFn,
};
parse(aliased, opts);
parse(regular, opts);
assertEquals(unknown, [
{ arg: "--derp", k: "derp", v: "true" },
{ arg: "-d", k: "d", v: "false" },
]);
});
Deno.test(
"flagBooleanTrueAnyDoubleHyphenArgumentIsNotUnknown",
function (): void {
const unknown: unknown[] = [];
function unknownFn(arg: string, k?: string, v?: unknown): boolean {
unknown.push({ arg, k, v });
return false;
}
const argv = parse(["--honk", "--tacos=good", "cow", "-p", "55"], {
boolean: true,
unknown: unknownFn,
});
assertEquals(unknown, [
{ arg: "--tacos=good", k: "tacos", v: "good" },
{ arg: "cow", k: undefined, v: undefined },
{ arg: "-p", k: "p", v: "55" },
]);
assertEquals(argv, {
honk: true,
_: [],
});
},
);
Deno.test("stringAndAliasIsNotUnkown", function (): void {
const unknown: unknown[] = [];
function unknownFn(arg: string, k?: string, v?: unknown): boolean {
unknown.push({ arg, k, v });
return false;
}
const aliased = ["-h", "hello", "--derp", "goodbye"];
const regular = ["--herp", "hello", "-d", "moon"];
const opts = {
alias: { h: "herp" },
string: "h",
unknown: unknownFn,
};
parse(aliased, opts);
parse(regular, opts);
assertEquals(unknown, [
{ arg: "--derp", k: "derp", v: "goodbye" },
{ arg: "-d", k: "d", v: "moon" },
]);
});
Deno.test("defaultAndAliasIsNotUnknown", function (): void {
const unknown: unknown[] = [];
function unknownFn(arg: string, k?: string, v?: unknown): boolean {
unknown.push({ arg, k, v });
return false;
}
const aliased = ["-h", "hello"];
const regular = ["--herp", "hello"];
const opts = {
default: { h: "bar" },
alias: { h: "herp" },
unknown: unknownFn,
};
parse(aliased, opts);
parse(regular, opts);
assertEquals(unknown, []);
});
Deno.test("valueFollowingDoubleHyphenIsNotUnknown", function (): void {
const unknown: unknown[] = [];
function unknownFn(arg: string, k?: string, v?: unknown): boolean {
unknown.push({ arg, k, v });
return false;
}
const aliased = ["--bad", "--", "good", "arg"];
const opts = {
"--": true,
unknown: unknownFn,
};
const argv = parse(aliased, opts);
assertEquals(unknown, [{ arg: "--bad", k: "bad", v: true }]);
assertEquals(argv, {
"--": ["good", "arg"],
_: [],
});
});