From e4c61f4f170c3ba8eda2b591005ff2c3dfde9b09 Mon Sep 17 00:00:00 2001 From: Shulhan Date: Fri, 21 Jul 2023 14:08:32 +0700 Subject: email/maildir: fix tests on darwin On Linux, if one try to write to directory without permission its return an error: "permission denied", while on Darwin its return "read-only file system". --- lib/email/maildir/folder_darwin_test.go | 62 ++++++++++++++++++++++++++++++++ lib/email/maildir/folder_linux_test.go | 62 ++++++++++++++++++++++++++++++++ lib/email/maildir/folder_test.go | 50 -------------------------- lib/email/maildir/manager_darwin_test.go | 44 +++++++++++++++++++++++ lib/email/maildir/manager_linux_test.go | 44 +++++++++++++++++++++++ lib/email/maildir/manager_test.go | 37 ------------------- 6 files changed, 212 insertions(+), 87 deletions(-) create mode 100644 lib/email/maildir/folder_darwin_test.go create mode 100644 lib/email/maildir/folder_linux_test.go create mode 100644 lib/email/maildir/manager_darwin_test.go create mode 100644 lib/email/maildir/manager_linux_test.go diff --git a/lib/email/maildir/folder_darwin_test.go b/lib/email/maildir/folder_darwin_test.go new file mode 100644 index 00000000..137422aa --- /dev/null +++ b/lib/email/maildir/folder_darwin_test.go @@ -0,0 +1,62 @@ +// Copyright 2023, Shulhan . All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package maildir + +import ( + "path/filepath" + "testing" + + "github.com/shuLhan/share/lib/test" +) + +func TestCreateFolder(t *testing.T) { + var ( + dir = t.TempDir() + name = " \r\n" + + folder *Folder + err error + ) + + // Case: with empty maildir. + + _, err = CreateFolder(``, `.name`) + var expError = `CreateFolder: invalid maildir "."` + test.Assert(t, `With empty maildir`, expError, err.Error()) + + // Case: with empty name. + + _, err = CreateFolder(dir, name) + expError = `CreateFolder: folder name is empty` + test.Assert(t, `With empty name`, expError, err.Error()) + + // Case: with no permission. + + name = `.folder` + + _, err = CreateFolder(`/`, name) + expError = `CreateFolder: mkdir /.folder: read-only file system` + test.Assert(t, `With empty name`, expError, err.Error()) + + // Case: with valid dir and name. + + folder, err = CreateFolder(dir, name) + if err != nil { + t.Fatal(err) + } + var expDir = filepath.Join(dir, name) + test.Assert(t, `Folder.dir`, expDir, folder.dir) + assertFolder(t, folder) + + // Case: creating folder on existing non empty directory should not + // failed. + + folder, err = CreateFolder(dir, name) + if err != nil { + t.Fatal(err) + } + test.Assert(t, `Folder.dir`, expDir, folder.dir) + assertFolder(t, folder) +} diff --git a/lib/email/maildir/folder_linux_test.go b/lib/email/maildir/folder_linux_test.go new file mode 100644 index 00000000..008b1f3a --- /dev/null +++ b/lib/email/maildir/folder_linux_test.go @@ -0,0 +1,62 @@ +// Copyright 2023, Shulhan . All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package maildir + +import ( + "path/filepath" + "testing" + + "github.com/shuLhan/share/lib/test" +) + +func TestCreateFolder(t *testing.T) { + var ( + dir = t.TempDir() + name = " \r\n" + + folder *Folder + err error + ) + + // Case: with empty maildir. + + _, err = CreateFolder(``, `.name`) + var expError = `CreateFolder: invalid maildir "."` + test.Assert(t, `With empty maildir`, expError, err.Error()) + + // Case: with empty name. + + _, err = CreateFolder(dir, name) + expError = `CreateFolder: folder name is empty` + test.Assert(t, `With empty name`, expError, err.Error()) + + // Case: with no permission. + + name = `.folder` + + _, err = CreateFolder(`/`, name) + expError = `CreateFolder: mkdir /.folder: permission denied` + test.Assert(t, `With empty name`, expError, err.Error()) + + // Case: with valid dir and name. + + folder, err = CreateFolder(dir, name) + if err != nil { + t.Fatal(err) + } + var expDir = filepath.Join(dir, name) + test.Assert(t, `Folder.dir`, expDir, folder.dir) + assertFolder(t, folder) + + // Case: creating folder on existing non empty directory should not + // failed. + + folder, err = CreateFolder(dir, name) + if err != nil { + t.Fatal(err) + } + test.Assert(t, `Folder.dir`, expDir, folder.dir) + assertFolder(t, folder) +} diff --git a/lib/email/maildir/folder_test.go b/lib/email/maildir/folder_test.go index dacf9ea0..1afad196 100644 --- a/lib/email/maildir/folder_test.go +++ b/lib/email/maildir/folder_test.go @@ -13,56 +13,6 @@ import ( "github.com/shuLhan/share/lib/test" ) -func TestCreateFolder(t *testing.T) { - var ( - dir = t.TempDir() - name = " \r\n" - - folder *Folder - err error - ) - - // Case: with empty maildir. - - _, err = CreateFolder(``, `.name`) - var expError = `CreateFolder: invalid maildir "."` - test.Assert(t, `With empty maildir`, expError, err.Error()) - - // Case: with empty name. - - _, err = CreateFolder(dir, name) - expError = `CreateFolder: folder name is empty` - test.Assert(t, `With empty name`, expError, err.Error()) - - // Case: with no permission. - - name = `.folder` - - _, err = CreateFolder(`/`, name) - expError = `CreateFolder: mkdir /.folder: permission denied` - test.Assert(t, `With empty name`, expError, err.Error()) - - // Case: with valid dir and name. - - folder, err = CreateFolder(dir, name) - if err != nil { - t.Fatal(err) - } - var expDir = filepath.Join(dir, name) - test.Assert(t, `Folder.dir`, expDir, folder.dir) - assertFolder(t, folder) - - // Case: creating folder on existing non empty directory should not - // failed. - - folder, err = CreateFolder(dir, name) - if err != nil { - t.Fatal(err) - } - test.Assert(t, `Folder.dir`, expDir, folder.dir) - assertFolder(t, folder) -} - func TestNewFolder(t *testing.T) { // Case: empty name. var ( diff --git a/lib/email/maildir/manager_darwin_test.go b/lib/email/maildir/manager_darwin_test.go new file mode 100644 index 00000000..fc69d1d2 --- /dev/null +++ b/lib/email/maildir/manager_darwin_test.go @@ -0,0 +1,44 @@ +package maildir + +import ( + "testing" + + "github.com/shuLhan/share/lib/test" +) + +func TestNewManager(t *testing.T) { + var ( + md *Manager + expError string + err error + ) + + _, err = NewManager(" \t\n") + expError = `NewManager: empty base directory` + test.Assert(t, `With empty directory`, expError, err.Error()) + + _, err = NewManager(`/`) + expError = `NewManager: initDirs: mkdir /cur: read-only file system` + test.Assert(t, `With no permission`, expError, err.Error()) + + var baseDir = t.TempDir() + + md, err = NewManager(baseDir) + if err != nil { + t.Fatal(err) + } + + if md.pid == 0 { + t.Fatal(`want PID, got 0`) + } + if len(md.hostname) == 0 { + t.Fatal(`want hostname, got empty`) + } + if md.counter != 0 { + t.Fatalf(`want zero counter, got %d`, md.counter) + } + + assertDirExist(t, md.dirCur) + assertDirExist(t, md.dirNew) + assertDirExist(t, md.dirTmp) +} diff --git a/lib/email/maildir/manager_linux_test.go b/lib/email/maildir/manager_linux_test.go new file mode 100644 index 00000000..4ff44bcd --- /dev/null +++ b/lib/email/maildir/manager_linux_test.go @@ -0,0 +1,44 @@ +package maildir + +import ( + "testing" + + "github.com/shuLhan/share/lib/test" +) + +func TestNewManager(t *testing.T) { + var ( + md *Manager + expError string + err error + ) + + _, err = NewManager(" \t\n") + expError = `NewManager: empty base directory` + test.Assert(t, `With empty directory`, expError, err.Error()) + + _, err = NewManager(`/`) + expError = `NewManager: initDirs: mkdir /cur: permission denied` + test.Assert(t, `With no permission`, expError, err.Error()) + + var baseDir = t.TempDir() + + md, err = NewManager(baseDir) + if err != nil { + t.Fatal(err) + } + + if md.pid == 0 { + t.Fatal(`want PID, got 0`) + } + if len(md.hostname) == 0 { + t.Fatal(`want hostname, got empty`) + } + if md.counter != 0 { + t.Fatalf(`want zero counter, got %d`, md.counter) + } + + assertDirExist(t, md.dirCur) + assertDirExist(t, md.dirNew) + assertDirExist(t, md.dirTmp) +} diff --git a/lib/email/maildir/manager_test.go b/lib/email/maildir/manager_test.go index c29a3f1b..832bd046 100644 --- a/lib/email/maildir/manager_test.go +++ b/lib/email/maildir/manager_test.go @@ -13,43 +13,6 @@ import ( "github.com/shuLhan/share/lib/test" ) -func TestNewManager(t *testing.T) { - var ( - md *Manager - expError string - err error - ) - - _, err = NewManager(" \t\n") - expError = `NewManager: empty base directory` - test.Assert(t, `With empty directory`, expError, err.Error()) - - _, err = NewManager(`/`) - expError = `NewManager: initDirs: mkdir /cur: permission denied` - test.Assert(t, `With no permission`, expError, err.Error()) - - var baseDir = t.TempDir() - - md, err = NewManager(baseDir) - if err != nil { - t.Fatal(err) - } - - if md.pid == 0 { - t.Fatal(`want PID, got 0`) - } - if len(md.hostname) == 0 { - t.Fatal(`want hostname, got empty`) - } - if md.counter != 0 { - t.Fatalf(`want zero counter, got %d`, md.counter) - } - - assertDirExist(t, md.dirCur) - assertDirExist(t, md.dirNew) - assertDirExist(t, md.dirTmp) -} - func TestManager_scanDir(t *testing.T) { var ( dir = t.TempDir() -- cgit v1.3