@@ -408,17 +408,33 @@ func TestGitUploadPackSuccess(t *testing.T) {
408
408
ensureGitalyRepository (t )
409
409
410
410
client := runSSHD (t , successAPI (t ))
411
-
412
411
session , err := client .NewSession ()
413
412
require .NoError (t , err )
414
413
defer session .Close ()
415
414
416
- output , err := session .Output ( fmt . Sprintf ( "git-upload-pack %s" , testRepo ) )
415
+ stdin , err := session .StdinPipe ( )
417
416
require .NoError (t , err )
418
417
419
- outputLines := strings .Split (string (output ), "\n " )
418
+ stdout , err := session .StdoutPipe ()
419
+ require .NoError (t , err )
420
+
421
+ reader := bufio .NewReader (stdout )
422
+
423
+ err = session .Start (fmt .Sprintf ("git-upload-pack %s" , testRepo ))
424
+ require .NoError (t , err )
420
425
421
- require .Regexp (t , "^[0-9a-f]{44} HEAD.+" , outputLines [0 ])
426
+ line , err := reader .ReadString ('\n' )
427
+ require .NoError (t , err )
428
+ require .Regexp (t , "^[0-9a-f]{44} HEAD.+" , line )
429
+
430
+ // Gracefully close connection
431
+ _ , err = fmt .Fprintln (stdin , "0000" )
432
+ require .NoError (t , err )
433
+
434
+ output , err := io .ReadAll (stdout )
435
+ require .NoError (t , err )
436
+
437
+ outputLines := strings .Split (string (output ), "\n " )
422
438
423
439
for i := 1 ; i < (len (outputLines ) - 1 ); i ++ {
424
440
require .Regexp (t , "^[0-9a-f]{44} refs/(heads|tags)/[^ ]+" , outputLines [i ])
@@ -436,11 +452,29 @@ func TestGitUploadArchiveSuccess(t *testing.T) {
436
452
require .NoError (t , err )
437
453
defer session .Close ()
438
454
439
- output , err := session .Output ( fmt . Sprintf ( "git-upload-archive %s" , testRepo ) )
455
+ stdin , err := session .StdinPipe ( )
440
456
require .NoError (t , err )
441
457
442
- outputLines := strings .Split (string (output ), "\n " )
458
+ stdout , err := session .StdoutPipe ()
459
+ require .NoError (t , err )
460
+
461
+ reader := bufio .NewReader (stdout )
462
+
463
+ err = session .Start (fmt .Sprintf ("git-upload-archive %s" , testRepo ))
464
+ require .NoError (t , err )
465
+
466
+ _ , err = fmt .Fprintln (stdin , "0012argument HEAD\n 0000" )
467
+
468
+ line , err := reader .ReadString ('\n' )
469
+ require .Equal (t , "0008ACK\n " , line )
470
+ require .NoError (t , err )
471
+
472
+ // Gracefully close connection
473
+ _ , err = fmt .Fprintln (stdin , "0000" )
474
+ require .NoError (t , err )
475
+
476
+ output , err := io .ReadAll (stdout )
477
+ require .NoError (t , err )
443
478
444
- require .Equal (t , "0008ACK" , outputLines [0 ])
445
- require .Regexp (t , "^0000" , outputLines [1 ])
479
+ require .Equal (t , []byte ("0000" ), output [len (output )- 4 :])
446
480
}
0 commit comments