|  | // Copyright 2020 The Go Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style | 
|  | // license that can be found in the LICENSE file. | 
|  |  | 
|  | //go:build unix | 
|  |  | 
|  | package os_test | 
|  |  | 
|  | import ( | 
|  | "internal/testenv" | 
|  | . "os" | 
|  | "syscall" | 
|  | "testing" | 
|  | ) | 
|  |  | 
|  | func TestErrProcessDone(t *testing.T) { | 
|  | testenv.MustHaveGoBuild(t) | 
|  | t.Parallel() | 
|  |  | 
|  | p, err := StartProcess(testenv.GoToolPath(t), []string{"go"}, &ProcAttr{}) | 
|  | if err != nil { | 
|  | t.Fatalf("starting test process: %v", err) | 
|  | } | 
|  | p.Wait() | 
|  | if got := p.Signal(Kill); got != ErrProcessDone { | 
|  | t.Errorf("got %v want %v", got, ErrProcessDone) | 
|  | } | 
|  | } | 
|  |  | 
|  | func TestUNIXProcessAlive(t *testing.T) { | 
|  | testenv.MustHaveGoBuild(t) | 
|  | t.Parallel() | 
|  |  | 
|  | p, err := StartProcess(testenv.GoToolPath(t), []string{"sleep", "1"}, &ProcAttr{}) | 
|  | if err != nil { | 
|  | t.Skipf("starting test process: %v", err) | 
|  | } | 
|  | defer p.Kill() | 
|  |  | 
|  | proc, _ := FindProcess(p.Pid) | 
|  | err = proc.Signal(syscall.Signal(0)) | 
|  | if err != nil { | 
|  | t.Errorf("OS reported error for running process: %v", err) | 
|  | } | 
|  | } |