summaryrefslogtreecommitdiff
path: root/flags/tests/unknown.ts
diff options
context:
space:
mode:
Diffstat (limited to 'flags/tests/unknown.ts')
-rwxr-xr-xflags/tests/unknown.ts96
1 files changed, 96 insertions, 0 deletions
diff --git a/flags/tests/unknown.ts b/flags/tests/unknown.ts
new file mode 100755
index 000000000..d7c9db8d7
--- /dev/null
+++ b/flags/tests/unknown.ts
@@ -0,0 +1,96 @@
+import { test, assertEqual } from "https://deno.land/x/testing/testing.ts";
+import parseArgs from "../index.ts";
+
+test(function booleanAndAliasIsNotUnknown() {
+ const unknown = [];
+ function unknownFn(arg) {
+ unknown.push(arg);
+ return false;
+ }
+ const aliased = [ '-h', 'true', '--derp', 'true' ];
+ const regular = [ '--herp', 'true', '-d', 'true' ];
+ const opts = {
+ alias: { h: 'herp' },
+ boolean: 'h',
+ unknown: unknownFn
+ };
+ const aliasedArgv = parseArgs(aliased, opts);
+ const propertyArgv = parseArgs(regular, opts);
+
+ assertEqual(unknown, ['--derp', '-d']);
+});
+
+test(function flagBooleanTrueAnyDoubleHyphenArgumentIsNotUnknown() {
+ const unknown = [];
+ function unknownFn(arg) {
+ unknown.push(arg);
+ return false;
+ }
+ const argv = parseArgs(['--honk', '--tacos=good', 'cow', '-p', '55'], {
+ boolean: true,
+ unknown: unknownFn
+ });
+ assertEqual(unknown, ['--tacos=good', 'cow', '-p']);
+ assertEqual(argv, {
+ honk: true,
+ _: []
+ });
+});
+
+test(function stringAndAliasIsNotUnkown() {
+ const unknown = [];
+ function unknownFn(arg) {
+ unknown.push(arg);
+ return false;
+ }
+ const aliased = [ '-h', 'hello', '--derp', 'goodbye' ];
+ const regular = [ '--herp', 'hello', '-d', 'moon' ];
+ const opts = {
+ alias: { h: 'herp' },
+ string: 'h',
+ unknown: unknownFn
+ };
+ const aliasedArgv = parseArgs(aliased, opts);
+ const propertyArgv = parseArgs(regular, opts);
+
+ assertEqual(unknown, ['--derp', '-d']);
+});
+
+test(function defaultAndAliasIsNotUnknown() {
+ const unknown = [];
+ function unknownFn(arg) {
+ unknown.push(arg);
+ return false;
+ }
+ const aliased = [ '-h', 'hello' ];
+ const regular = [ '--herp', 'hello' ];
+ const opts = {
+ default: { 'h': 'bar' },
+ alias: { 'h': 'herp' },
+ unknown: unknownFn
+ };
+ const aliasedArgv = parseArgs(aliased, opts);
+ const propertyArgv = parseArgs(regular, opts);
+
+ assertEqual(unknown, []);
+});
+
+test(function valueFollowingDoubleHyphenIsNotUnknown() {
+ const unknown = [];
+ function unknownFn(arg) {
+ unknown.push(arg);
+ return false;
+ }
+ const aliased = [ '--bad', '--', 'good', 'arg' ];
+ const opts = {
+ '--': true,
+ unknown: unknownFn
+ };
+ const argv = parseArgs(aliased, opts);
+
+ assertEqual(unknown, ['--bad']);
+ assertEqual(argv, {
+ '--': ['good', 'arg'],
+ '_': []
+ })
+});