The error message suggests you need one argument even when you
have provided one. Suggest having another argument.
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
| ... | ... |
@@ -155,7 +155,7 @@ func label(b *Builder, args []string, attributes map[string]bool, original strin |
| 155 | 155 |
// |
| 156 | 156 |
func add(b *Builder, args []string, attributes map[string]bool, original string) error {
|
| 157 | 157 |
if len(args) < 2 {
|
| 158 |
- return errAtLeastOneArgument("ADD")
|
|
| 158 |
+ return errAtLeastTwoArguments("ADD")
|
|
| 159 | 159 |
} |
| 160 | 160 |
|
| 161 | 161 |
if err := b.flags.Parse(); err != nil {
|
| ... | ... |
@@ -171,7 +171,7 @@ func add(b *Builder, args []string, attributes map[string]bool, original string) |
| 171 | 171 |
// |
| 172 | 172 |
func dispatchCopy(b *Builder, args []string, attributes map[string]bool, original string) error {
|
| 173 | 173 |
if len(args) < 2 {
|
| 174 |
- return errAtLeastOneArgument("COPY")
|
|
| 174 |
+ return errAtLeastTwoArguments("COPY")
|
|
| 175 | 175 |
} |
| 176 | 176 |
|
| 177 | 177 |
if err := b.flags.Parse(); err != nil {
|
| ... | ... |
@@ -760,6 +760,10 @@ func errExactlyOneArgument(command string) error {
|
| 760 | 760 |
return fmt.Errorf("%s requires exactly one argument", command)
|
| 761 | 761 |
} |
| 762 | 762 |
|
| 763 |
+func errAtLeastTwoArguments(command string) error {
|
|
| 764 |
+ return fmt.Errorf("%s requires at least two arguments", command)
|
|
| 765 |
+} |
|
| 766 |
+ |
|
| 763 | 767 |
func errTooManyArguments(command string) error {
|
| 764 | 768 |
return fmt.Errorf("Bad input to %s, too many arguments", command)
|
| 765 | 769 |
} |
| ... | ... |
@@ -43,8 +43,6 @@ func TestCommandsAtLeastOneArgument(t *testing.T) {
|
| 43 | 43 |
commands := []commandWithFunction{
|
| 44 | 44 |
{"ENV", func(args []string) error { return env(nil, args, nil, "") }},
|
| 45 | 45 |
{"LABEL", func(args []string) error { return label(nil, args, nil, "") }},
|
| 46 |
- {"ADD", func(args []string) error { return add(nil, args, nil, "") }},
|
|
| 47 |
- {"COPY", func(args []string) error { return dispatchCopy(nil, args, nil, "") }},
|
|
| 48 | 46 |
{"ONBUILD", func(args []string) error { return onbuild(nil, args, nil, "") }},
|
| 49 | 47 |
{"EXPOSE", func(args []string) error { return expose(nil, args, nil, "") }},
|
| 50 | 48 |
{"VOLUME", func(args []string) error { return volume(nil, args, nil, "") }}}
|
| ... | ... |
@@ -64,6 +62,26 @@ func TestCommandsAtLeastOneArgument(t *testing.T) {
|
| 64 | 64 |
} |
| 65 | 65 |
} |
| 66 | 66 |
|
| 67 |
+func TestCommandsAtLeastTwoArguments(t *testing.T) {
|
|
| 68 |
+ commands := []commandWithFunction{
|
|
| 69 |
+ {"ADD", func(args []string) error { return add(nil, args, nil, "") }},
|
|
| 70 |
+ {"COPY", func(args []string) error { return dispatchCopy(nil, args, nil, "") }}}
|
|
| 71 |
+ |
|
| 72 |
+ for _, command := range commands {
|
|
| 73 |
+ err := command.function([]string{"arg1"})
|
|
| 74 |
+ |
|
| 75 |
+ if err == nil {
|
|
| 76 |
+ t.Fatalf("Error should be present for %s command", command.name)
|
|
| 77 |
+ } |
|
| 78 |
+ |
|
| 79 |
+ expectedError := fmt.Sprintf("%s requires at least two arguments", command.name)
|
|
| 80 |
+ |
|
| 81 |
+ if err.Error() != expectedError {
|
|
| 82 |
+ t.Fatalf("Wrong error message for %s. Got: %s. Should be: %s", command.name, err.Error(), expectedError)
|
|
| 83 |
+ } |
|
| 84 |
+ } |
|
| 85 |
+} |
|
| 86 |
+ |
|
| 67 | 87 |
func TestCommandsTooManyArguments(t *testing.T) {
|
| 68 | 88 |
commands := []commandWithFunction{
|
| 69 | 89 |
{"ENV", func(args []string) error { return env(nil, args, nil, "") }},
|