114 lines
2.6 KiB
Go
114 lines
2.6 KiB
Go
package app
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
)
|
|
|
|
func TestParse(t *testing.T) {
|
|
tests := []struct {
|
|
src string
|
|
dst string
|
|
srcPath string
|
|
dstPath string
|
|
service string
|
|
toContainer bool
|
|
err error
|
|
}{
|
|
{src: "foo", dst: "bar", err: errServiceMissing},
|
|
{src: "app:foo", dst: "app:bar", err: errServiceMissing},
|
|
{src: "app:foo", dst: "bar", srcPath: "foo", dstPath: "bar", service: "app", toContainer: false},
|
|
{src: "foo", dst: "app:bar", srcPath: "foo", dstPath: "bar", service: "app", toContainer: true},
|
|
}
|
|
|
|
for i, tc := range tests {
|
|
srcPath, dstPath, service, toContainer, err := parseSrcAndDst(tc.src, tc.dst)
|
|
if srcPath != tc.srcPath {
|
|
t.Errorf("[%d] srcPath: want (%s), got(%s)", i, tc.srcPath, srcPath)
|
|
}
|
|
if dstPath != tc.dstPath {
|
|
t.Errorf("[%d] dstPath: want (%s), got(%s)", i, tc.dstPath, dstPath)
|
|
}
|
|
if service != tc.service {
|
|
t.Errorf("[%d] service: want (%s), got(%s)", i, tc.service, service)
|
|
}
|
|
if toContainer != tc.toContainer {
|
|
t.Errorf("[%d] toConainer: want (%t), got(%t)", i, tc.toContainer, toContainer)
|
|
}
|
|
if err == nil && tc.err != nil && err.Error() != tc.err.Error() {
|
|
t.Errorf("[%d] err: want (%s), got(%s)", i, tc.err, err)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestCopyMode(t *testing.T) {
|
|
tests := []struct {
|
|
srcPath string
|
|
dstPath string
|
|
srcMode os.FileMode
|
|
dstMode os.FileMode
|
|
dstExists bool
|
|
mode CopyMode
|
|
err error
|
|
}{
|
|
{
|
|
srcPath: "foo.txt",
|
|
dstPath: "foo.txt",
|
|
srcMode: os.ModePerm,
|
|
dstMode: os.ModePerm,
|
|
dstExists: true,
|
|
mode: CopyModeFileToFile,
|
|
},
|
|
{
|
|
srcPath: "foo.txt",
|
|
dstPath: "bar.txt",
|
|
srcMode: os.ModePerm,
|
|
dstExists: true,
|
|
mode: CopyModeFileToFileRename,
|
|
},
|
|
{
|
|
srcPath: "foo",
|
|
dstPath: "foo",
|
|
srcMode: os.ModeDir,
|
|
dstMode: os.ModeDir,
|
|
dstExists: true,
|
|
mode: CopyModeDirToDir,
|
|
},
|
|
{
|
|
srcPath: "foo/",
|
|
dstPath: "foo",
|
|
srcMode: os.ModeDir,
|
|
dstMode: os.ModeDir,
|
|
dstExists: true,
|
|
mode: CopyModeFilesToDir,
|
|
},
|
|
{
|
|
srcPath: "foo",
|
|
dstPath: "foo",
|
|
srcMode: os.ModeDir,
|
|
dstExists: false,
|
|
mode: -1,
|
|
err: ErrDstDirNotExist,
|
|
},
|
|
{
|
|
srcPath: "foo",
|
|
dstPath: "foo",
|
|
srcMode: os.ModeDir,
|
|
dstMode: os.ModePerm,
|
|
dstExists: true,
|
|
mode: -1,
|
|
err: ErrCopyDirToFile,
|
|
},
|
|
}
|
|
|
|
for i, tc := range tests {
|
|
mode, err := copyMode(tc.srcPath, tc.dstPath, tc.srcMode, tc.dstMode, tc.dstExists)
|
|
if mode != tc.mode {
|
|
t.Errorf("[%d] mode: want (%d), got(%d)", i, tc.mode, mode)
|
|
}
|
|
if err != tc.err {
|
|
t.Errorf("[%d] err: want (%s), got(%s)", i, tc.err, err)
|
|
}
|
|
}
|
|
}
|