summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2023-07-21 14:08:32 +0700
committerShulhan <ms@kilabit.info>2023-07-21 14:08:32 +0700
commite4c61f4f170c3ba8eda2b591005ff2c3dfde9b09 (patch)
tree6479d13a6cc5a26e1fad7a850660f2f9b40c7081
parent6a96a8614845f546d2e4f0c212c5885558a7e54f (diff)
downloadpakakeh.go-e4c61f4f170c3ba8eda2b591005ff2c3dfde9b09.tar.xz
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".
-rw-r--r--lib/email/maildir/folder_darwin_test.go62
-rw-r--r--lib/email/maildir/folder_linux_test.go62
-rw-r--r--lib/email/maildir/folder_test.go50
-rw-r--r--lib/email/maildir/manager_darwin_test.go44
-rw-r--r--lib/email/maildir/manager_linux_test.go44
-rw-r--r--lib/email/maildir/manager_test.go37
6 files changed, 212 insertions, 87 deletions
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 <ms@kilabit.info>. 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 <ms@kilabit.info>. 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()