Skip to content
This repository was archived by the owner on Sep 9, 2020. It is now read-only.

Commit b306f42

Browse files
committed
internal/gps: update prune tests
Signed-off-by: Ibrahim AshShohail <[email protected]>
1 parent 7a92654 commit b306f42

File tree

1 file changed

+169
-73
lines changed

1 file changed

+169
-73
lines changed

internal/gps/prune_test.go

+169-73
Original file line numberDiff line numberDiff line change
@@ -5,120 +5,216 @@ import (
55
"log"
66
"testing"
77

8+
"github.com/golang/dep/internal/fs"
89
"github.com/golang/dep/internal/test"
910
)
1011

1112
func TestPruneEmptyDirs(t *testing.T) {
1213
h := test.NewHelper(t)
13-
h.TempDir("baseDir1/empty-dir")
14+
defer h.Cleanup()
1415

15-
h.TempDir("baseDir2/non-empty-dir")
16-
h.TempFile("baseDir2/non-empty-dir/file", "")
17-
18-
h.TempDir("baseDir3/nested-empty-dirs")
19-
h.TempDir("baseDir3/nested-empty-dirs/empty-dir1")
20-
h.TempDir("baseDir3/nested-empty-dirs/empty-dir2")
21-
22-
h.TempDir("baseDir4")
23-
h.TempDir("baseDir4/empty-dir1")
24-
h.TempDir("baseDir4/empty-dir2")
25-
h.TempDir("baseDir4/non-empty-dir1")
26-
h.TempFile("baseDir4/non-empty-dir1/file", "")
27-
h.TempDir("baseDir4/non-empty-dir2")
28-
h.TempFile("baseDir4/non-empty-dir2/file", "")
16+
h.TempDir(".")
2917

3018
testcases := []struct {
31-
name string
32-
baseDir string
33-
emptyDirs []string
34-
err bool
19+
name string
20+
fs fsTestCase
21+
err bool
3522
}{
36-
{"1 empty dir", h.Path("baseDir1"), []string{
37-
h.Path("baseDir1/empty-dir"),
38-
}, false},
39-
{"1 non-empty dir", h.Path("baseDir2"), []string{}, false},
40-
{"nested empty dirs", h.Path("baseDir3"), []string{
41-
h.Path("baseDir3/nested-empty-dirs/empty-dir1"),
42-
h.Path("baseDir3/nested-empty-dirs/empty-dir2"),
43-
}, false},
44-
{"mixed dirs", h.Path("baseDir4"), []string{
45-
h.Path("baseDir4/empty-dir1"),
46-
}, false},
23+
{
24+
"empty-dir",
25+
fsTestCase{
26+
before: filesystemState{
27+
dirs: []fsPath{
28+
{"dir"},
29+
},
30+
},
31+
after: filesystemState{},
32+
},
33+
false,
34+
},
35+
{
36+
"non-empty-dir",
37+
fsTestCase{
38+
before: filesystemState{
39+
dirs: []fsPath{
40+
{"dir"},
41+
},
42+
files: []fsPath{
43+
{"dir", "file"},
44+
},
45+
},
46+
after: filesystemState{
47+
dirs: []fsPath{
48+
{"dir"},
49+
},
50+
files: []fsPath{
51+
{"dir", "file"},
52+
},
53+
},
54+
},
55+
false,
56+
},
57+
{
58+
"nested-empty-dirs",
59+
fsTestCase{
60+
before: filesystemState{
61+
dirs: []fsPath{
62+
{"dirs"},
63+
{"dirs", "dir1"},
64+
{"dirs", "dir2"},
65+
},
66+
},
67+
after: filesystemState{
68+
dirs: []fsPath{
69+
{"dirs"},
70+
},
71+
},
72+
},
73+
false,
74+
},
75+
{
76+
"mixed-dirs",
77+
fsTestCase{
78+
before: filesystemState{
79+
dirs: []fsPath{
80+
{"dir1"},
81+
{"dir2"},
82+
{"dir3"},
83+
{"dir4"},
84+
},
85+
files: []fsPath{
86+
{"dir3", "file"},
87+
{"dir4", "file"},
88+
},
89+
},
90+
after: filesystemState{
91+
dirs: []fsPath{
92+
{"dir3"},
93+
{"dir4"},
94+
},
95+
files: []fsPath{
96+
{"dir3", "file"},
97+
{"dir4", "file"},
98+
},
99+
},
100+
},
101+
false,
102+
},
47103
}
48104

49105
logger := log.New(ioutil.Discard, "", 0)
50106

51107
for _, tc := range testcases {
52108
t.Run(tc.name, func(t *testing.T) {
53-
err := pruneEmptyDirs(tc.baseDir, logger)
109+
h.TempDir(tc.name)
110+
baseDir := h.Path(tc.name)
111+
tc.fs.before.root = baseDir
112+
tc.fs.after.root = baseDir
113+
114+
tc.fs.before.setup(t)
115+
116+
err := pruneEmptyDirs(baseDir, logger)
54117
if tc.err && err == nil {
55118
t.Errorf("expected an error, got nil")
56119
} else if !tc.err && err != nil {
57120
t.Errorf("unexpected error: %s", err)
58121
}
59-
for _, path := range tc.emptyDirs {
60-
h.ShouldNotExist(path)
61-
}
122+
123+
tc.fs.after.assert(t)
62124
})
63125
}
64126
}
65127

66128
func TestCalculateEmptyDirs(t *testing.T) {
67129
h := test.NewHelper(t)
130+
defer h.Cleanup()
68131

69-
h.TempDir("baseDir1/empty-dir")
70-
71-
h.TempDir("baseDir2/non-empty-dir")
72-
h.TempFile("baseDir2/non-empty-dir/file", "")
73-
74-
h.TempDir("baseDir3/nested-empty-dirs")
75-
h.TempDir("baseDir3/nested-empty-dirs/empty-dir1")
76-
h.TempDir("baseDir3/nested-empty-dirs/empty-dir2")
77-
78-
h.TempDir("baseDir4")
79-
h.TempDir("baseDir4/empty-dir1")
80-
h.TempDir("baseDir4/empty-dir2")
81-
h.TempDir("baseDir4/non-empty-dir1")
82-
h.TempFile("baseDir4/non-empty-dir1/file", "")
83-
h.TempDir("baseDir4/non-empty-dir2")
84-
h.TempFile("baseDir4/non-empty-dir2/file", "")
132+
h.TempDir(".")
85133

86134
testcases := []struct {
87135
name string
88-
baseDir string
89-
emptyDirs []string
136+
fs filesystemState
137+
emptyDirs int
90138
err bool
91139
}{
92-
{"1 empty dir", h.Path("baseDir1"), []string{
93-
h.Path("baseDir1/empty-dir"),
94-
}, false},
95-
{"1 non-empty dir", h.Path("baseDir2"), []string{}, false},
96-
{"nested empty dirs", h.Path("baseDir3"), []string{
97-
h.Path("baseDir3/nested-empty-dirs/empty-dir1"),
98-
h.Path("baseDir3/nested-empty-dirs/empty-dir2"),
99-
}, false},
100-
{"mixed dirs", h.Path("baseDir4"), []string{
101-
h.Path("baseDir4/empty-dir1"),
102-
h.Path("baseDir4/empty-dir2"),
103-
}, false},
140+
{
141+
"empty-dir",
142+
filesystemState{
143+
dirs: []fsPath{
144+
{"dir"},
145+
},
146+
},
147+
1,
148+
false,
149+
},
150+
{
151+
"non-empty-dir",
152+
filesystemState{
153+
dirs: []fsPath{
154+
{"dir"},
155+
},
156+
files: []fsPath{
157+
{"dir", "file"},
158+
},
159+
},
160+
0,
161+
false,
162+
},
163+
{
164+
"nested-empty-dirs",
165+
filesystemState{
166+
dirs: []fsPath{
167+
{"dirs"},
168+
{"dirs", "dir1"},
169+
{"dirs", "dir2"},
170+
},
171+
},
172+
2,
173+
false,
174+
},
175+
{
176+
"mixed-dirs",
177+
filesystemState{
178+
dirs: []fsPath{
179+
{"dir1"},
180+
{"dir2"},
181+
{"dir3"},
182+
{"dir4"},
183+
},
184+
files: []fsPath{
185+
{"dir3", "file"},
186+
{"dir4", "file"},
187+
},
188+
},
189+
2,
190+
false,
191+
},
104192
}
105193

106194
for _, tc := range testcases {
107195
t.Run(tc.name, func(t *testing.T) {
108-
emptyDirs, err := calculateEmptyDirs(tc.baseDir)
109-
if len(emptyDirs) != len(tc.emptyDirs) {
110-
t.Fatalf("expected %d paths, got %d", len(tc.emptyDirs), len(emptyDirs))
111-
}
112-
for i := range tc.emptyDirs {
113-
if tc.emptyDirs[i] != emptyDirs[i] {
114-
t.Fatalf("expected %s to exists in the list, got %s", tc.emptyDirs[i], emptyDirs)
115-
}
116-
}
196+
h.TempDir(tc.name)
197+
baseDir := h.Path(tc.name)
198+
199+
tc.fs.root = baseDir
200+
tc.fs.setup(t)
201+
202+
emptyDirs, err := calculateEmptyDirs(baseDir)
117203
if tc.err && err == nil {
118204
t.Errorf("expected an error, got nil")
119205
} else if !tc.err && err != nil {
120206
t.Errorf("unexpected error: %s", err)
121207
}
208+
if len(emptyDirs) != tc.emptyDirs {
209+
t.Fatalf("expected %d paths, got %d", tc.emptyDirs, len(emptyDirs))
210+
}
211+
for _, dir := range emptyDirs {
212+
if nonEmpty, err := fs.IsNonEmptyDir(dir); err != nil {
213+
t.Fatalf("unexpected error: %s", err)
214+
} else if nonEmpty {
215+
t.Fatalf("expected %s to be empty, but it wasn't", dir)
216+
}
217+
}
122218
})
123219
}
124220
}

0 commit comments

Comments
 (0)