forked from toolshed/abra
		
	
		
			
				
	
	
		
			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)
 | |
| 		}
 | |
| 	}
 | |
| }
 |