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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy