fork of https://github.com/sourcegraph/zoekt
1package gitindex
2
3import (
4 "net/url"
5 "path/filepath"
6 "reflect"
7 "testing"
8)
9
10func TestDeleteRepos(t *testing.T) {
11 dir := t.TempDir()
12
13 if err := createSubmoduleRepo(dir); err != nil {
14 t.Error("createSubmoduleRepo", err)
15 }
16
17 reposBefore, err := FindGitRepos(dir)
18 if err != nil {
19 t.Error("FindGitRepos", err)
20 }
21
22 gotBefore := map[string]struct{}{}
23 for _, r := range reposBefore {
24 p, err := filepath.Rel(dir, r)
25 if err != nil {
26 t.Fatalf("Relative: %v", err)
27 }
28
29 gotBefore[p] = struct{}{}
30 }
31
32 wantBefore := map[string]struct{}{
33 "adir/.git": {},
34 "bdir/.git": {},
35 "gerrit.googlesource.com/adir.git": {},
36 "gerrit.googlesource.com/bdir.git": {},
37 "gerrit.googlesource.com/sub/bdir.git": {},
38 "gerrit.googlesource.com/team/scope/repoa.git": {},
39 "gerrit.googlesource.com/team/scope/repob.git": {},
40 }
41
42 if !reflect.DeepEqual(gotBefore, wantBefore) {
43 t.Fatalf("got %v want %v", gotBefore, wantBefore)
44 }
45
46 aURL, _ := url.Parse("http://gerrit.googlesource.com")
47 aURL.Path = "sub"
48 names := map[string]struct{}{
49 "bdir/.git": {},
50 "gerrit.googlesource.com/adir.git": {},
51 }
52 filter, _ := NewFilter("", "")
53
54 err = DeleteRepos(dir, aURL, names, filter)
55 if err != nil {
56 t.Fatalf("DeleteRepos: %T", err)
57 }
58
59 bURL, _ := url.Parse("http://gerrit.googlesource.com")
60 bURL.Path = ""
61 names = map[string]struct{}{
62 "gerrit.googlesource.com/adir.git": {},
63 "gerrit.googlesource.com/bdir.git": {},
64 "gerrit.googlesource.com/team/scope/repob.git": {},
65 }
66
67 err = DeleteRepos(dir, bURL, names, filter)
68 if err != nil {
69 t.Fatalf("DeleteRepos: %T", err)
70 }
71
72 reposAfter, err := FindGitRepos(dir)
73 if err != nil {
74 t.Error("FindGitRepos", err)
75 }
76
77 gotAfter := map[string]struct{}{}
78 for _, r := range reposAfter {
79 p, err := filepath.Rel(dir, r)
80 if err != nil {
81 t.Fatalf("Relative: %v", err)
82 }
83
84 gotAfter[p] = struct{}{}
85 }
86 wantAfter := map[string]struct{}{
87 "adir/.git": {},
88 "bdir/.git": {},
89 "gerrit.googlesource.com/adir.git": {},
90 "gerrit.googlesource.com/bdir.git": {},
91 "gerrit.googlesource.com/team/scope/repob.git": {},
92 }
93
94 if !reflect.DeepEqual(gotAfter, wantAfter) {
95 t.Errorf("got %v want %v", gotAfter, wantAfter)
96 }
97}