1*e0694585SCedric van Puttenimport { parseVariadicArguments, assertUnexpectedVariadicFlags } from '../variadic'; 2dfe12d45SEvan Bacon 3dfe12d45SEvan Bacondescribe(parseVariadicArguments, () => { 4dfe12d45SEvan Bacon it(`parses complex`, () => { 5dfe12d45SEvan Bacon expect( 6dfe12d45SEvan Bacon parseVariadicArguments([ 7dfe12d45SEvan Bacon 'bacon', 8dfe12d45SEvan Bacon '@evan/bacon', 9dfe12d45SEvan Bacon '--yarn', 10dfe12d45SEvan Bacon '-g', 11dfe12d45SEvan Bacon '@evan/bacon/foobar.js', 12dfe12d45SEvan Bacon './avocado.js', 13dfe12d45SEvan Bacon '--', 14dfe12d45SEvan Bacon '--npm', 15dfe12d45SEvan Bacon ]) 16dfe12d45SEvan Bacon ).toEqual({ 17dfe12d45SEvan Bacon variadic: ['bacon', '@evan/bacon', '@evan/bacon/foobar.js', './avocado.js'], 18dfe12d45SEvan Bacon extras: ['--npm'], 19dfe12d45SEvan Bacon flags: { '--yarn': true, '-g': true }, 20dfe12d45SEvan Bacon }); 21dfe12d45SEvan Bacon }); 22dfe12d45SEvan Bacon it(`parses too many extras`, () => { 23dfe12d45SEvan Bacon expect(() => parseVariadicArguments(['avo', '--', '--npm', '--'])).toThrow( 24dfe12d45SEvan Bacon /Unexpected multiple --/ 25dfe12d45SEvan Bacon ); 26dfe12d45SEvan Bacon }); 27dfe12d45SEvan Bacon}); 28*e0694585SCedric van Putten 29*e0694585SCedric van Puttendescribe(assertUnexpectedVariadicFlags, () => { 30*e0694585SCedric van Putten it(`splits unknown flags into extras`, () => { 31*e0694585SCedric van Putten expect(() => 32*e0694585SCedric van Putten assertUnexpectedVariadicFlags(['--yarn'], { 33*e0694585SCedric van Putten variadic: ['chalk'], 34*e0694585SCedric van Putten flags: { '-D': true }, 35*e0694585SCedric van Putten extras: [], 36*e0694585SCedric van Putten }) 37*e0694585SCedric van Putten ).toThrowError('Did you mean: chalk -- -D'); 38*e0694585SCedric van Putten }); 39*e0694585SCedric van Putten 40*e0694585SCedric van Putten it(`splits unknown flags and combines existing extras`, () => { 41*e0694585SCedric van Putten expect(() => 42*e0694585SCedric van Putten assertUnexpectedVariadicFlags(['--npm'], { 43*e0694585SCedric van Putten variadic: ['chalk'], 44*e0694585SCedric van Putten flags: { '-D': true }, 45*e0694585SCedric van Putten extras: ['--ignore-scripts'], 46*e0694585SCedric van Putten }) 47*e0694585SCedric van Putten ).toThrowError('Did you mean: chalk -- --ignore-scripts -D'); 48*e0694585SCedric van Putten }); 49*e0694585SCedric van Putten 50*e0694585SCedric van Putten it(`accepts empty variadic`, () => { 51*e0694585SCedric van Putten expect(() => 52*e0694585SCedric van Putten assertUnexpectedVariadicFlags(['--pnpm'], { 53*e0694585SCedric van Putten variadic: [], 54*e0694585SCedric van Putten flags: { '--ignore-scripts': true, '-D': true }, 55*e0694585SCedric van Putten extras: [], 56*e0694585SCedric van Putten }) 57*e0694585SCedric van Putten ).toThrowError('Did you mean: -- --ignore-scripts -D'); 58*e0694585SCedric van Putten }); 59*e0694585SCedric van Putten 60*e0694585SCedric van Putten it('prepends command prefix', () => { 61*e0694585SCedric van Putten expect(() => 62*e0694585SCedric van Putten assertUnexpectedVariadicFlags( 63*e0694585SCedric van Putten ['--yarn'], 64*e0694585SCedric van Putten { 65*e0694585SCedric van Putten variadic: ['chalk'], 66*e0694585SCedric van Putten flags: { '-D': true }, 67*e0694585SCedric van Putten extras: [], 68*e0694585SCedric van Putten }, 69*e0694585SCedric van Putten 'npx expo install' 70*e0694585SCedric van Putten ) 71*e0694585SCedric van Putten ).toThrowError('Did you mean: npx expo install chalk -- -D'); 72*e0694585SCedric van Putten }); 73*e0694585SCedric van Putten}); 74