Skip to content

Commit 23ed6c4

Browse files
committed
test: fix TestSSHServer_ClosesStdin to handle non-atomic write
1 parent b0ba798 commit 23ed6c4

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

agent/agentssh/agentssh_test.go

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -413,8 +413,9 @@ func TestSSHServer_ClosesStdin(t *testing.T) {
413413

414414
ctx := testutil.Context(t, testutil.WaitMedium)
415415
logger := testutil.Logger(t)
416-
s, err := agentssh.NewServer(ctx, logger, prometheus.NewRegistry(), afero.NewMemMapFs(), agentexec.DefaultExecer, nil)
416+
s, err := agentssh.NewServer(ctx, logger.Named("ssh-server"), prometheus.NewRegistry(), afero.NewMemMapFs(), agentexec.DefaultExecer, nil)
417417
require.NoError(t, err)
418+
logger = logger.Named("test")
418419
defer s.Close()
419420
err = s.UpdateHostSigner(42)
420421
assert.NoError(t, err)
@@ -469,12 +470,22 @@ func TestSSHServer_ClosesStdin(t *testing.T) {
469470
err = testutil.RequireReceive(ctx, t, readCh)
470471
require.NoError(t, err)
471472

472-
sess.Close()
473+
err = sess.Close()
474+
require.NoError(t, err)
473475

474476
var content []byte
477+
expected := []byte("read exit code: 1\n")
475478
testutil.Eventually(ctx, t, func(_ context.Context) bool {
476479
content, err = os.ReadFile(filePath)
477-
return err == nil
480+
if err != nil {
481+
logger.Debug(ctx, "failed to read file; will retry", slog.Error(err))
482+
return false
483+
}
484+
if len(content) != len(expected) {
485+
logger.Debug(ctx, "file is partially written", slog.F("content", content))
486+
return false
487+
}
488+
return true
478489
}, testutil.IntervalFast)
479490
require.NoError(t, err)
480491
require.Equal(t, "read exit code: 1\n", string(content))

0 commit comments

Comments
 (0)