Singularize / pluralize "argument(s)" in error message
The validation functions to test for the number of passed arguments did not
pluralize `argument(s)`, and used `argument(s)` in all cases.
This patch adds a simple `pluralize()` helper to improve this.
Before this change, `argument(s)` was used in all cases:
$ docker container ls foobar
"docker container ls" accepts no argument(s).
$ docker network create one two
"docker network create" requires exactly 1 argument(s).
$ docker network connect
"docker network connect" requires exactly 2 argument(s).
$ docker volume create one two
"docker volume create" requires at most 1 argument(s).
After this change, `argument(s)` is properly singularized or plurarized:
$ docker container ls foobar
"docker container ls" accepts no arguments.
$ docker network create one two
"docker network create" requires exactly 1 argument.
$ docker network connect
"docker network connect" requires exactly 2 arguments.
$ docker volume create one two
"docker volume create" requires at most 1 argument.
Test cases were updated accordingly.
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
@ -20,11 +20,11 @@ func TestCheckpointCreateErrors(t *testing.T) {
|
||||
}{
|
||||
{
|
||||
args: []string{"too-few-arguments"},
|
||||
expectedError: "requires exactly 2 argument(s)",
|
||||
expectedError: "requires exactly 2 arguments",
|
||||
},
|
||||
{
|
||||
args: []string{"too", "many", "arguments"},
|
||||
expectedError: "requires exactly 2 argument(s)",
|
||||
expectedError: "requires exactly 2 arguments",
|
||||
},
|
||||
{
|
||||
args: []string{"foo", "bar"},
|
||||
|
||||
@ -20,11 +20,11 @@ func TestCheckpointRemoveErrors(t *testing.T) {
|
||||
}{
|
||||
{
|
||||
args: []string{"too-few-arguments"},
|
||||
expectedError: "requires exactly 2 argument(s)",
|
||||
expectedError: "requires exactly 2 arguments",
|
||||
},
|
||||
{
|
||||
args: []string{"too", "many", "arguments"},
|
||||
expectedError: "requires exactly 2 argument(s)",
|
||||
expectedError: "requires exactly 2 arguments",
|
||||
},
|
||||
{
|
||||
args: []string{"foo", "bar"},
|
||||
|
||||
@ -26,10 +26,10 @@ func TestConfigCreateErrors(t *testing.T) {
|
||||
}{
|
||||
{
|
||||
args: []string{"too_few"},
|
||||
expectedError: "requires exactly 2 argument(s)",
|
||||
expectedError: "requires exactly 2 arguments",
|
||||
},
|
||||
{args: []string{"too", "many", "arguments"},
|
||||
expectedError: "requires exactly 2 argument(s)",
|
||||
expectedError: "requires exactly 2 arguments",
|
||||
},
|
||||
{
|
||||
args: []string{"name", filepath.Join("testdata", configDataFile)},
|
||||
|
||||
@ -20,7 +20,7 @@ func TestConfigRemoveErrors(t *testing.T) {
|
||||
}{
|
||||
{
|
||||
args: []string{},
|
||||
expectedError: "requires at least 1 argument(s).",
|
||||
expectedError: "requires at least 1 argument.",
|
||||
},
|
||||
{
|
||||
args: []string{"foo"},
|
||||
|
||||
@ -25,7 +25,7 @@ func TestNewHistoryCommandErrors(t *testing.T) {
|
||||
{
|
||||
name: "wrong-args",
|
||||
args: []string{},
|
||||
expectedError: "requires exactly 1 argument(s).",
|
||||
expectedError: "requires exactly 1 argument.",
|
||||
},
|
||||
{
|
||||
name: "client-error",
|
||||
|
||||
@ -24,7 +24,7 @@ func TestNewImportCommandErrors(t *testing.T) {
|
||||
{
|
||||
name: "wrong-args",
|
||||
args: []string{},
|
||||
expectedError: "requires at least 1 argument(s).",
|
||||
expectedError: "requires at least 1 argument.",
|
||||
},
|
||||
{
|
||||
name: "import-failed",
|
||||
|
||||
@ -22,7 +22,7 @@ func TestNewInspectCommandErrors(t *testing.T) {
|
||||
{
|
||||
name: "wrong-args",
|
||||
args: []string{},
|
||||
expectedError: "requires at least 1 argument(s).",
|
||||
expectedError: "requires at least 1 argument.",
|
||||
},
|
||||
}
|
||||
for _, tc := range testCases {
|
||||
|
||||
@ -25,7 +25,7 @@ func TestNewImagesCommandErrors(t *testing.T) {
|
||||
{
|
||||
name: "wrong-args",
|
||||
args: []string{"arg1", "arg2"},
|
||||
expectedError: "requires at most 1 argument(s).",
|
||||
expectedError: "requires at most 1 argument.",
|
||||
},
|
||||
{
|
||||
name: "failed-list",
|
||||
|
||||
@ -27,7 +27,7 @@ func TestNewLoadCommandErrors(t *testing.T) {
|
||||
{
|
||||
name: "wrong-args",
|
||||
args: []string{"arg"},
|
||||
expectedError: "accepts no argument(s).",
|
||||
expectedError: "accepts no arguments.",
|
||||
},
|
||||
{
|
||||
name: "input-to-terminal",
|
||||
|
||||
@ -25,7 +25,7 @@ func TestNewPruneCommandErrors(t *testing.T) {
|
||||
{
|
||||
name: "wrong-args",
|
||||
args: []string{"something"},
|
||||
expectedError: "accepts no argument(s).",
|
||||
expectedError: "accepts no arguments.",
|
||||
},
|
||||
{
|
||||
name: "prune-error",
|
||||
|
||||
@ -19,7 +19,7 @@ func TestNewPullCommandErrors(t *testing.T) {
|
||||
}{
|
||||
{
|
||||
name: "wrong-args",
|
||||
expectedError: "requires exactly 1 argument(s).",
|
||||
expectedError: "requires exactly 1 argument.",
|
||||
args: []string{},
|
||||
},
|
||||
{
|
||||
|
||||
@ -23,7 +23,7 @@ func TestNewPushCommandErrors(t *testing.T) {
|
||||
{
|
||||
name: "wrong-args",
|
||||
args: []string{},
|
||||
expectedError: "requires exactly 1 argument(s).",
|
||||
expectedError: "requires exactly 1 argument.",
|
||||
},
|
||||
{
|
||||
name: "invalid-name",
|
||||
|
||||
@ -29,7 +29,7 @@ func TestNewRemoveCommandErrors(t *testing.T) {
|
||||
}{
|
||||
{
|
||||
name: "wrong args",
|
||||
expectedError: "requires at least 1 argument(s).",
|
||||
expectedError: "requires at least 1 argument.",
|
||||
},
|
||||
{
|
||||
name: "ImageRemove fail",
|
||||
|
||||
@ -26,7 +26,7 @@ func TestNewSaveCommandErrors(t *testing.T) {
|
||||
{
|
||||
name: "wrong args",
|
||||
args: []string{},
|
||||
expectedError: "requires at least 1 argument(s).",
|
||||
expectedError: "requires at least 1 argument.",
|
||||
},
|
||||
{
|
||||
name: "output to terminal",
|
||||
|
||||
@ -15,7 +15,7 @@ func TestCliNewTagCommandErrors(t *testing.T) {
|
||||
{"image1"},
|
||||
{"image1", "image2", "image3"},
|
||||
}
|
||||
expectedError := "\"tag\" requires exactly 2 argument(s)."
|
||||
expectedError := "\"tag\" requires exactly 2 arguments."
|
||||
for _, args := range testCases {
|
||||
cmd := NewTagCommand(test.NewFakeCli(&fakeClient{}))
|
||||
cmd.SetArgs(args)
|
||||
|
||||
@ -19,7 +19,7 @@ func TestNetworkConnectErrors(t *testing.T) {
|
||||
expectedError string
|
||||
}{
|
||||
{
|
||||
expectedError: "requires exactly 2 argument(s)",
|
||||
expectedError: "requires exactly 2 arguments",
|
||||
},
|
||||
{
|
||||
args: []string{"toto", "titi"},
|
||||
|
||||
@ -17,7 +17,7 @@ func TestNetworkDisconnectErrors(t *testing.T) {
|
||||
expectedError string
|
||||
}{
|
||||
{
|
||||
expectedError: "requires exactly 2 argument(s)",
|
||||
expectedError: "requires exactly 2 arguments",
|
||||
},
|
||||
{
|
||||
args: []string{"toto", "titi"},
|
||||
|
||||
@ -27,10 +27,10 @@ func TestSecretCreateErrors(t *testing.T) {
|
||||
}{
|
||||
{
|
||||
args: []string{"too_few"},
|
||||
expectedError: "requires exactly 2 argument(s)",
|
||||
expectedError: "requires exactly 2 arguments",
|
||||
},
|
||||
{args: []string{"too", "many", "arguments"},
|
||||
expectedError: "requires exactly 2 argument(s)",
|
||||
expectedError: "requires exactly 2 arguments",
|
||||
},
|
||||
{
|
||||
args: []string{"name", filepath.Join("testdata", secretDataFile)},
|
||||
|
||||
@ -20,7 +20,7 @@ func TestSecretRemoveErrors(t *testing.T) {
|
||||
}{
|
||||
{
|
||||
args: []string{},
|
||||
expectedError: "requires at least 1 argument(s).",
|
||||
expectedError: "requires at least 1 argument.",
|
||||
},
|
||||
{
|
||||
args: []string{"foo"},
|
||||
|
||||
@ -21,7 +21,7 @@ func TestSwarmLeaveErrors(t *testing.T) {
|
||||
{
|
||||
name: "too-many-args",
|
||||
args: []string{"foo"},
|
||||
expectedError: "accepts no argument(s)",
|
||||
expectedError: "accepts no arguments",
|
||||
},
|
||||
{
|
||||
name: "leave-failed",
|
||||
|
||||
@ -29,7 +29,7 @@ func TestSwarmUnlockKeyErrors(t *testing.T) {
|
||||
{
|
||||
name: "too-many-args",
|
||||
args: []string{"foo"},
|
||||
expectedError: "accepts no argument(s)",
|
||||
expectedError: "accepts no arguments",
|
||||
},
|
||||
{
|
||||
name: "swarm-inspect-rotate-failed",
|
||||
|
||||
@ -25,7 +25,7 @@ func TestSwarmUnlockErrors(t *testing.T) {
|
||||
{
|
||||
name: "too-many-args",
|
||||
args: []string{"foo"},
|
||||
expectedError: "accepts no argument(s)",
|
||||
expectedError: "accepts no arguments",
|
||||
},
|
||||
{
|
||||
name: "is-not-part-of-a-swarm",
|
||||
|
||||
@ -30,7 +30,7 @@ func TestSwarmUpdateErrors(t *testing.T) {
|
||||
{
|
||||
name: "too-many-args",
|
||||
args: []string{"foo"},
|
||||
expectedError: "accepts no argument(s)",
|
||||
expectedError: "accepts no arguments",
|
||||
},
|
||||
{
|
||||
name: "swarm-inspect-error",
|
||||
|
||||
@ -31,7 +31,7 @@ func TestVolumeCreateErrors(t *testing.T) {
|
||||
},
|
||||
{
|
||||
args: []string{"too", "many"},
|
||||
expectedError: "requires at most 1 argument(s)",
|
||||
expectedError: "requires at most 1 argument",
|
||||
},
|
||||
{
|
||||
volumeCreateFunc: func(createBody volumetypes.VolumesCreateBody) (types.Volume, error) {
|
||||
|
||||
Reference in New Issue
Block a user