dnscrypt-proxy/vendor/github.com/facebookgo/pidfile/pidfile_test.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)
}
}