Merge pull request #36 from moorereason/iss35

Fix closing and deleting of files in tests
diff --git a/afero_test.go b/afero_test.go
index acca837..df05fb7 100644
--- a/afero_test.go
+++ b/afero_test.go
@@ -78,10 +78,10 @@
 }
 
 func TestOpenFile(t *testing.T) {
+	defer removeAllTestFiles(t)
 	for _, fs := range Fss {
 		tmp := testDir(fs)
 		path := filepath.Join(tmp, testName)
-		defer removeAllTestFiles()
 
 		f, err := fs.OpenFile(path, os.O_RDWR|os.O_CREATE, 0600)
 		if err != nil {
@@ -143,6 +143,7 @@
 }
 
 func TestRename(t *testing.T) {
+	defer removeAllTestFiles(t)
 	for _, fs := range Fss {
 		tDir := testDir(fs)
 		from := filepath.Join(tDir, "/renamefrom")
@@ -175,7 +176,6 @@
 			t.Error("File was not renamed to renameto")
 		}
 
-		defer removeAllTestFiles()
 		_, err = fs.Stat(to)
 		if err != nil {
 			t.Errorf("stat %q failed: %v", to, err)
@@ -233,12 +233,11 @@
 }
 
 func TestTruncate(t *testing.T) {
+	defer removeAllTestFiles(t)
 	for _, fs := range Fss {
 		// f := newFile("TestTruncate", fs, t)
 		f := tmpFile(fs)
-
 		defer f.Close()
-		defer removeAllTestFiles()
 
 		checkSize(t, f, 0)
 		f.Write([]byte("hello, world\n"))
@@ -257,10 +256,10 @@
 }
 
 func TestSeek(t *testing.T) {
+	defer removeAllTestFiles(t)
 	for _, fs := range Fss {
 		f := tmpFile(fs)
 		defer f.Close()
-		defer removeAllTestFiles()
 
 		const data = "hello, world\n"
 		io.WriteString(f, data)
@@ -295,10 +294,10 @@
 }
 
 func TestReadAt(t *testing.T) {
+	defer removeAllTestFiles(t)
 	for _, fs := range Fss {
 		f := tmpFile(fs)
 		defer f.Close()
-		defer removeAllTestFiles()
 
 		const data = "hello, world\n"
 		io.WriteString(f, data)
@@ -315,11 +314,11 @@
 }
 
 func TestWriteAt(t *testing.T) {
+	defer removeAllTestFiles(t)
 	for _, fs := range Fss {
 		// f := newFile("TestWriteAt", fs, t)
 		f := tmpFile(fs)
 		defer f.Close()
-		defer removeAllTestFiles()
 
 		const data = "hello, world\n"
 		io.WriteString(f, data)
@@ -398,14 +397,17 @@
 }
 
 func TestReaddirnames(t *testing.T) {
-	defer removeAllTestFiles()
+	defer removeAllTestFiles(t)
 	for _, fs := range Fss {
 		testSubDir := setupTestDir(t, fs)
 		tDir := filepath.Dir(testSubDir)
+
 		root, err := fs.Open(tDir)
 		if err != nil {
 			t.Fatal(err)
 		}
+		defer root.Close()
+
 		namesRoot, err := root.Readdirnames(-1)
 		if err != nil {
 			t.Fatal(err)
@@ -415,28 +417,35 @@
 		if err != nil {
 			t.Fatal(err)
 		}
+		defer sub.Close()
+
 		namesSub, err := sub.Readdirnames(-1)
 		if err != nil {
 			t.Fatal(err)
 		}
+
 		findNames(fs, t, tDir, testSubDir, namesRoot, namesSub)
 	}
 }
 
 func TestReaddirSimple(t *testing.T) {
-	defer removeAllTestFiles()
+	defer removeAllTestFiles(t)
 	for _, fs := range Fss {
 		testSubDir := setupTestDir(t, fs)
 		tDir := filepath.Dir(testSubDir)
+
 		root, err := fs.Open(tDir)
 		if err != nil {
 			t.Fatal(err)
 		}
+		defer root.Close()
+
 		rootInfo, err := root.Readdir(1)
 		if err != nil {
 			t.Log(myFileInfo(rootInfo))
 			t.Error(err)
 		}
+
 		rootInfo, err = root.Readdir(5)
 		if err != io.EOF {
 			t.Log(myFileInfo(rootInfo))
@@ -447,6 +456,8 @@
 		if err != nil {
 			t.Fatal(err)
 		}
+		defer sub.Close()
+
 		subInfo, err := sub.Readdir(5)
 		if err != nil {
 			t.Log(myFileInfo(subInfo))
@@ -456,7 +467,7 @@
 }
 
 func TestReaddir(t *testing.T) {
-	defer removeAllTestFiles()
+	defer removeAllTestFiles(t)
 	for num := 0; num < 6; num++ {
 		outputs := make([]string, len(Fss))
 		infos := make([]string, len(Fss))
@@ -467,6 +478,8 @@
 			if err != nil {
 				t.Fatal(err)
 			}
+			defer root.Close()
+
 			for j := 0; j < 6; j++ {
 				info, err := root.Readdir(num)
 				outputs[i] += fmt.Sprintf("%v  Error: %v\n", myFileInfo(info), err)
@@ -506,14 +519,17 @@
 }
 
 func TestReaddirAll(t *testing.T) {
-	defer removeAllTestFiles()
+	defer removeAllTestFiles(t)
 	for _, fs := range Fss {
 		testSubDir := setupTestDir(t, fs)
 		tDir := filepath.Dir(testSubDir)
+
 		root, err := fs.Open(tDir)
 		if err != nil {
 			t.Fatal(err)
 		}
+		defer root.Close()
+
 		rootInfo, err := root.Readdir(-1)
 		if err != nil {
 			t.Fatal(err)
@@ -527,6 +543,8 @@
 		if err != nil {
 			t.Fatal(err)
 		}
+		defer sub.Close()
+
 		subInfo, err := sub.Readdir(-1)
 		if err != nil {
 			t.Fatal(err)
@@ -543,10 +561,12 @@
 func findNames(fs Fs, t *testing.T, tDir, testSubDir string, root, sub []string) {
 	var foundRoot bool
 	for _, e := range root {
-		_, err := fs.Open(filepath.Join(tDir, e))
+		f, err := fs.Open(filepath.Join(tDir, e))
 		if err != nil {
 			t.Error("Open", filepath.Join(tDir, e), ":", err)
 		}
+		defer f.Close()
+
 		if equal(e, "we") {
 			foundRoot = true
 		}
@@ -559,10 +579,12 @@
 
 	var found1, found2 bool
 	for _, e := range sub {
-		_, err := fs.Open(filepath.Join(testSubDir, e))
+		f, err := fs.Open(filepath.Join(testSubDir, e))
 		if err != nil {
 			t.Error("Open", filepath.Join(testSubDir, e), ":", err)
 		}
+		defer f.Close()
+
 		if equal(e, "testfile1") {
 			found1 = true
 		}
@@ -583,10 +605,12 @@
 	}
 }
 
-func removeAllTestFiles() {
+func removeAllTestFiles(t *testing.T) {
 	for fs, list := range testRegistry {
 		for _, path := range list {
-			fs.RemoveAll(path)
+			if err := fs.RemoveAll(path); err != nil {
+				t.Error(fs.Name(), err)
+			}
 		}
 	}
 	testRegistry = make(map[Fs][]string)
diff --git a/path_test.go b/path_test.go
index b3c0417..104a6bc 100644
--- a/path_test.go
+++ b/path_test.go
@@ -21,7 +21,7 @@
 )
 
 func TestWalk(t *testing.T) {
-	defer removeAllTestFiles()
+	defer removeAllTestFiles(t)
 	var testDir string
 	for i, fs := range Fss {
 		if i == 0 {