master
go 49 lines 1 KB
Raw
1 //go:build !windows
2
3 // SPDX-License-Identifier: GPL-3.0-or-later
4
5 package ndexec
6
7 import (
8 "errors"
9 "os"
10 "testing"
11
12 "github.com/stretchr/testify/assert"
13 )
14
15 func TestResolveDirectKillFallback(t *testing.T) {
16 groupKillErr := errors.New("group kill failed")
17
18 tests := map[string]struct {
19 killErr error
20 assertErr func(*testing.T, error)
21 }{
22 "successful direct kill becomes success": {
23 assertErr: func(t *testing.T, err error) {
24 t.Helper()
25 assert.NoError(t, err)
26 },
27 },
28 "process already done preserves os.ErrProcessDone semantics": {
29 killErr: os.ErrProcessDone,
30 assertErr: func(t *testing.T, err error) {
31 t.Helper()
32 assert.ErrorIs(t, err, os.ErrProcessDone)
33 },
34 },
35 "direct kill failure is returned": {
36 killErr: groupKillErr,
37 assertErr: func(t *testing.T, err error) {
38 t.Helper()
39 assert.ErrorIs(t, err, groupKillErr)
40 },
41 },
42 }
43
44 for name, tc := range tests {
45 t.Run(name, func(t *testing.T) {
46 tc.assertErr(t, resolveDirectKillFallback(tc.killErr))
47 })
48 }
49 }