UNPKG

argparse-ts

Version:

Modern CLI arguments parser for node.js

270 lines (267 loc) 4.72 kB
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"'`], }, ], ]; }