Added test cases for `Mkdir` & `MkdirAll` to cover empty folder names - afero - [fork] go afero port for 9front
 (HTM) git clone git@git.drkhsh.at/afero.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 13ee679c8e71e96f2938b758fc81a09fe59fc569
 (DIR) parent 78acf3b074293cfcf0b7b9a1a34cb2176a34b105
 (HTM) Author: VOvchinnikov <vasily@remerge.io>
       Date:   Thu,  5 Aug 2021 18:24:24 +0200
       
       Added test cases for `Mkdir` & `MkdirAll` to cover empty folder names
       
       Diffstat:
         M gcs_mocks.go                        |       7 +++++++
         M gcs_test.go                         |     144 ++++++++++++++++++-------------
       
       2 files changed, 89 insertions(+), 62 deletions(-)
       ---
 (DIR) diff --git a/gcs_mocks.go b/gcs_mocks.go
       @@ -146,6 +146,10 @@ type writerMock struct {
        }
        
        func (w *writerMock) Write(p []byte) (n int, err error) {
       +        if w.name == "" {
       +                return 0, gcsfs.ErrEmptyObjectName
       +        }
       +
                if w.file == nil {
                        w.file, err = w.fs.Create(w.name)
                        if err != nil {
       @@ -157,6 +161,9 @@ func (w *writerMock) Write(p []byte) (n int, err error) {
        }
        
        func (w *writerMock) Close() error {
       +        if w.name == "" {
       +                return gcsfs.ErrEmptyObjectName
       +        }
                if w.file == nil {
                        var err error
                        if strings.HasSuffix(w.name, "/") {
 (DIR) diff --git a/gcs_test.go b/gcs_test.go
       @@ -712,76 +712,96 @@ func TestGcsGlob(t *testing.T) {
        }
        
        func TestGcsMkdir(t *testing.T) {
       -        dirName := filepath.Join(bucketName, "a-test-dir")
       -        var err error
       +        t.Run("empty", func(t *testing.T) {
       +                emptyDirName := bucketName
        
       -        err = gcsAfs.Mkdir(dirName, 0755)
       -        if err != nil {
       -                t.Fatal("failed to create a folder with error", err)
       -        }
       +                err := gcsAfs.Mkdir(emptyDirName, 0755)
       +                if err == nil {
       +                        t.Fatal("did not fail upon creation of an empty folder")
       +                }
       +        })
       +        t.Run("success", func(t *testing.T) {
       +                dirName := filepath.Join(bucketName, "a-test-dir")
       +                var err error
        
       -        info, err := gcsAfs.Stat(dirName)
       -        if err != nil {
       -                t.Fatal("failed to get info", err)
       -        }
       -        if !info.IsDir() {
       -                t.Fatalf("%s: not a dir", dirName)
       -        }
       -        if !info.Mode().IsDir() {
       -                t.Errorf("%s: mode is not directory", dirName)
       -        }
       +                err = gcsAfs.Mkdir(dirName, 0755)
       +                if err != nil {
       +                        t.Fatal("failed to create a folder with error", err)
       +                }
        
       -        if info.Mode() != os.ModeDir|0755 {
       -                t.Errorf("%s: wrong permissions, expected drwxr-xr-x, got %s", dirName, info.Mode())
       -        }
       +                info, err := gcsAfs.Stat(dirName)
       +                if err != nil {
       +                        t.Fatal("failed to get info", err)
       +                }
       +                if !info.IsDir() {
       +                        t.Fatalf("%s: not a dir", dirName)
       +                }
       +                if !info.Mode().IsDir() {
       +                        t.Errorf("%s: mode is not directory", dirName)
       +                }
        
       -        err = gcsAfs.Remove(dirName)
       -        if err != nil {
       -                t.Fatalf("could not delete the folder %s after the test with error: %s", dirName, err)
       -        }
       +                if info.Mode() != os.ModeDir|0755 {
       +                        t.Errorf("%s: wrong permissions, expected drwxr-xr-x, got %s", dirName, info.Mode())
       +                }
       +
       +                err = gcsAfs.Remove(dirName)
       +                if err != nil {
       +                        t.Fatalf("could not delete the folder %s after the test with error: %s", dirName, err)
       +                }
       +        })
        }
        
        func TestGcsMkdirAll(t *testing.T) {
       -        dirName := filepath.Join(bucketName, "a/b/c")
       +        t.Run("empty", func(t *testing.T) {
       +                emptyDirName := bucketName
        
       -        err := gcsAfs.MkdirAll(dirName, 0755)
       -        if err != nil {
       -                t.Fatal(err)
       -        }
       +                err := gcsAfs.MkdirAll(emptyDirName, 0755)
       +                if err == nil {
       +                        t.Fatal("did not fail upon creation of an empty folder")
       +                }
       +        })
       +        t.Run("success", func(t *testing.T) {
       +                dirName := filepath.Join(bucketName, "a/b/c")
        
       -        info, err := gcsAfs.Stat(filepath.Join(bucketName, "a"))
       -        if err != nil {
       -                t.Fatal(err)
       -        }
       -        if !info.Mode().IsDir() {
       -                t.Errorf("%s: mode is not directory", filepath.Join(bucketName, "a"))
       -        }
       -        if info.Mode() != os.ModeDir|0755 {
       -                t.Errorf("%s: wrong permissions, expected drwxr-xr-x, got %s", filepath.Join(bucketName, "a"), info.Mode())
       -        }
       -        info, err = gcsAfs.Stat(filepath.Join(bucketName, "a/b"))
       -        if err != nil {
       -                t.Fatal(err)
       -        }
       -        if !info.Mode().IsDir() {
       -                t.Errorf("%s: mode is not directory", filepath.Join(bucketName, "a/b"))
       -        }
       -        if info.Mode() != os.ModeDir|0755 {
       -                t.Errorf("%s: wrong permissions, expected drwxr-xr-x, got %s", filepath.Join(bucketName, "a/b"), info.Mode())
       -        }
       -        info, err = gcsAfs.Stat(dirName)
       -        if err != nil {
       -                t.Fatal(err)
       -        }
       -        if !info.Mode().IsDir() {
       -                t.Errorf("%s: mode is not directory", dirName)
       -        }
       -        if info.Mode() != os.ModeDir|0755 {
       -                t.Errorf("%s: wrong permissions, expected drwxr-xr-x, got %s", dirName, info.Mode())
       -        }
       +                err := gcsAfs.MkdirAll(dirName, 0755)
       +                if err != nil {
       +                        t.Fatal(err)
       +                }
        
       -        err = gcsAfs.RemoveAll(filepath.Join(bucketName, "a"))
       -        if err != nil {
       -                t.Fatalf("failed to remove the folder %s with error: %s", filepath.Join(bucketName, "a"), err)
       -        }
       +                info, err := gcsAfs.Stat(filepath.Join(bucketName, "a"))
       +                if err != nil {
       +                        t.Fatal(err)
       +                }
       +                if !info.Mode().IsDir() {
       +                        t.Errorf("%s: mode is not directory", filepath.Join(bucketName, "a"))
       +                }
       +                if info.Mode() != os.ModeDir|0755 {
       +                        t.Errorf("%s: wrong permissions, expected drwxr-xr-x, got %s", filepath.Join(bucketName, "a"), info.Mode())
       +                }
       +                info, err = gcsAfs.Stat(filepath.Join(bucketName, "a/b"))
       +                if err != nil {
       +                        t.Fatal(err)
       +                }
       +                if !info.Mode().IsDir() {
       +                        t.Errorf("%s: mode is not directory", filepath.Join(bucketName, "a/b"))
       +                }
       +                if info.Mode() != os.ModeDir|0755 {
       +                        t.Errorf("%s: wrong permissions, expected drwxr-xr-x, got %s", filepath.Join(bucketName, "a/b"), info.Mode())
       +                }
       +                info, err = gcsAfs.Stat(dirName)
       +                if err != nil {
       +                        t.Fatal(err)
       +                }
       +                if !info.Mode().IsDir() {
       +                        t.Errorf("%s: mode is not directory", dirName)
       +                }
       +                if info.Mode() != os.ModeDir|0755 {
       +                        t.Errorf("%s: wrong permissions, expected drwxr-xr-x, got %s", dirName, info.Mode())
       +                }
       +
       +                err = gcsAfs.RemoveAll(filepath.Join(bucketName, "a"))
       +                if err != nil {
       +                        t.Fatalf("failed to remove the folder %s with error: %s", filepath.Join(bucketName, "a"), err)
       +                }
       +        })
        }