109 lines
2.0 KiB
Go
109 lines
2.0 KiB
Go
package pidfile_test
|
|
|
|
import (
|
|
"errors"
|
|
"io/ioutil"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/facebookgo/pidfile"
|
|
)
|
|
|
|
// Make a temporary file, remove it, and return it's path with the hopes that
|
|
// no one else create a file with that name.
|
|
func tempfilename(t *testing.T) string {
|
|
file, err := ioutil.TempFile("", "pidfile-test")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
err = file.Close()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
err = os.Remove(file.Name())
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
return file.Name()
|
|
}
|
|
|
|
func TestGetSetPath(t *testing.T) {
|
|
p := tempfilename(t)
|
|
defer os.Remove(p)
|
|
pidfile.SetPidfilePath(p)
|
|
|
|
if a := pidfile.GetPidfilePath(); a != p {
|
|
t.Fatalf("was expecting %s but got %s", p, a)
|
|
}
|
|
}
|
|
|
|
func TestSimple(t *testing.T) {
|
|
p := tempfilename(t)
|
|
defer os.Remove(p)
|
|
pidfile.SetPidfilePath(p)
|
|
|
|
if err := pidfile.Write(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
pid, err := pidfile.Read()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if os.Getpid() != pid {
|
|
t.Fatalf("was expecting %d but got %d", os.Getpid(), pid)
|
|
}
|
|
}
|
|
|
|
func TestPidfileNotConfigured(t *testing.T) {
|
|
pidfile.SetPidfilePath("")
|
|
|
|
err := pidfile.Write()
|
|
if err == nil {
|
|
t.Fatal("was expecting an error")
|
|
}
|
|
if !pidfile.IsNotConfigured(err) {
|
|
t.Fatalf("was expecting IsNotConfigured error but got: %s", err)
|
|
}
|
|
|
|
_, err = pidfile.Read()
|
|
if err == nil {
|
|
t.Fatal("was expecting an error")
|
|
}
|
|
if !pidfile.IsNotConfigured(err) {
|
|
t.Fatalf("was expecting IsNotConfigured error but got: %s", err)
|
|
}
|
|
}
|
|
|
|
func TestNonIsConfiguredError(t *testing.T) {
|
|
err := errors.New("foo")
|
|
if pidfile.IsNotConfigured(err) {
|
|
t.Fatal("should be false")
|
|
}
|
|
}
|
|
|
|
func TestMakesDirectories(t *testing.T) {
|
|
dir := tempfilename(t)
|
|
defer os.RemoveAll(dir)
|
|
p := filepath.Join(dir, "pidfile")
|
|
pidfile.SetPidfilePath(p)
|
|
|
|
if err := pidfile.Write(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
pid, err := pidfile.Read()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if os.Getpid() != pid {
|
|
t.Fatalf("was expecting %d but got %d", os.Getpid(), pid)
|
|
}
|
|
}
|