git-lfs/commands/smudge_test.go

107 lines
3.4 KiB
Go
Raw Normal View History

2014-06-04 18:53:57 +00:00
package commands
import (
"bytes"
"github.com/bmizerany/assert"
"io/ioutil"
"os"
"path/filepath"
"testing"
)
func TestSmudge(t *testing.T) {
repo := NewRepository(t, "empty")
2014-06-04 19:03:47 +00:00
defer repo.Test()
2014-06-04 18:53:57 +00:00
prePushHookFile := filepath.Join(repo.Path, ".git", "hooks", "pre-push")
2014-08-07 14:53:13 +00:00
progressFile := filepath.Join(repo.Path, ".git", "progress")
2014-07-25 17:16:57 +00:00
// simple smudge example
2014-08-07 14:53:13 +00:00
cmd := repo.Command("smudge", "somefile")
cmd.Input = bytes.NewBufferString("[git-media]\nversion=http://git-media.io/v/2\noid=sha256:SOMEOID\nsize=9\n")
2014-06-04 18:53:57 +00:00
cmd.Output = "whatever"
2014-08-07 14:53:13 +00:00
cmd.Env = append(cmd.Env, "GIT_MEDIA_PROGRESS="+progressFile)
2014-06-04 18:53:57 +00:00
cmd.Before(func() {
path := filepath.Join(repo.Path, ".git", "media", "SO", "ME")
file := filepath.Join(path, "SOMEOID")
assert.Equal(t, nil, os.MkdirAll(path, 0755))
assert.Equal(t, nil, ioutil.WriteFile(file, []byte("whatever\n"), 0755))
})
2014-06-04 19:03:47 +00:00
cmd.After(func() {
2014-07-25 17:16:57 +00:00
// assert hook is created
2014-06-04 19:03:47 +00:00
stat, err := os.Stat(prePushHookFile)
assert.Equal(t, nil, err)
assert.Equal(t, false, stat.IsDir())
2014-08-07 14:53:13 +00:00
2014-08-07 17:01:06 +00:00
// assert progress file
2014-08-07 14:53:13 +00:00
progress, err := ioutil.ReadFile(progressFile)
assert.Equal(t, nil, err)
progLines := bytes.Split(progress, []byte("\n"))
2014-08-07 15:56:55 +00:00
assert.Equal(t, 3, len(progLines))
assert.Equal(t, "smudge 1/1 0/0 somefile", string(progLines[0]))
assert.Equal(t, "smudge 1/1 9/9 somefile", string(progLines[1]))
2014-08-07 15:56:55 +00:00
assert.Equal(t, "", string(progLines[2]))
2014-06-04 19:03:47 +00:00
})
2014-07-25 17:16:57 +00:00
// smudge with custom hook
cmd = repo.Command("smudge")
cmd.Input = bytes.NewBufferString("# git-media\nSOMEOID")
cmd.Output = "whatever"
customHook := []byte("echo 'yo'")
cmd.Before(func() {
path := filepath.Join(repo.Path, ".git", "media", "SO", "ME")
file := filepath.Join(path, "SOMEOID")
assert.Equal(t, nil, os.MkdirAll(path, 0755))
assert.Equal(t, nil, ioutil.WriteFile(file, []byte("whatever\n"), 0755))
assert.Equal(t, nil, ioutil.WriteFile(prePushHookFile, customHook, 0755))
})
cmd.After(func() {
2014-07-25 17:16:57 +00:00
// assert custom hook is not overwritten
by, err := ioutil.ReadFile(prePushHookFile)
assert.Equal(t, nil, err)
assert.Equal(t, string(customHook), string(by))
})
2014-06-04 18:53:57 +00:00
}
2014-07-25 17:16:57 +00:00
func TestSmudgeInfo(t *testing.T) {
repo := NewRepository(t, "empty")
defer repo.Test()
mediaPath := filepath.Join(repo.Path, ".git", "media", "SO", "ME")
mediaFile := filepath.Join(mediaPath, "SOMEOID")
// smudge --info with old pointer format, without local file
cmd := repo.Command("smudge", "--info")
cmd.Input = bytes.NewBufferString("# git-media\nSOMEOID")
cmd.Output = "0 --"
// smudge --info with old pointer format, with local file
cmd = repo.Command("smudge", "--info")
cmd.Input = bytes.NewBufferString("# git-media\nSOMEOID")
2014-07-25 17:26:01 +00:00
cmd.Output = "9 " + mediaFile
2014-07-25 17:16:57 +00:00
cmd.Before(func() {
assert.Equal(t, nil, os.MkdirAll(mediaPath, 0755))
assert.Equal(t, nil, ioutil.WriteFile(mediaFile, []byte("whatever\n"), 0755))
})
// smudge --info with ini pointer format, without local file
cmd = repo.Command("smudge", "--info")
cmd.Input = bytes.NewBufferString("[git-media]\nversion=http://git-media.io/v/2\noid=sha256:SOMEOID\nsize=123\n")
cmd.Output = "123 --"
// smudge --info with ini pointer format, with local file
cmd = repo.Command("smudge", "--info")
cmd.Input = bytes.NewBufferString("[git-media]\nversion=http://git-media.io/v/2\noid=sha256:SOMEOID\nsize=123\n")
2014-07-25 17:26:01 +00:00
cmd.Output = "9 " + mediaFile
2014-07-25 17:16:57 +00:00
cmd.Before(func() {
assert.Equal(t, nil, os.MkdirAll(mediaPath, 0755))
assert.Equal(t, nil, ioutil.WriteFile(mediaFile, []byte("whatever\n"), 0755))
})
}