Skip to content

Commit 85a9c73

Browse files
committed
Fix closing and deleting of files in tests
A few things are fixed by this commit: - check error value returned from `fs.RemoveAll` in `removeAllTestFiles`. - Defer statements are a LIFO, and were out of order in some test functions. - The TestReaddir* funcs were failing to close some file handles. - `findNames` was opening file handles but ignoring them. Bad.
1 parent 90b5a9b commit 85a9c73

File tree

2 files changed

+40
-16
lines changed

2 files changed

+40
-16
lines changed

afero_test.go

Lines changed: 39 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,10 @@ func TestRead0(t *testing.T) {
7878
}
7979

8080
func TestOpenFile(t *testing.T) {
81+
defer removeAllTestFiles(t)
8182
for _, fs := range Fss {
8283
tmp := testDir(fs)
8384
path := filepath.Join(tmp, testName)
84-
defer removeAllTestFiles()
8585

8686
f, err := fs.OpenFile(path, os.O_RDWR|os.O_CREATE, 0600)
8787
if err != nil {
@@ -143,6 +143,7 @@ func TestMemFileRead(t *testing.T) {
143143
}
144144

145145
func TestRename(t *testing.T) {
146+
defer removeAllTestFiles(t)
146147
for _, fs := range Fss {
147148
tDir := testDir(fs)
148149
from := filepath.Join(tDir, "/renamefrom")
@@ -175,7 +176,6 @@ func TestRename(t *testing.T) {
175176
t.Error("File was not renamed to renameto")
176177
}
177178

178-
defer removeAllTestFiles()
179179
_, err = fs.Stat(to)
180180
if err != nil {
181181
t.Errorf("stat %q failed: %v", to, err)
@@ -233,12 +233,11 @@ func TestRemove(t *testing.T) {
233233
}
234234

235235
func TestTruncate(t *testing.T) {
236+
defer removeAllTestFiles(t)
236237
for _, fs := range Fss {
237238
// f := newFile("TestTruncate", fs, t)
238239
f := tmpFile(fs)
239-
240240
defer f.Close()
241-
defer removeAllTestFiles()
242241

243242
checkSize(t, f, 0)
244243
f.Write([]byte("hello, world\n"))
@@ -257,10 +256,10 @@ func TestTruncate(t *testing.T) {
257256
}
258257

259258
func TestSeek(t *testing.T) {
259+
defer removeAllTestFiles(t)
260260
for _, fs := range Fss {
261261
f := tmpFile(fs)
262262
defer f.Close()
263-
defer removeAllTestFiles()
264263

265264
const data = "hello, world\n"
266265
io.WriteString(f, data)
@@ -295,10 +294,10 @@ func TestSeek(t *testing.T) {
295294
}
296295

297296
func TestReadAt(t *testing.T) {
297+
defer removeAllTestFiles(t)
298298
for _, fs := range Fss {
299299
f := tmpFile(fs)
300300
defer f.Close()
301-
defer removeAllTestFiles()
302301

303302
const data = "hello, world\n"
304303
io.WriteString(f, data)
@@ -315,11 +314,11 @@ func TestReadAt(t *testing.T) {
315314
}
316315

317316
func TestWriteAt(t *testing.T) {
317+
defer removeAllTestFiles(t)
318318
for _, fs := range Fss {
319319
// f := newFile("TestWriteAt", fs, t)
320320
f := tmpFile(fs)
321321
defer f.Close()
322-
defer removeAllTestFiles()
323322

324323
const data = "hello, world\n"
325324
io.WriteString(f, data)
@@ -398,14 +397,17 @@ func setupTestFiles(t *testing.T, fs Fs, path string) string {
398397
}
399398

400399
func TestReaddirnames(t *testing.T) {
401-
defer removeAllTestFiles()
400+
defer removeAllTestFiles(t)
402401
for _, fs := range Fss {
403402
testSubDir := setupTestDir(t, fs)
404403
tDir := filepath.Dir(testSubDir)
404+
405405
root, err := fs.Open(tDir)
406406
if err != nil {
407407
t.Fatal(err)
408408
}
409+
defer root.Close()
410+
409411
namesRoot, err := root.Readdirnames(-1)
410412
if err != nil {
411413
t.Fatal(err)
@@ -415,28 +417,35 @@ func TestReaddirnames(t *testing.T) {
415417
if err != nil {
416418
t.Fatal(err)
417419
}
420+
defer sub.Close()
421+
418422
namesSub, err := sub.Readdirnames(-1)
419423
if err != nil {
420424
t.Fatal(err)
421425
}
426+
422427
findNames(fs, t, tDir, testSubDir, namesRoot, namesSub)
423428
}
424429
}
425430

426431
func TestReaddirSimple(t *testing.T) {
427-
defer removeAllTestFiles()
432+
defer removeAllTestFiles(t)
428433
for _, fs := range Fss {
429434
testSubDir := setupTestDir(t, fs)
430435
tDir := filepath.Dir(testSubDir)
436+
431437
root, err := fs.Open(tDir)
432438
if err != nil {
433439
t.Fatal(err)
434440
}
441+
defer root.Close()
442+
435443
rootInfo, err := root.Readdir(1)
436444
if err != nil {
437445
t.Log(myFileInfo(rootInfo))
438446
t.Error(err)
439447
}
448+
440449
rootInfo, err = root.Readdir(5)
441450
if err != io.EOF {
442451
t.Log(myFileInfo(rootInfo))
@@ -447,6 +456,8 @@ func TestReaddirSimple(t *testing.T) {
447456
if err != nil {
448457
t.Fatal(err)
449458
}
459+
defer sub.Close()
460+
450461
subInfo, err := sub.Readdir(5)
451462
if err != nil {
452463
t.Log(myFileInfo(subInfo))
@@ -456,7 +467,7 @@ func TestReaddirSimple(t *testing.T) {
456467
}
457468

458469
func TestReaddir(t *testing.T) {
459-
defer removeAllTestFiles()
470+
defer removeAllTestFiles(t)
460471
for num := 0; num < 6; num++ {
461472
outputs := make([]string, len(Fss))
462473
infos := make([]string, len(Fss))
@@ -467,6 +478,8 @@ func TestReaddir(t *testing.T) {
467478
if err != nil {
468479
t.Fatal(err)
469480
}
481+
defer root.Close()
482+
470483
for j := 0; j < 6; j++ {
471484
info, err := root.Readdir(num)
472485
outputs[i] += fmt.Sprintf("%v Error: %v\n", myFileInfo(info), err)
@@ -506,14 +519,17 @@ func (m myFileInfo) String() string {
506519
}
507520

508521
func TestReaddirAll(t *testing.T) {
509-
defer removeAllTestFiles()
522+
defer removeAllTestFiles(t)
510523
for _, fs := range Fss {
511524
testSubDir := setupTestDir(t, fs)
512525
tDir := filepath.Dir(testSubDir)
526+
513527
root, err := fs.Open(tDir)
514528
if err != nil {
515529
t.Fatal(err)
516530
}
531+
defer root.Close()
532+
517533
rootInfo, err := root.Readdir(-1)
518534
if err != nil {
519535
t.Fatal(err)
@@ -527,6 +543,8 @@ func TestReaddirAll(t *testing.T) {
527543
if err != nil {
528544
t.Fatal(err)
529545
}
546+
defer sub.Close()
547+
530548
subInfo, err := sub.Readdir(-1)
531549
if err != nil {
532550
t.Fatal(err)
@@ -543,10 +561,12 @@ func TestReaddirAll(t *testing.T) {
543561
func findNames(fs Fs, t *testing.T, tDir, testSubDir string, root, sub []string) {
544562
var foundRoot bool
545563
for _, e := range root {
546-
_, err := fs.Open(filepath.Join(tDir, e))
564+
f, err := fs.Open(filepath.Join(tDir, e))
547565
if err != nil {
548566
t.Error("Open", filepath.Join(tDir, e), ":", err)
549567
}
568+
defer f.Close()
569+
550570
if equal(e, "we") {
551571
foundRoot = true
552572
}
@@ -559,10 +579,12 @@ func findNames(fs Fs, t *testing.T, tDir, testSubDir string, root, sub []string)
559579

560580
var found1, found2 bool
561581
for _, e := range sub {
562-
_, err := fs.Open(filepath.Join(testSubDir, e))
582+
f, err := fs.Open(filepath.Join(testSubDir, e))
563583
if err != nil {
564584
t.Error("Open", filepath.Join(testSubDir, e), ":", err)
565585
}
586+
defer f.Close()
587+
566588
if equal(e, "testfile1") {
567589
found1 = true
568590
}
@@ -583,10 +605,12 @@ func findNames(fs Fs, t *testing.T, tDir, testSubDir string, root, sub []string)
583605
}
584606
}
585607

586-
func removeAllTestFiles() {
608+
func removeAllTestFiles(t *testing.T) {
587609
for fs, list := range testRegistry {
588610
for _, path := range list {
589-
fs.RemoveAll(path)
611+
if err := fs.RemoveAll(path); err != nil {
612+
t.Error(fs.Name(), err)
613+
}
590614
}
591615
}
592616
testRegistry = make(map[Fs][]string)

path_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import (
2121
)
2222

2323
func TestWalk(t *testing.T) {
24-
defer removeAllTestFiles()
24+
defer removeAllTestFiles(t)
2525
var testDir string
2626
for i, fs := range Fss {
2727
if i == 0 {

0 commit comments

Comments
 (0)