12345678910111213141516171819202122232425262728293031323334353637383940 |
- package process
- import (
- "fmt"
- "os"
- "os/exec"
- "runtime"
- "testing"
- )
- func TestAlive(t *testing.T) {
- for _, pid := range []int{0, -1, -123} {
- t.Run(fmt.Sprintf("invalid process (%d)", pid), func(t *testing.T) {
- if Alive(pid) {
- t.Errorf("PID %d should not be alive", pid)
- }
- })
- }
- t.Run("current process", func(t *testing.T) {
- if pid := os.Getpid(); !Alive(pid) {
- t.Errorf("current PID (%d) should be alive", pid)
- }
- })
- t.Run("exited process", func(t *testing.T) {
- if runtime.GOOS == "windows" {
- t.Skip("TODO: make this work on Windows")
- }
- // Get a PID of an exited process.
- cmd := exec.Command("echo", "hello world")
- err := cmd.Run()
- if err != nil {
- t.Fatal(err)
- }
- exitedPID := cmd.ProcessState.Pid()
- if Alive(exitedPID) {
- t.Errorf("PID %d should not be alive", exitedPID)
- }
- })
- }
|