1dfe12d45SEvan Baconimport { resolveArgsAsync } from '../resolveOptions'; 209bb6093SEvan Bacon 309bb6093SEvan Bacondescribe(resolveArgsAsync, () => { 409bb6093SEvan Bacon it(`asserts invalid flags`, async () => { 509bb6093SEvan Bacon await expect(resolveArgsAsync(['-g', '--bacon'])).rejects.toThrow(/Unexpected: -g, --bacon/); 609bb6093SEvan Bacon }); 709bb6093SEvan Bacon it(`prevents bad combos`, async () => { 809bb6093SEvan Bacon await expect(resolveArgsAsync(['--npm', '--yarn'])).rejects.toThrow( 96caf5755SEvan Bacon /Specify at most one of: --npm, --pnpm, --yarn/ 106caf5755SEvan Bacon ); 116caf5755SEvan Bacon await expect(resolveArgsAsync(['--npm', '--pnpm', '--yarn'])).rejects.toThrow( 126caf5755SEvan Bacon /Specify at most one of: --npm, --pnpm, --yarn/ 1309bb6093SEvan Bacon ); 1409bb6093SEvan Bacon }); 1509bb6093SEvan Bacon it(`allows known values`, async () => { 1609bb6093SEvan Bacon const result = await resolveArgsAsync([ 1709bb6093SEvan Bacon 'bacon', 1809bb6093SEvan Bacon '@evan/bacon', 1909bb6093SEvan Bacon '--yarn', 2009bb6093SEvan Bacon 'another@foobar', 2109bb6093SEvan Bacon 'file:../thing', 2209bb6093SEvan Bacon '--', 2309bb6093SEvan Bacon '--npm', 2409bb6093SEvan Bacon '-g', 2509bb6093SEvan Bacon 'not-a-plugin', 2609bb6093SEvan Bacon ]); 2709bb6093SEvan Bacon expect(result).toEqual({ 2809bb6093SEvan Bacon variadic: ['bacon', '@evan/bacon', 'another@foobar', 'file:../thing'], 2909bb6093SEvan Bacon options: { 3009bb6093SEvan Bacon npm: false, 3109bb6093SEvan Bacon yarn: true, 32c94ad8a2SEvan Bacon check: false, 336caf5755SEvan Bacon pnpm: false, 34*9b1b5ec6SEvan Bacon bun: false, 35c94ad8a2SEvan Bacon fix: false, 3609bb6093SEvan Bacon }, 3709bb6093SEvan Bacon extras: ['--npm', '-g', 'not-a-plugin'], 3809bb6093SEvan Bacon }); 3909bb6093SEvan Bacon }); 4009bb6093SEvan Bacon it(`allows known values without correct chaining`, async () => { 41c94ad8a2SEvan Bacon const result = await resolveArgsAsync(['expo', '--npm', '--check', '--']); 4209bb6093SEvan Bacon expect(result).toEqual({ 4309bb6093SEvan Bacon variadic: ['expo'], 4409bb6093SEvan Bacon options: { 4509bb6093SEvan Bacon npm: true, 4609bb6093SEvan Bacon yarn: false, 47c94ad8a2SEvan Bacon check: true, 486caf5755SEvan Bacon pnpm: false, 49*9b1b5ec6SEvan Bacon bun: false, 50c94ad8a2SEvan Bacon fix: false, 5109bb6093SEvan Bacon }, 5209bb6093SEvan Bacon extras: [], 5309bb6093SEvan Bacon }); 5409bb6093SEvan Bacon }); 5509bb6093SEvan Bacon}); 56