mirror of https://github.com/docker/cli.git
71 lines
2.0 KiB
Go
71 lines
2.0 KiB
Go
package command
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/pkg/errors"
|
|
"gotest.tools/v3/assert"
|
|
)
|
|
|
|
func TestStringSliceReplaceAt(t *testing.T) {
|
|
out, ok := StringSliceReplaceAt([]string{"abc", "foo", "bar", "bax"}, []string{"foo", "bar"}, []string{"baz"}, -1)
|
|
assert.Assert(t, ok)
|
|
assert.DeepEqual(t, []string{"abc", "baz", "bax"}, out)
|
|
|
|
out, ok = StringSliceReplaceAt([]string{"foo"}, []string{"foo", "bar"}, []string{"baz"}, -1)
|
|
assert.Assert(t, !ok)
|
|
assert.DeepEqual(t, []string{"foo"}, out)
|
|
|
|
out, ok = StringSliceReplaceAt([]string{"abc", "foo", "bar", "bax"}, []string{"foo", "bar"}, []string{"baz"}, 0)
|
|
assert.Assert(t, !ok)
|
|
assert.DeepEqual(t, []string{"abc", "foo", "bar", "bax"}, out)
|
|
|
|
out, ok = StringSliceReplaceAt([]string{"foo", "bar", "bax"}, []string{"foo", "bar"}, []string{"baz"}, 0)
|
|
assert.Assert(t, ok)
|
|
assert.DeepEqual(t, []string{"baz", "bax"}, out)
|
|
|
|
out, ok = StringSliceReplaceAt([]string{"abc", "foo", "bar", "baz"}, []string{"foo", "bar"}, nil, -1)
|
|
assert.Assert(t, ok)
|
|
assert.DeepEqual(t, []string{"abc", "baz"}, out)
|
|
|
|
out, ok = StringSliceReplaceAt([]string{"foo"}, nil, []string{"baz"}, -1)
|
|
assert.Assert(t, !ok)
|
|
assert.DeepEqual(t, []string{"foo"}, out)
|
|
}
|
|
|
|
func TestValidateOutputPath(t *testing.T) {
|
|
basedir := t.TempDir()
|
|
dir := filepath.Join(basedir, "dir")
|
|
notexist := filepath.Join(basedir, "notexist")
|
|
err := os.MkdirAll(dir, 0755)
|
|
assert.NilError(t, err)
|
|
file := filepath.Join(dir, "file")
|
|
err = os.WriteFile(file, []byte("hi"), 0644)
|
|
assert.NilError(t, err)
|
|
testcases := []struct {
|
|
path string
|
|
err error
|
|
}{
|
|
{basedir, nil},
|
|
{file, nil},
|
|
{dir, nil},
|
|
{dir + string(os.PathSeparator), nil},
|
|
{notexist, nil},
|
|
{notexist + string(os.PathSeparator), nil},
|
|
{filepath.Join(notexist, "file"), errors.New("does not exist")},
|
|
}
|
|
|
|
for _, testcase := range testcases {
|
|
t.Run(testcase.path, func(t *testing.T) {
|
|
err := ValidateOutputPath(testcase.path)
|
|
if testcase.err == nil {
|
|
assert.NilError(t, err)
|
|
} else {
|
|
assert.ErrorContains(t, err, testcase.err.Error())
|
|
}
|
|
})
|
|
}
|
|
}
|