mirror of
https://github.com/containers/podman
synced 2024-10-21 01:34:37 +00:00
create_cli_test.go: Unittests
Create unittests for the create_cli helper functions. As such, remove cli context usage from the functions to further divide between cli input and parsing. Also, simplifies unit testing. Signed-off-by: baude <bbaude@redhat.com>
This commit is contained in:
parent
9f5fa7f2eb
commit
46d762176e
|
@ -252,13 +252,12 @@ func parseCreateOpts(c *cli.Context, runtime *libpod.Runtime) (*createConfig, er
|
|||
}
|
||||
|
||||
// LABEL VARIABLES
|
||||
labels, err := getAllLabels(c)
|
||||
labels, err := getAllLabels(c.StringSlice("label-file"), c.StringSlice("labels"))
|
||||
if err != nil {
|
||||
return &createConfig{}, errors.Wrapf(err, "unable to process labels")
|
||||
}
|
||||
// ENVIRONMENT VARIABLES
|
||||
// TODO where should env variables be verified to be x=y format
|
||||
env, err := getAllEnvironmentVariables(c)
|
||||
env, err := getAllEnvironmentVariables(c.StringSlice("env-file"), c.StringSlice("env"))
|
||||
if err != nil {
|
||||
return &createConfig{}, errors.Wrapf(err, "unable to process environment variables")
|
||||
}
|
||||
|
|
|
@ -4,13 +4,12 @@ import (
|
|||
"strings"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
"github.com/urfave/cli"
|
||||
)
|
||||
|
||||
func getAllLabels(cli *cli.Context) (map[string]string, error) {
|
||||
func getAllLabels(labelFile, inputLabels []string) (map[string]string, error) {
|
||||
var labelValues []string
|
||||
labels := make(map[string]string)
|
||||
labelValues, labelErr := readKVStrings(cli.StringSlice("label-file"), cli.StringSlice("label"))
|
||||
labelValues, labelErr := readKVStrings(labelFile, inputLabels)
|
||||
if labelErr != nil {
|
||||
return labels, errors.Wrapf(labelErr, "unable to process labels from --label and label-file")
|
||||
}
|
||||
|
@ -18,7 +17,7 @@ func getAllLabels(cli *cli.Context) (map[string]string, error) {
|
|||
if len(labelValues) > 0 {
|
||||
for _, i := range labelValues {
|
||||
spliti := strings.Split(i, "=")
|
||||
if len(spliti) > 1 {
|
||||
if len(spliti) < 2 {
|
||||
return labels, errors.Errorf("labels must be in KEY=VALUE format: %s is invalid", i)
|
||||
}
|
||||
labels[spliti[0]] = spliti[1]
|
||||
|
@ -27,8 +26,8 @@ func getAllLabels(cli *cli.Context) (map[string]string, error) {
|
|||
return labels, nil
|
||||
}
|
||||
|
||||
func getAllEnvironmentVariables(cli *cli.Context) ([]string, error) {
|
||||
env, err := readKVStrings(cli.StringSlice("env-file"), cli.StringSlice("env"))
|
||||
func getAllEnvironmentVariables(envFiles, envInput []string) ([]string, error) {
|
||||
env, err := readKVStrings(envFiles, envInput)
|
||||
if err != nil {
|
||||
return []string{}, errors.Wrapf(err, "unable to process variables from --env and --env-file")
|
||||
}
|
||||
|
@ -36,6 +35,13 @@ func getAllEnvironmentVariables(cli *cli.Context) ([]string, error) {
|
|||
if len(env) == 0 {
|
||||
env = append(env, defaultEnvVariables...)
|
||||
}
|
||||
// Each environment variable must be in the K=V format
|
||||
for _,i := range env{
|
||||
spliti := strings.Split(i, "=")
|
||||
if len(spliti) != 2 {
|
||||
return env, errors.Errorf("environment variables must be in the format KEY=VALUE: %s is invalid", i)
|
||||
}
|
||||
}
|
||||
return env, nil
|
||||
}
|
||||
|
||||
|
|
98
cmd/kpod/create_cli_test.go
Normal file
98
cmd/kpod/create_cli_test.go
Normal file
|
@ -0,0 +1,98 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"github.com/stretchr/testify/assert"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"testing"
|
||||
)
|
||||
|
||||
var (
|
||||
Var1 = []string{"ONE=1", "TWO=2"}
|
||||
)
|
||||
|
||||
func createTmpFile(content []byte) (string, error) {
|
||||
tmpfile, err := ioutil.TempFile(os.TempDir(), "unittest")
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
if _, err := tmpfile.Write(content); err != nil {
|
||||
return "", err
|
||||
|
||||
}
|
||||
if err := tmpfile.Close(); err != nil {
|
||||
return "", err
|
||||
}
|
||||
return tmpfile.Name(), nil
|
||||
}
|
||||
|
||||
func TestConvertStringSliceToMap(t *testing.T) {
|
||||
strSlice := []string{"BLAU=BLUE", "GELB=YELLOW"}
|
||||
result, _ := convertStringSliceToMap(strSlice, "=")
|
||||
assert.Equal(t, result["BLAU"], "BLUE")
|
||||
}
|
||||
|
||||
func TestConvertStringSliceToMapBadData(t *testing.T) {
|
||||
strSlice := []string{"BLAU=BLUE", "GELB^YELLOW"}
|
||||
_, err := convertStringSliceToMap(strSlice, "=")
|
||||
assert.Error(t, err)
|
||||
}
|
||||
|
||||
func TestGetAllLabels(t *testing.T) {
|
||||
fileLabels := []string{}
|
||||
labels, _ := getAllLabels(fileLabels, Var1)
|
||||
assert.Equal(t, len(labels), 2)
|
||||
}
|
||||
|
||||
func TestGetAllLabelsBadKeyValue(t *testing.T) {
|
||||
inLabels := []string{"ONE1", "TWO=2"}
|
||||
fileLabels := []string{}
|
||||
_, err := getAllLabels(fileLabels, inLabels)
|
||||
assert.Error(t, err, assert.AnError)
|
||||
}
|
||||
|
||||
func TestGetAllLabelsBadLabelFile(t *testing.T) {
|
||||
fileLabels := []string{"/foobar5001/be"}
|
||||
_, err := getAllLabels(fileLabels, Var1)
|
||||
assert.Error(t, err, assert.AnError)
|
||||
}
|
||||
|
||||
func TestGetAllLabelsFile(t *testing.T) {
|
||||
content := []byte("THREE=3")
|
||||
tFile, err := createTmpFile(content)
|
||||
defer os.Remove(tFile)
|
||||
assert.NoError(t, err)
|
||||
fileLabels := []string{tFile}
|
||||
result, _ := getAllLabels(fileLabels, Var1)
|
||||
assert.Equal(t, len(result), 3)
|
||||
}
|
||||
|
||||
func TestGetAllEnvironmentVariables(t *testing.T) {
|
||||
fileEnvs := []string{}
|
||||
result, _ := getAllEnvironmentVariables(fileEnvs, Var1)
|
||||
assert.Equal(t, len(result), 2)
|
||||
}
|
||||
|
||||
func TestGetAllEnvironmentVariablesBadKeyValue(t *testing.T) {
|
||||
inEnvs := []string{"ONE1", "TWO=2"}
|
||||
fileEnvs := []string{}
|
||||
_, err := getAllEnvironmentVariables(fileEnvs, inEnvs)
|
||||
assert.Error(t, err, assert.AnError)
|
||||
}
|
||||
|
||||
func TestGetAllEnvironmentVariablesBadEnvFile(t *testing.T) {
|
||||
fileEnvs := []string{"/foobar5001/be"}
|
||||
_, err := getAllEnvironmentVariables(fileEnvs, Var1)
|
||||
assert.Error(t, err, assert.AnError)
|
||||
}
|
||||
|
||||
func TestGetAllEnvironmentVariablesFile(t *testing.T) {
|
||||
content := []byte("THREE=3")
|
||||
tFile, err := createTmpFile(content)
|
||||
defer os.Remove(tFile)
|
||||
assert.NoError(t, err)
|
||||
fileEnvs := []string{tFile}
|
||||
result, _ := getAllEnvironmentVariables(fileEnvs, Var1)
|
||||
assert.Equal(t, len(result), 3)
|
||||
}
|
Loading…
Reference in a new issue