root_test.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package main
  2. import (
  3. "io/ioutil"
  4. "log"
  5. "os"
  6. "path/filepath"
  7. "runtime"
  8. "testing"
  9. "github.com/stretchr/testify/assert"
  10. "gopkg.in/src-d/go-billy.v4/osfs"
  11. "gopkg.in/src-d/go-git.v4/storage/filesystem"
  12. "gopkg.in/src-d/go-git.v4"
  13. )
  14. func TestLoadRepository(t *testing.T) {
  15. repo := loadRepository("https://github.com/src-d/hercules", "", true)
  16. assert.NotNil(t, repo)
  17. log.Println("TestLoadRepository: 1/3")
  18. tempdir, err := ioutil.TempDir("", "hercules-")
  19. assert.Nil(t, err)
  20. if err != nil {
  21. assert.FailNow(t, "ioutil.TempDir")
  22. }
  23. defer os.RemoveAll(tempdir)
  24. backend, err := filesystem.NewStorage(osfs.New(tempdir))
  25. assert.Nil(t, err)
  26. if err != nil {
  27. assert.FailNow(t, "filesystem.NewStorage")
  28. }
  29. cloneOptions := &git.CloneOptions{URL: "https://github.com/src-d/hercules"}
  30. _, err = git.Clone(backend, nil, cloneOptions)
  31. assert.Nil(t, err)
  32. if err != nil {
  33. assert.FailNow(t, "filesystem.NewStorage")
  34. }
  35. repo = loadRepository(tempdir, "", true)
  36. assert.NotNil(t, repo)
  37. log.Println("TestLoadRepository: 2/3")
  38. _, filename, _, _ := runtime.Caller(0)
  39. if runtime.GOOS != "windows" {
  40. // TODO(vmarkovtsev): uncomment once https://github.com/src-d/go-billy-siva/issues/29 is resolved
  41. sivafile := filepath.Join(filepath.Dir(filename), "test_data", "hercules.siva")
  42. repo = loadRepository(sivafile, "", true)
  43. assert.NotNil(t, repo)
  44. log.Println("TestLoadRepository: 3/3")
  45. }
  46. assert.Panics(t, func() { loadRepository("https://github.com/src-d/porn", "", true) })
  47. assert.Panics(t, func() { loadRepository(filepath.Dir(filename), "", true) })
  48. assert.Panics(t, func() { loadRepository("/xxx", "", true) })
  49. }