From 3ca6883927344245c5d9f211da3e0c49869115fd Mon Sep 17 00:00:00 2001 From: Davide Petilli Date: Wed, 27 Jul 2022 12:34:48 +0200 Subject: [PATCH] fix: process resources are not released (#66) Fixed #65 --- pkg/mutator/mutator.go | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/pkg/mutator/mutator.go b/pkg/mutator/mutator.go index b21b2298..73419cbd 100644 --- a/pkg/mutator/mutator.go +++ b/pkg/mutator/mutator.go @@ -253,7 +253,9 @@ func (mu *Mutator) runTests() mutant.Status { defer cancel() cmd := mu.execContext(ctx, "go", mu.getTestArgs()...) - err := cmd.Run() //nolint:ifshort + rel, err := run(cmd) + defer rel() + if errors.Is(ctx.Err(), context.DeadlineExceeded) { return mutant.TimedOut } @@ -265,6 +267,20 @@ func (mu *Mutator) runTests() mutant.Status { return mutant.Lived } +func run(cmd *exec.Cmd) (func(), error) { + if err := cmd.Run(); err != nil { + + return func() {}, err + } + + return func() { + err := cmd.Process.Release() + if err != nil { + _ = cmd.Process.Kill() + } + }, nil +} + func (mu *Mutator) getTestArgs() []string { args := []string{"test"} if mu.buildTags != "" {