git_test.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package utils
  2. import (
  3. "fmt"
  4. "net/http"
  5. "net/http/httptest"
  6. "net/url"
  7. "reflect"
  8. "testing"
  9. )
  10. func TestCloneArgsSmartHttp(t *testing.T) {
  11. mux := http.NewServeMux()
  12. server := httptest.NewServer(mux)
  13. serverURL, _ := url.Parse(server.URL)
  14. serverURL.Path = "/repo.git"
  15. gitURL := serverURL.String()
  16. mux.HandleFunc("/repo.git/info/refs", func(w http.ResponseWriter, r *http.Request) {
  17. q := r.URL.Query().Get("service")
  18. w.Header().Set("Content-Type", fmt.Sprintf("application/x-%s-advertisement", q))
  19. })
  20. args := cloneArgs(gitURL, "/tmp")
  21. exp := []string{"clone", "--recursive", "--depth", "1", gitURL, "/tmp"}
  22. if !reflect.DeepEqual(args, exp) {
  23. t.Fatalf("Expected %v, got %v", exp, args)
  24. }
  25. }
  26. func TestCloneArgsDumbHttp(t *testing.T) {
  27. mux := http.NewServeMux()
  28. server := httptest.NewServer(mux)
  29. serverURL, _ := url.Parse(server.URL)
  30. serverURL.Path = "/repo.git"
  31. gitURL := serverURL.String()
  32. mux.HandleFunc("/repo.git/info/refs", func(w http.ResponseWriter, r *http.Request) {
  33. w.Header().Set("Content-Type", "text/plain")
  34. })
  35. args := cloneArgs(gitURL, "/tmp")
  36. exp := []string{"clone", "--recursive", gitURL, "/tmp"}
  37. if !reflect.DeepEqual(args, exp) {
  38. t.Fatalf("Expected %v, got %v", exp, args)
  39. }
  40. }
  41. func TestCloneArgsGit(t *testing.T) {
  42. args := cloneArgs("git://github.com/docker/docker", "/tmp")
  43. exp := []string{"clone", "--recursive", "--depth", "1", "git://github.com/docker/docker", "/tmp"}
  44. if !reflect.DeepEqual(args, exp) {
  45. t.Fatalf("Expected %v, got %v", exp, args)
  46. }
  47. }