mirror of
https://github.com/denoland/deno.git
synced 2024-12-28 01:59:06 -05:00
159 lines
3.9 KiB
TypeScript
159 lines
3.9 KiB
TypeScript
|
import { test, assertEqual } from "https://deno.land/x/testing/testing.ts";
|
||
|
import parseArgs from "../index.ts";
|
||
|
|
||
|
test(function flagBooleanDefaultFalse() {
|
||
|
const argv = parseArgs(['moo'], {
|
||
|
boolean: ['t', 'verbose'],
|
||
|
default: { verbose: false, t: false }
|
||
|
});
|
||
|
|
||
|
assertEqual(argv, {
|
||
|
verbose: false,
|
||
|
t: false,
|
||
|
_: ['moo']
|
||
|
});
|
||
|
|
||
|
assertEqual(typeof argv.verbose, 'boolean');
|
||
|
assertEqual(typeof argv.t, 'boolean');
|
||
|
});
|
||
|
|
||
|
test(function booleanGroups() {
|
||
|
const argv = parseArgs([ '-x', '-z', 'one', 'two', 'three' ], {
|
||
|
boolean: ['x','y','z']
|
||
|
});
|
||
|
|
||
|
assertEqual(argv, {
|
||
|
x : true,
|
||
|
y : false,
|
||
|
z : true,
|
||
|
_ : [ 'one', 'two', 'three' ]
|
||
|
});
|
||
|
|
||
|
assertEqual(typeof argv.x, 'boolean');
|
||
|
assertEqual(typeof argv.y, 'boolean');
|
||
|
assertEqual(typeof argv.z, 'boolean');
|
||
|
});
|
||
|
|
||
|
test(function booleanAndAliasWithChainableApi() {
|
||
|
const aliased = [ '-h', 'derp' ];
|
||
|
const regular = [ '--herp', 'derp' ];
|
||
|
const opts = {
|
||
|
herp: { alias: 'h', boolean: true }
|
||
|
};
|
||
|
const aliasedArgv = parseArgs(aliased, {
|
||
|
boolean: 'herp',
|
||
|
alias: { h: 'herp' }
|
||
|
});
|
||
|
const propertyArgv = parseArgs(regular, {
|
||
|
boolean: 'herp',
|
||
|
alias: { h: 'herp' }
|
||
|
});
|
||
|
const expected = {
|
||
|
herp: true,
|
||
|
h: true,
|
||
|
'_': [ 'derp' ]
|
||
|
};
|
||
|
|
||
|
assertEqual(aliasedArgv, expected);
|
||
|
assertEqual(propertyArgv, expected);
|
||
|
});
|
||
|
|
||
|
test(function booleanAndAliasWithOptionsHash() {
|
||
|
const aliased = [ '-h', 'derp' ];
|
||
|
const regular = [ '--herp', 'derp' ];
|
||
|
const opts = {
|
||
|
alias: { 'h': 'herp' },
|
||
|
boolean: 'herp'
|
||
|
};
|
||
|
const aliasedArgv = parseArgs(aliased, opts);
|
||
|
const propertyArgv = parseArgs(regular, opts);
|
||
|
const expected = {
|
||
|
herp: true,
|
||
|
h: true,
|
||
|
'_': [ 'derp' ]
|
||
|
};
|
||
|
assertEqual(aliasedArgv, expected);
|
||
|
assertEqual(propertyArgv, expected);
|
||
|
});
|
||
|
|
||
|
test(function booleanAndAliasArrayWithOptionsHash() {
|
||
|
const aliased = [ '-h', 'derp' ];
|
||
|
const regular = [ '--herp', 'derp' ];
|
||
|
const alt = [ '--harp', 'derp' ];
|
||
|
const opts = {
|
||
|
alias: { 'h': ['herp', 'harp'] },
|
||
|
boolean: 'h'
|
||
|
};
|
||
|
const aliasedArgv = parseArgs(aliased, opts);
|
||
|
const propertyArgv = parseArgs(regular, opts);
|
||
|
const altPropertyArgv = parseArgs(alt, opts);
|
||
|
const expected = {
|
||
|
harp: true,
|
||
|
herp: true,
|
||
|
h: true,
|
||
|
'_': [ 'derp' ]
|
||
|
};
|
||
|
assertEqual(aliasedArgv, expected);
|
||
|
assertEqual(propertyArgv, expected);
|
||
|
assertEqual(altPropertyArgv, expected);
|
||
|
});
|
||
|
|
||
|
test(function booleanAndAliasUsingExplicitTrue() {
|
||
|
const aliased = [ '-h', 'true' ];
|
||
|
const regular = [ '--herp', 'true' ];
|
||
|
const opts = {
|
||
|
alias: { h: 'herp' },
|
||
|
boolean: 'h'
|
||
|
};
|
||
|
const aliasedArgv = parseArgs(aliased, opts);
|
||
|
const propertyArgv = parseArgs(regular, opts);
|
||
|
const expected = {
|
||
|
herp: true,
|
||
|
h: true,
|
||
|
'_': [ ]
|
||
|
};
|
||
|
|
||
|
assertEqual(aliasedArgv, expected);
|
||
|
assertEqual(propertyArgv, expected);
|
||
|
});
|
||
|
|
||
|
// regression, see https://github.com/substack/node-optimist/issues/71
|
||
|
// boolean and --x=true
|
||
|
test(function booleanAndNonBoolean() {
|
||
|
const parsed = parseArgs(['--boool', '--other=true'], {
|
||
|
boolean: 'boool'
|
||
|
});
|
||
|
|
||
|
assertEqual(parsed.boool, true);
|
||
|
assertEqual(parsed.other, 'true');
|
||
|
|
||
|
const parsed2 = parseArgs(['--boool', '--other=false'], {
|
||
|
boolean: 'boool'
|
||
|
});
|
||
|
|
||
|
assertEqual(parsed2.boool, true);
|
||
|
assertEqual(parsed2.other, 'false');
|
||
|
});
|
||
|
|
||
|
test(function booleanParsingTrue() {
|
||
|
const parsed = parseArgs(['--boool=true'], {
|
||
|
default: {
|
||
|
boool: false
|
||
|
},
|
||
|
boolean: ['boool']
|
||
|
});
|
||
|
|
||
|
assertEqual(parsed.boool, true);
|
||
|
});
|
||
|
|
||
|
test(function booleanParsingFalse() {
|
||
|
const parsed = parseArgs(['--boool=false'], {
|
||
|
default: {
|
||
|
boool: true
|
||
|
},
|
||
|
boolean: ['boool']
|
||
|
});
|
||
|
|
||
|
assertEqual(parsed.boool, false);
|
||
|
});
|