182 lines
6.7 KiB
Go
182 lines
6.7 KiB
Go
// Copyright (c) Alex Ellis 2017. All rights reserved.
|
|
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
|
|
package main
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
var translateLegacyOptsTests = []struct {
|
|
title string
|
|
inputArgs []string
|
|
expectedArgs []string
|
|
expectError bool
|
|
}{
|
|
{
|
|
title: "legacy deploy action with all args, no =",
|
|
inputArgs: []string{"faas-cli", "-action", "deploy", "-image", "testimage", "-name", "fnname", "-fprocess", `"/usr/bin/faas-img2ansi"`, "-gateway", "https://url", "-handler", "/dir/", "-lang", "python", "-replace"},
|
|
expectedArgs: []string{"faas-cli", "deploy", "--image", "testimage", "--name", "fnname", "--fprocess", `"/usr/bin/faas-img2ansi"`, "--gateway", "https://url", "--handler", "/dir/", "--lang", "python", "--replace"},
|
|
expectError: false,
|
|
},
|
|
{
|
|
title: "legacy deploy action with =",
|
|
inputArgs: []string{"faas-cli", "-action=deploy", "-image=testimage", "-name=fnname", `-fprocess="/usr/bin/faas-img2ansi"`},
|
|
expectedArgs: []string{"faas-cli", "deploy", "--image=testimage", "--name=fnname", `--fprocess="/usr/bin/faas-img2ansi"`},
|
|
expectError: false,
|
|
},
|
|
{
|
|
title: "legacy deploy action with -f",
|
|
inputArgs: []string{"faas-cli", "-action=deploy", "-f", "/dir/file.yml"},
|
|
expectedArgs: []string{"faas-cli", "deploy", "-f", "/dir/file.yml"},
|
|
expectError: false,
|
|
},
|
|
{
|
|
title: "legacy deploy action with -yaml",
|
|
inputArgs: []string{"faas-cli", "-action=deploy", "-yaml", "/dir/file.yml"},
|
|
expectedArgs: []string{"faas-cli", "deploy", "--yaml", "/dir/file.yml"},
|
|
expectError: false,
|
|
},
|
|
{
|
|
title: "legacy build action with all args, no =",
|
|
inputArgs: []string{"faas-cli", "-action", "build", "-image", "testimage", "-name", "fnname", "-handler", "/dir/", "-lang", "python", "-no-cache", "-squash"},
|
|
expectedArgs: []string{"faas-cli", "build", "--image", "testimage", "--name", "fnname", "--handler", "/dir/", "--lang", "python", "--no-cache", "--squash"},
|
|
expectError: false,
|
|
},
|
|
{
|
|
title: "legacy delete action (note delete->remove translation)",
|
|
inputArgs: []string{"faas-cli", "-action", "delete", "-name", "fnname"},
|
|
expectedArgs: []string{"faas-cli", "remove", "fnname"},
|
|
expectError: false,
|
|
},
|
|
{
|
|
title: "legacy delete action with yaml",
|
|
inputArgs: []string{"faas-cli", "-action", "delete", "-f", "/dir/file.yml"},
|
|
expectedArgs: []string{"faas-cli", "remove", "-f", "/dir/file.yml"},
|
|
expectError: false,
|
|
},
|
|
{
|
|
title: "legacy version flag",
|
|
inputArgs: []string{"faas-cli", "-version"},
|
|
expectedArgs: []string{"faas-cli", "version"},
|
|
expectError: false,
|
|
},
|
|
{
|
|
title: "version command",
|
|
inputArgs: []string{"faas-cli", "version"},
|
|
expectedArgs: []string{"faas-cli", "version"},
|
|
expectError: false,
|
|
},
|
|
{
|
|
title: "deploy command",
|
|
inputArgs: []string{"faas-cli", "deploy", "--image", "testimage", "--name", "fnname", "--fprocess", `"/usr/bin/faas-img2ansi"`, "--gateway", "https://url", "--handler", "/dir/", "--lang", "python", "--replace", "--env", "KEY1=VAL1", "--env", "KEY2=VAL2"},
|
|
expectedArgs: []string{"faas-cli", "deploy", "--image", "testimage", "--name", "fnname", "--fprocess", `"/usr/bin/faas-img2ansi"`, "--gateway", "https://url", "--handler", "/dir/", "--lang", "python", "--replace", "--env", "KEY1=VAL1", "--env", "KEY2=VAL2"},
|
|
expectError: false,
|
|
},
|
|
{
|
|
title: "build command",
|
|
inputArgs: []string{"faas-cli", "build", "--image", "testimage", "--name", "fnname", "--handler", "/dir/", "--lang", "python", "--no-cache", "--squash"},
|
|
expectedArgs: []string{"faas-cli", "build", "--image", "testimage", "--name", "fnname", "--handler", "/dir/", "--lang", "python", "--no-cache", "--squash"},
|
|
expectError: false,
|
|
},
|
|
{
|
|
title: "remove command",
|
|
inputArgs: []string{"faas-cli", "remove", "fnname"},
|
|
expectedArgs: []string{"faas-cli", "remove", "fnname"},
|
|
expectError: false,
|
|
},
|
|
{
|
|
title: "remove command alias rm",
|
|
inputArgs: []string{"faas-cli", "rm", "fnname"},
|
|
expectedArgs: []string{"faas-cli", "rm", "fnname"},
|
|
expectError: false,
|
|
},
|
|
{
|
|
title: "remove command alias delete",
|
|
inputArgs: []string{"faas-cli", "delete", "fnname"},
|
|
expectedArgs: []string{"faas-cli", "delete", "fnname"},
|
|
expectError: false,
|
|
},
|
|
{
|
|
title: "push command",
|
|
inputArgs: []string{"faas-cli", "delete", "fnname"},
|
|
expectedArgs: []string{"faas-cli", "delete", "fnname"},
|
|
expectError: false,
|
|
},
|
|
{
|
|
title: "bashcompletion command",
|
|
inputArgs: []string{"faas-cli", "bashcompletion", "/dir/file"},
|
|
expectedArgs: []string{"faas-cli", "bashcompletion", "/dir/file"},
|
|
expectError: false,
|
|
},
|
|
{
|
|
title: "legacy flag as value without =",
|
|
inputArgs: []string{"faas-cli", "-action", "deploy", "-name", `"-name"`},
|
|
expectedArgs: []string{"faas-cli", "deploy", "--name", `"-name"`},
|
|
expectError: false,
|
|
},
|
|
{
|
|
title: "legacy flag as value with =",
|
|
inputArgs: []string{"faas-cli", "-action", "deploy", "-name=-name"},
|
|
expectedArgs: []string{"faas-cli", "deploy", "--name=-name"},
|
|
expectError: false,
|
|
},
|
|
{
|
|
title: "unknown legacy flag",
|
|
inputArgs: []string{"faas-cli", "-action", "deploy", "-fe"},
|
|
expectedArgs: []string{"faas-cli", "deploy", "-fe"},
|
|
expectError: false,
|
|
},
|
|
{
|
|
title: "legacy -action missing value",
|
|
inputArgs: []string{"faas-cli", "-action"},
|
|
expectedArgs: []string{""},
|
|
expectError: true,
|
|
},
|
|
{
|
|
title: "legacy -action= missing value",
|
|
inputArgs: []string{"faas-cli", "-action="},
|
|
expectedArgs: []string{""},
|
|
expectError: true,
|
|
},
|
|
{
|
|
title: "legacy -action with unknown value",
|
|
inputArgs: []string{"faas-cli", "-action", "unknownaction"},
|
|
expectedArgs: []string{""},
|
|
expectError: true,
|
|
},
|
|
{
|
|
title: "legacy -action= with unknown value",
|
|
inputArgs: []string{"faas-cli", "-action=unknownaction"},
|
|
expectedArgs: []string{""},
|
|
expectError: true,
|
|
},
|
|
}
|
|
|
|
func Test_translateLegacyOpts(t *testing.T) {
|
|
for _, test := range translateLegacyOptsTests {
|
|
t.Run(test.title, func(t *testing.T) {
|
|
actual, err := translateLegacyOpts(test.inputArgs)
|
|
if test.expectError {
|
|
if err == nil {
|
|
t.Errorf("TranslateLegacyOpts test [%s] test failed, expected error not thrown", test.title)
|
|
return
|
|
}
|
|
} else {
|
|
if err != nil {
|
|
t.Errorf("TranslateLegacyOpts test [%s] test failed, unexpected error thrown", test.title)
|
|
return
|
|
}
|
|
}
|
|
if !reflect.DeepEqual(actual, test.expectedArgs) {
|
|
t.Errorf("TranslateLegacyOpts test [%s] test failed, does not match expected result;\n actual: [%v]\n expected: [%v]",
|
|
test.title,
|
|
actual,
|
|
test.expectedArgs,
|
|
)
|
|
}
|
|
})
|
|
}
|
|
}
|