github.com/ivotron/vio@v0.1.1-0.20160328072646-778e014d4dee/vio_test.go (about) 1 package vio 2 3 import ( 4 "fmt" 5 "io/ioutil" 6 "os" 7 "strconv" 8 "testing" 9 "time" 10 11 "gopkg.in/ini.v1" 12 13 "github.com/stretchr/testify/assert" 14 ) 15 16 func createAndSeedTestRepo(t *testing.T, repoPath string, filesToAdd []string) { 17 _, err := runCmd(repoPath, "git init") 18 assert.Nil(t, err) 19 20 err = ioutil.WriteFile(repoPath+"/README", []byte("foo\n"), 0644) 21 assert.Nil(t, err) 22 23 err = ioutil.WriteFile(repoPath+"/.gitignore", []byte(".snapshots\n"), 0644) 24 assert.Nil(t, err) 25 26 _, err = runCmd(repoPath, "git add *") 27 assert.Nil(t, err) 28 29 for _, file := range filesToAdd { 30 _, err = runCmd(repoPath, "git add "+file) 31 assert.Nil(t, err) 32 } 33 34 _, err = runCmd(repoPath, "git commit -m yeah") 35 assert.Nil(t, err) 36 37 return 38 } 39 40 func testCmdInitPosix(t *testing.T, snapsPath string) { 41 err := Init(snapsPath, "posix") 42 assert.Nil(t, err) 43 _, err = os.Stat(".vioconfig") 44 assert.Nil(t, err) 45 cfg, err := ini.Load(".vioconfig") 46 assert.Nil(t, err) 47 assert.NotNil(t, cfg) 48 assert.Equal(t, cfg.Section("").Key("snapshots_path").String(), snapsPath) 49 } 50 51 func TestCmdInitPosixRelative(t *testing.T) { 52 path, err := ioutil.TempDir("", "testing") 53 assert.Nil(t, err) 54 assert.Nil(t, os.Chdir(path)) 55 createAndSeedTestRepo(t, path, []string{}) 56 testCmdInitPosix(t, ".snapshots") 57 } 58 func TestCmdInitPosixAbsolute(t *testing.T) { 59 path, err := ioutil.TempDir("", "testing") 60 assert.Nil(t, err) 61 assert.Nil(t, os.Chdir(path)) 62 createAndSeedTestRepo(t, path, []string{}) 63 testCmdInitPosix(t, path+"/.snapshots") 64 } 65 func TestCmdCommitPosix(t *testing.T) { 66 path, err := ioutil.TempDir("", "testing") 67 assert.Nil(t, os.Chdir(path)) 68 createAndSeedTestRepo(t, path, []string{}) 69 err = Init(".snapshots", "posix") 70 assert.Nil(t, err) 71 err = ioutil.WriteFile(path+"/bar", []byte("yeah"), 0644) 72 assert.Nil(t, err) 73 err = ioutil.WriteFile(path+"/toz", []byte("ok"), 0644) 74 assert.Nil(t, err) 75 err = Commit("msg", "{}") 76 assert.Nil(t, err) 77 } 78 func TestCmdCommitPosixWithMeta(t *testing.T) { 79 path, err := ioutil.TempDir("", "testing") 80 assert.Nil(t, os.Chdir(path)) 81 createAndSeedTestRepo(t, path, []string{}) 82 err = Init(".snapshots", "posix") 83 assert.Nil(t, err) 84 err = ioutil.WriteFile(path+"/bar", []byte("yeah"), 0644) 85 assert.Nil(t, err) 86 err = ioutil.WriteFile(path+"/toz", []byte("ok"), 0644) 87 assert.Nil(t, err) 88 err = Commit("commit message", "{\"foo\": \"bar\", \"hello\":\"goodbye\"}") 89 assert.Nil(t, err) 90 } 91 92 func TestVersionToString(t *testing.T) { 93 v := NewVersion("1234567890") 94 assert.NotNil(t, v) 95 assert.Equal(t, fmt.Sprintf("%v", v), "1234567890#"+fmt.Sprint(v.timestamp.Unix())+",{}") 96 97 ts_str := "1405544146" 98 v = NewVersion("1234567890#" + ts_str) 99 i, err := strconv.ParseInt(ts_str, 10, 64) 100 assert.Nil(t, err) 101 ts := time.Unix(i, 0) 102 assert.Nil(t, err) 103 assert.NotNil(t, ts) 104 assert.NotNil(t, v) 105 assert.Equal(t, fmt.Sprintf("%v", v), "1234567890#"+ts_str+",{}") 106 } 107 108 func TestContainsVersion(t *testing.T) { 109 v1 := NewVersion("1234567890#1405544146") 110 assert.NotNil(t, v1) 111 v2 := NewVersion("5713943128#2435869343") 112 assert.NotNil(t, v2) 113 114 var vs []version 115 assert.False(t, ContainsVersion(vs, v1)) 116 vs = append(vs, *NewVersion("1234567890#1405544146")) 117 assert.Equal(t, len(vs), 1) 118 assert.True(t, ContainsVersion(vs, v1)) 119 assert.False(t, ContainsVersion(vs, v2)) 120 vs = append(vs, *NewVersion("5713943128#2435869343")) 121 assert.True(t, ContainsVersion(vs, v1)) 122 assert.True(t, ContainsVersion(vs, v2)) 123 } 124 125 func TestVersionMeta(t *testing.T) { 126 v := NewVersion("1234567890") 127 assert.NotNil(t, v) 128 assert.Equal(t, v.meta, map[string]string{}) 129 130 meta := map[string]string{"foo": "bar", "hello": "goodbye"} 131 v = NewVersionWithMeta("1234567890", meta) 132 assert.NotNil(t, v) 133 assert.Equal(t, v.meta, meta) 134 }