@@ -5,120 +5,216 @@ import (
5
5
"log"
6
6
"testing"
7
7
8
+ "github.com/golang/dep/internal/fs"
8
9
"github.com/golang/dep/internal/test"
9
10
)
10
11
11
12
func TestPruneEmptyDirs (t * testing.T ) {
12
13
h := test .NewHelper (t )
13
- h . TempDir ( "baseDir1/empty-dir" )
14
+ defer h . Cleanup ( )
14
15
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 ("." )
29
17
30
18
testcases := []struct {
31
- name string
32
- baseDir string
33
- emptyDirs []string
34
- err bool
19
+ name string
20
+ fs fsTestCase
21
+ err bool
35
22
}{
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
+ },
47
103
}
48
104
49
105
logger := log .New (ioutil .Discard , "" , 0 )
50
106
51
107
for _ , tc := range testcases {
52
108
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 )
54
117
if tc .err && err == nil {
55
118
t .Errorf ("expected an error, got nil" )
56
119
} else if ! tc .err && err != nil {
57
120
t .Errorf ("unexpected error: %s" , err )
58
121
}
59
- for _ , path := range tc .emptyDirs {
60
- h .ShouldNotExist (path )
61
- }
122
+
123
+ tc .fs .after .assert (t )
62
124
})
63
125
}
64
126
}
65
127
66
128
func TestCalculateEmptyDirs (t * testing.T ) {
67
129
h := test .NewHelper (t )
130
+ defer h .Cleanup ()
68
131
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 ("." )
85
133
86
134
testcases := []struct {
87
135
name string
88
- baseDir string
89
- emptyDirs [] string
136
+ fs filesystemState
137
+ emptyDirs int
90
138
err bool
91
139
}{
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
+ },
104
192
}
105
193
106
194
for _ , tc := range testcases {
107
195
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 )
117
203
if tc .err && err == nil {
118
204
t .Errorf ("expected an error, got nil" )
119
205
} else if ! tc .err && err != nil {
120
206
t .Errorf ("unexpected error: %s" , err )
121
207
}
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
+ }
122
218
})
123
219
}
124
220
}
0 commit comments