From 218c4c128c5e0308705ac59ab40780b3d856f155 Mon Sep 17 00:00:00 2001 From: Lode Hoste Date: Sun, 22 Feb 2015 00:35:19 +0100 Subject: [PATCH] Alter files into directories and the other way around --- test/filetype_test.go | 36 +++++++++++++++++++++++++++++++++--- test/util.go | 27 ++++++++++++++++++++++++++- 2 files changed, 59 insertions(+), 4 deletions(-) diff --git a/test/filetype_test.go b/test/filetype_test.go index bdcb173ff..c052628e0 100644 --- a/test/filetype_test.go +++ b/test/filetype_test.go @@ -91,10 +91,22 @@ func testFileTypeChange(t *testing.T) { // A directory that we will replace with a file later + err = os.Mkdir("s1/emptyDirToReplace", 0755) + if err != nil { + t.Fatal(err) + } + + // A directory with files that we will replace with a file later + err = os.Mkdir("s1/dirToReplace", 0755) if err != nil { t.Fatal(err) } + fd, err = os.Create("s1/dirToReplace/emptyFile") + if err != nil { + t.Fatal(err) + } + fd.Close() // Verify that the files and directories sync to the other side @@ -165,15 +177,33 @@ func testFileTypeChange(t *testing.T) { // Replace file with directory - os.RemoveAll("s1/fileToReplace") + err = os.RemoveAll("s1/fileToReplace") + if err != nil { + t.Fatal(err) + } err = os.Mkdir("s1/fileToReplace", 0755) if err != nil { t.Fatal(err) } - // Replace directory with file + // Replace empty directory with file - os.RemoveAll("s1/dirToReplace") + err = os.RemoveAll("s1/emptyDirToReplace") + if err != nil { + t.Fatal(err) + } + fd, err = os.Create("s1/emptyDirToReplace") + if err != nil { + t.Fatal(err) + } + fd.Close() + + // Clear directory and replace with file + + err = os.RemoveAll("s1/dirToReplace") + if err != nil { + t.Fatal(err) + } fd, err = os.Create("s1/dirToReplace") if err != nil { t.Fatal(err) diff --git a/test/util.go b/test/util.go index f3c21dfeb..5c941bc06 100644 --- a/test/util.go +++ b/test/util.go @@ -23,6 +23,7 @@ import ( "errors" "fmt" "io" + "io/ioutil" "log" "math/rand" "os" @@ -113,8 +114,10 @@ func alterFiles(dir string) error { return nil } + info, err = os.Stat(path); if err != nil { - return err + // Something we deleted while walking. Ignore. + return nil } if strings.HasPrefix(filepath.Base(path), "test-") { @@ -166,6 +169,28 @@ func alterFiles(dir string) error { if err != nil { return err } + case r < 0.3 && comps > 2 && rand.Float64() < 0.2: + if !info.Mode().IsRegular() { + err = removeAll(path) + if err != nil { + return err + } + d1 := []byte("I used to be a dir: "+path) + err := ioutil.WriteFile(path, d1, 0644) + if err != nil { + return err + } + } else { + err := os.Remove(path) + if err != nil { + return err + } + err = os.MkdirAll(path, 0755) + if err != nil { + return err + } + generateFiles(path, 100, 20, "../LICENSE") + } case r < 0.3 && comps > 1 && (info.Mode().IsRegular() || rand.Float64() < 0.2): rpath := filepath.Dir(path) if rand.Float64() < 0.2 {