From 27cac7756b6da01d975347da7fcde23b922a6773 Mon Sep 17 00:00:00 2001 From: Songmu Date: Wed, 22 Feb 2017 02:10:24 +0900 Subject: [PATCH] add tests for pidfile --- pidfile/pidfile.go | 8 ++++-- pidfile/pidfile_test.go | 61 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+), 3 deletions(-) create mode 100644 pidfile/pidfile_test.go diff --git a/pidfile/pidfile.go b/pidfile/pidfile.go index 893a51534..e495564da 100644 --- a/pidfile/pidfile.go +++ b/pidfile/pidfile.go @@ -44,11 +44,13 @@ func Create(pidfile string) error { } // Remove pidfile -func Remove(pidfile string) { +func Remove(pidfile string) error { if pidfile == "" { - return + return nil } - if err := os.Remove(pidfile); err != nil { + err := os.Remove(pidfile) + if err != nil { logger.Errorf("Failed to remove the pidfile: %s: %s", pidfile, err) } + return err } diff --git a/pidfile/pidfile_test.go b/pidfile/pidfile_test.go new file mode 100644 index 000000000..91953c8ab --- /dev/null +++ b/pidfile/pidfile_test.go @@ -0,0 +1,61 @@ +// +build !windows + +package pidfile + +import ( + "io/ioutil" + "os" + "path/filepath" + "strconv" + "testing" +) + +func TestCreate(t *testing.T) { + err := Create("") + if err != nil { + t.Errorf("err should be nil but: %v", err) + } + + dir, err := ioutil.TempDir("", "") + if err != nil { + t.Fatalf("failed to create tempdir") + } + defer os.RemoveAll(dir) + pidfile := filepath.Join(dir, "pidfile") + err = Create(pidfile) + if err != nil { + t.Errorf("err should be nil but: %v", err) + } + pidString, _ := ioutil.ReadFile(pidfile) + pid, _ := strconv.Atoi(string(pidString)) + if pid != os.Getpid() { + t.Errorf("contents of pidfile does not match pid. content: %d, pid: %d", pid, os.Getpid()) + } + + err = Create(pidfile) + if err == nil { + t.Errorf("Successfully overwriting the pidfile unintentionally") + } +} + +func TestRemove(t *testing.T) { + err := Remove("") + if err != nil { + t.Errorf("err should be nil but: %v", err) + } + dir, err := ioutil.TempDir("", "") + if err != nil { + t.Fatalf("failed to create tempdir") + } + defer os.RemoveAll(dir) + pidfile := filepath.Join(dir, "pidfile") + err = Create(pidfile) + if err != nil { + t.Errorf("err should be nil but: %v", err) + } + + err = Remove(pidfile) + if err != nil { + t.Errorf("err should be nil but: %v", err) + } +}