From aaa38d19cd947f185d3cfc3bef3c1c3d95e9c0f3 Mon Sep 17 00:00:00 2001 From: aarondill Date: Wed, 1 Feb 2023 23:05:12 -0600 Subject: [PATCH] test: added tests for illegal argument usage --- tests/cli.js | 42 +++++++++++ tests/snapshots/cli.js.md | 136 ++++++++++++++++++++++++++++++++++++ tests/snapshots/cli.js.snap | Bin 3820 -> 4286 bytes 3 files changed, 178 insertions(+) diff --git a/tests/cli.js b/tests/cli.js index 30388d26..5da85bf1 100644 --- a/tests/cli.js +++ b/tests/cli.js @@ -63,6 +63,26 @@ test('run `cli --help` with `--version`', macro.testCLI, { message: 'Should prioritize help over version.', }) +test('run `cli --help=value`', macro.testCLI, { + args: ['--help=value'], + message: 'Should report illegal argument and suggest help.', +}) + +test('run `cli --version=value`', macro.testCLI, { + args: ['--version=value'], + message: 'Should report illegal argument and suggest help.', +}) + +test('run `cli --unknown-option`', macro.testCLI, { + args: ['--unknown-option'], + message: 'Should report unknown option and suggest help.', +}) + +test('run `cli -u` with unknown option', macro.testCLI, { + args: ['-u'], + message: 'Should report unknown option and suggest help.', +}) + test('run `cli` with no patterns', macro.testCLI, { fixtures: [ { @@ -87,6 +107,11 @@ test('run `cli --quiet` with no patterns', macro.testCLI, { message: 'Should format package.json without message.', }) +test('run `cli --quiet=value`', macro.testCLI, { + args: ['--quiet=value'], + message: 'Should report illegal argument and suggest help.', +}) + test('run `cli -q` with no patterns', macro.testCLI, { fixtures: [ { @@ -111,6 +136,11 @@ test('run `cli --check` with no patterns', macro.testCLI, { message: 'Should not sort package.json', }) +test('run `cli --check=value`', macro.testCLI, { + args: ['--check=value'], + message: 'Should report illegal argument and suggest help.', +}) + test('run `cli --check --quiet` with no patterns', macro.testCLI, { fixtures: [ { @@ -147,6 +177,18 @@ test('run `cli -c -q` with no patterns', macro.testCLI, { message: 'Should support `-q` alias', }) +test('run `cli -cq` with no patterns', macro.testCLI, { + fixtures: [ + { + file: 'package.json', + content: badJson, + expect: badJson, + }, + ], + args: ['-cq'], + message: 'Should support option aggregation', +}) + test('run `cli` on 1 bad file', macro.testCLI, { fixtures: [ { diff --git a/tests/snapshots/cli.js.md b/tests/snapshots/cli.js.md index b939c937..bf3f71e5 100644 --- a/tests/snapshots/cli.js.md +++ b/tests/snapshots/cli.js.md @@ -207,6 +207,78 @@ Generated by [AVA](https://avajs.dev). }, } +## run `cli --help=value` + +> Should report illegal argument and suggest help. + + { + args: [ + '--help=value', + ], + fixtures: [], + result: { + errorCode: 2, + stderr: `Option '-h, --help' does not take an argument␊ + Try 'sort-package-json --help' for more information.␊ + `, + stdout: '', + }, + } + +## run `cli --version=value` + +> Should report illegal argument and suggest help. + + { + args: [ + '--version=value', + ], + fixtures: [], + result: { + errorCode: 2, + stderr: `Option '-v, --version' does not take an argument␊ + Try 'sort-package-json --help' for more information.␊ + `, + stdout: '', + }, + } + +## run `cli --unknown-option` + +> Should report unknown option and suggest help. + + { + args: [ + '--unknown-option', + ], + fixtures: [], + result: { + errorCode: 2, + stderr: `Unknown option '--unknown-option'. To specify a positional argument starting with a '-', place it at the end of the command after '--', as in '-- "--unknown-option"␊ + Try 'sort-package-json --help' for more information.␊ + `, + stdout: '', + }, + } + +## run `cli -u` with unknown option + +> Should report unknown option and suggest help. + + { + args: [ + '-u', + ], + fixtures: [], + result: { + errorCode: 2, + stderr: `Unknown option '-u'. To specify a positional argument starting with a '-', place it at the end of the command after '--', as in '-- "-u"␊ + Try 'sort-package-json --help' for more information.␊ + `, + stdout: '', + }, + } + ## run `cli` with no patterns > Should format package.json. @@ -265,6 +337,24 @@ Generated by [AVA](https://avajs.dev). }, } +## run `cli --quiet=value` + +> Should report illegal argument and suggest help. + + { + args: [ + '--quiet=value', + ], + fixtures: [], + result: { + errorCode: 2, + stderr: `Option '-q, --quiet' does not take an argument␊ + Try 'sort-package-json --help' for more information.␊ + `, + stdout: '', + }, + } + ## run `cli -q` with no patterns > Should support -q alias. @@ -325,6 +415,24 @@ Generated by [AVA](https://avajs.dev). }, } +## run `cli --check=value` + +> Should report illegal argument and suggest help. + + { + args: [ + '--check=value', + ], + fixtures: [], + result: { + errorCode: 2, + stderr: `Option '-c, --check' does not take an argument␊ + Try 'sort-package-json --help' for more information.␊ + `, + stdout: '', + }, + } + ## run `cli --check --quiet` with no patterns > Should not sort package.json or report a message. @@ -415,6 +523,34 @@ Generated by [AVA](https://avajs.dev). }, } +## run `cli -cq` with no patterns + +> Should support option aggregation + + { + args: [ + '-cq', + ], + fixtures: [ + { + expect: `{␊ + "version": "1.0.0",␊ + "name": "sort-package-json"␊ + }`, + file: 'package.json', + original: `{␊ + "version": "1.0.0",␊ + "name": "sort-package-json"␊ + }`, + }, + ], + result: { + errorCode: 1, + stderr: '', + stdout: '', + }, + } + ## run `cli` on 1 bad file > Should format 1 file. diff --git a/tests/snapshots/cli.js.snap b/tests/snapshots/cli.js.snap index daa915276216656c03897e93e5303c166be0e7d7..e851f5aba0107ed2ffd08f261aab27270a97ab4f 100644 GIT binary patch literal 4286 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