From 24ff884a7483ce4f7bba2a1874801974578b71ac Mon Sep 17 00:00:00 2001 From: Cian Johnston Date: Fri, 9 Aug 2024 11:33:18 +0100 Subject: [PATCH 1/3] fix: ignore EOF eror in SSH handler --- internal/provider/git_test.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/internal/provider/git_test.go b/internal/provider/git_test.go index a512a85..ce8c9b9 100644 --- a/internal/provider/git_test.go +++ b/internal/provider/git_test.go @@ -149,7 +149,9 @@ func startSSHServer(ctx context.Context, t testing.TB) string { err = s.Exit(cmd.ProcessState.ExitCode()) if err != nil { - t.Logf("session exit failed: %s", err) + if !errors.Is(err, io.EOF) { + t.Errorf("session exit failed: %s", err) + } } }, } From 8b88538c7f6b9cdeb925164f7e57bf53270d1ec0 Mon Sep 17 00:00:00 2001 From: Cian Johnston Date: Fri, 9 Aug 2024 11:47:07 +0100 Subject: [PATCH 2/3] wait for output goroutine to finish --- internal/provider/git_test.go | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/internal/provider/git_test.go b/internal/provider/git_test.go index ce8c9b9..9fddb47 100644 --- a/internal/provider/git_test.go +++ b/internal/provider/git_test.go @@ -125,21 +125,24 @@ func startSSHServer(ctx context.Context, t testing.TB) string { t.Logf("command failed: %s", err) return } - t.Cleanup(func() { - _ = in.Close() - _ = out.Close() - _ = cmd.Process.Kill() - }) go func() { _, _ = io.Copy(in, s) _ = in.Close() }() + outDone := make(chan struct{}) go func() { + defer close(outDone) _, _ = io.Copy(s, out) _ = out.Close() _ = s.CloseWrite() }() + t.Cleanup(func() { + _ = in.Close() + _ = out.Close() + <-outDone + _ = cmd.Process.Kill() + }) err = cmd.Wait() if err != nil { t.Logf("command failed: %s", err) From fa0bd751e5719f698f77d117b94041bc6aff2856 Mon Sep 17 00:00:00 2001 From: Cian Johnston Date: Fri, 9 Aug 2024 11:54:43 +0100 Subject: [PATCH 3/3] experiment --- internal/provider/git_test.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/internal/provider/git_test.go b/internal/provider/git_test.go index 9fddb47..f8de934 100644 --- a/internal/provider/git_test.go +++ b/internal/provider/git_test.go @@ -152,9 +152,7 @@ func startSSHServer(ctx context.Context, t testing.TB) string { err = s.Exit(cmd.ProcessState.ExitCode()) if err != nil { - if !errors.Is(err, io.EOF) { - t.Errorf("session exit failed: %s", err) - } + t.Errorf("session exit failed: %s", err) } }, }