feat(process): add global remove and clear helpers
Co-Authored-By: Virgil <virgil@lethean.io>
This commit is contained in:
parent
02e2b3611c
commit
f43e8a6e38
2 changed files with 62 additions and 0 deletions
|
|
@ -36,6 +36,12 @@ func TestGlobal_DefaultNotInitialized(t *testing.T) {
|
|||
assert.Nil(t, List())
|
||||
assert.Nil(t, Running())
|
||||
|
||||
err = Remove("proc-1")
|
||||
assert.ErrorIs(t, err, ErrServiceNotInitialized)
|
||||
|
||||
// Clear is a no-op without a default service.
|
||||
Clear()
|
||||
|
||||
err = Kill("proc-1")
|
||||
assert.ErrorIs(t, err, ErrServiceNotInitialized)
|
||||
|
||||
|
|
@ -290,3 +296,33 @@ func TestGlobal_Running(t *testing.T) {
|
|||
running = Running()
|
||||
assert.Len(t, running, 0)
|
||||
}
|
||||
|
||||
func TestGlobal_RemoveAndClear(t *testing.T) {
|
||||
svc, _ := newTestService(t)
|
||||
|
||||
old := defaultService.Swap(svc)
|
||||
defer func() {
|
||||
if old != nil {
|
||||
defaultService.Store(old)
|
||||
}
|
||||
}()
|
||||
|
||||
proc, err := Start(context.Background(), "echo", "remove-me")
|
||||
require.NoError(t, err)
|
||||
<-proc.Done()
|
||||
|
||||
err = Remove(proc.ID)
|
||||
require.NoError(t, err)
|
||||
|
||||
_, err = Get(proc.ID)
|
||||
require.ErrorIs(t, err, ErrProcessNotFound)
|
||||
|
||||
proc2, err := Start(context.Background(), "echo", "clear-me")
|
||||
require.NoError(t, err)
|
||||
<-proc2.Done()
|
||||
|
||||
Clear()
|
||||
|
||||
_, err = Get(proc2.ID)
|
||||
require.ErrorIs(t, err, ErrProcessNotFound)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -191,6 +191,32 @@ func Running() []*Process {
|
|||
return svc.Running()
|
||||
}
|
||||
|
||||
// Remove removes a completed process from the default service.
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// _ = process.Remove("proc-1")
|
||||
func Remove(id string) error {
|
||||
svc := Default()
|
||||
if svc == nil {
|
||||
return ErrServiceNotInitialized
|
||||
}
|
||||
return svc.Remove(id)
|
||||
}
|
||||
|
||||
// Clear removes all completed processes from the default service.
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// process.Clear()
|
||||
func Clear() {
|
||||
svc := Default()
|
||||
if svc == nil {
|
||||
return
|
||||
}
|
||||
svc.Clear()
|
||||
}
|
||||
|
||||
// Errors
|
||||
var (
|
||||
// ErrServiceNotInitialized is returned when the service is not initialized.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue