argparse-ts
Version:
Modern CLI arguments parser for node.js
270 lines (267 loc) • 4.72 kB
text/typescript
import { describe, expect, it } from "@jest/globals";
import { parseArgsArray } from "../../src/utils/utils";
describe.each([
...dataProvider(),
])(
'Parse Args Array Test',
(argv, expectedPositional, expectedOptional) => {
it('', () => {
const [positional, optional] = parseArgsArray(argv);
expect(positional).toEqual(expectedPositional);
expect(optional).toEqual(expectedOptional);
});
},
);
function dataProvider(): [string[], string[], Record<string, string[]>][] {
return [
[
[],
[],
{},
],
[
[''],
[''],
{},
],
[
['', ''],
['', ''],
{},
],
[
['', '', ''],
['', '', ''],
{},
],
[
['a'],
['a'],
{},
],
[
['aaa'],
['aaa'],
{},
],
[
['aaa', 'bbb', 'ccc'],
['aaa', 'bbb', 'ccc'],
{},
],
[
['', 'bbb', 'ccc'],
['', 'bbb', 'ccc'],
{},
],
[
['aaa', '', 'ccc'],
['aaa', '', 'ccc'],
{},
],
[
['aaa', '', ''],
['aaa', '', ''],
{},
],
[
['-a'],
[],
{
'-a': [],
},
],
[
['-a', '-b'],
[],
{
'-a': [],
'-b': [],
},
],
[
['-ab'],
[],
{
'-a': [],
'-b': [],
},
],
[
['-abc'],
[],
{
'-a': [],
'-b': [],
'-c': [],
},
],
[
['-a', '-bc'],
[],
{
'-a': [],
'-b': [],
'-c': [],
},
],
[
['-a', '1', '-b', '2', '-c', '3'],
[],
{
'-a': ['1'],
'-b': ['2'],
'-c': ['3'],
},
],
[
['-a', '1', '-b', '', '-c', '3'],
[],
{
'-a': ['1'],
'-b': [''],
'-c': ['3'],
},
],
[
['-a', '1', '-b', '', '', '-c', '3'],
[],
{
'-a': ['1'],
'-b': ['', ''],
'-c': ['3'],
},
],
[
['-a', '1', '-b', '', '', 'test', '-c', '3'],
[],
{
'-a': ['1'],
'-b': ['', '', 'test'],
'-c': ['3'],
},
],
[
['-a', '-b', '2', '-c', '3'],
[],
{
'-a': [],
'-b': ['2'],
'-c': ['3'],
},
],
[
['--first', '-b', '2', '-c', '3'],
[],
{
'--first': [],
'-b': ['2'],
'-c': ['3'],
},
],
[
['--first', '-b', '2', '3', '-c', '4'],
[],
{
'--first': [],
'-b': ['2', '3'],
'-c': ['4'],
},
],
[
['--first', '123', '-b', '2', '-c'],
[],
{
'--first': ['123'],
'-b': ['2'],
'-c': [],
},
],
[
['--first', '123', '456', '-b', '2', '-c'],
[],
{
'--first': ['123', '456'],
'-b': ['2'],
'-c': [],
},
],
[
['--first', '123', '-abc', '--second', '222'],
[],
{
'--first': ['123'],
'--second': ['222'],
'-a': [],
'-b': [],
'-c': [],
},
],
[
['--first', '123', '234', '-abc', '--second', '111', '222', '333'],
[],
{
'--first': ['123', '234'],
'--second': ['111', '222', '333'],
'-a': [],
'-b': [],
'-c': [],
},
],
[
['--first', '123', '-abc', 'test', '--second', '222'],
[],
{
'--first': ['123'],
'--second': ['222'],
'-a': [],
'-b': [],
'-c': ['test'],
},
],
[
['--first', '123', '-abc', '1', '2', '--second', '222'],
[],
{
'--first': ['123'],
'--second': ['222'],
'-a': [],
'-b': [],
'-c': ['1', '2'],
},
],
[
['pos1', '--first', '123', '-abc', 'test', '--second', '222'],
['pos1'],
{
'--first': ['123'],
'--second': ['222'],
'-a': [],
'-b': [],
'-c': ['test'],
},
],
[
['pos1', 'pos-2', 'pos--3', '--first', '123', '-abc', 'test', '--second', '222'],
['pos1', 'pos-2', 'pos--3'],
{
'--first': ['123'],
'--second': ['222'],
'-a': [],
'-b': [],
'-c': ['test'],
},
],
[
['pos1', 'pos-2', 'pos--3', '--first', '123 456', '"123 456"', '-abc', `test "123 '456'" 'abc "def ghi"'`, '--second', '222'],
['pos1', 'pos-2', 'pos--3'],
{
'--first': ['123 456', '"123 456"'],
'--second': ['222'],
'-a': [],
'-b': [],
'-c': [`test "123 '456'" 'abc "def ghi"'`],
},
],
];
}