diff options
Diffstat (limited to 'modules/process/manager_test.go')
-rw-r--r-- | modules/process/manager_test.go | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/modules/process/manager_test.go b/modules/process/manager_test.go index 9980aba921..b18f76f944 100644 --- a/modules/process/manager_test.go +++ b/modules/process/manager_test.go @@ -1,7 +1,7 @@ package process import ( - "os/exec" + "context" "testing" "time" @@ -9,27 +9,42 @@ import ( ) func TestManager_Add(t *testing.T) { - pm := Manager{Processes: make(map[int64]*Process)} + pm := Manager{processes: make(map[int64]*Process)} - pid := pm.Add("foo", exec.Command("foo")) + pid := pm.Add("foo", nil) assert.Equal(t, int64(1), pid, "expected to get pid 1 got %d", pid) - pid = pm.Add("bar", exec.Command("bar")) + pid = pm.Add("bar", nil) assert.Equal(t, int64(2), pid, "expected to get pid 2 got %d", pid) } +func TestManager_Cancel(t *testing.T) { + pm := Manager{processes: make(map[int64]*Process)} + + ctx, cancel := context.WithCancel(context.Background()) + pid := pm.Add("foo", cancel) + + pm.Cancel(pid) + + select { + case <-ctx.Done(): + default: + assert.Fail(t, "Cancel should cancel the provided context") + } +} + func TestManager_Remove(t *testing.T) { - pm := Manager{Processes: make(map[int64]*Process)} + pm := Manager{processes: make(map[int64]*Process)} - pid1 := pm.Add("foo", exec.Command("foo")) + pid1 := pm.Add("foo", nil) assert.Equal(t, int64(1), pid1, "expected to get pid 1 got %d", pid1) - pid2 := pm.Add("bar", exec.Command("bar")) + pid2 := pm.Add("bar", nil) assert.Equal(t, int64(2), pid2, "expected to get pid 2 got %d", pid2) pm.Remove(pid2) - _, exists := pm.Processes[pid2] + _, exists := pm.processes[pid2] assert.False(t, exists, "PID %d is in the list but shouldn't", pid2) } |