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