@@ -2,6 +2,8 @@ package command
22
33import (
44 "bytes"
5+ "fmt"
6+ "io"
57 "net/http"
68 "net/http/httptest"
79 "os"
@@ -328,9 +330,9 @@ func TestRunAggregatesStats(t *testing.T) {
328330
329331 outStr := output .String ()
330332 assert .Contains (t , outStr , "Update Statistics" )
331- assert .Contains (t , outStr , "Overall:" )
333+ assert .Contains (t , outStr , "** Overall:** " )
332334 assert .Contains (t , outStr , "operations" )
333- assert .Contains (t , outStr , "Http: " )
335+ assert .Contains (t , outStr , "#### Http" )
334336 assert .Contains (t , outStr , "api_fetch" )
335337}
336338
@@ -417,6 +419,107 @@ func TestRunWithPerformanceLog(t *testing.T) {
417419 perfContent , err := os .ReadFile (logPath )
418420 assert .Nil (t , err )
419421 assert .NotEmpty (t , string (perfContent ))
420- assert .Contains (t , string (perfContent ), "http" )
421- assert .Contains (t , string (perfContent ), "api_fetch" )
422+ }
423+
424+ func TestTeeWriter (t * testing.T ) {
425+ var buf1 , buf2 bytes.Buffer
426+ tw := teeWriter {Writers : []io.Writer {& buf1 , & buf2 }}
427+
428+ n , err := tw .Write ([]byte ("hello world" ))
429+ assert .Nil (t , err )
430+ assert .Equal (t , 11 , n )
431+
432+ assert .Equal (t , "hello world" , buf1 .String ())
433+ assert .Equal (t , "hello world" , buf2 .String ())
434+ }
435+
436+ func TestTeeWriterPartialError (t * testing.T ) {
437+ var buf1 bytes.Buffer
438+ errorWriter := errorWriter {err : io .EOF }
439+ tw := teeWriter {Writers : []io.Writer {& buf1 , errorWriter }}
440+
441+ _ , err := tw .Write ([]byte ("hello" ))
442+ assert .Error (t , err )
443+ assert .Equal (t , io .EOF , err )
444+ }
445+
446+ type errorWriter struct {
447+ err error
448+ }
449+
450+ func (e errorWriter ) Write (p []byte ) (n int , err error ) {
451+ return 0 , e .err
452+ }
453+
454+ func TestCreateSummaryWriterNoEnv (t * testing.T ) {
455+ original := os .Getenv ("GITHUB_STEP_SUMMARY" )
456+ os .Unsetenv ("GITHUB_STEP_SUMMARY" )
457+ defer func () {
458+ if original != "" {
459+ os .Setenv ("GITHUB_STEP_SUMMARY" , original )
460+ }
461+ }()
462+
463+ buf := bytes .NewBuffer ([]byte {})
464+ updater := Updater {Logger : buf }
465+
466+ writer , closer , err := updater .createSummaryWriter ()
467+ assert .Nil (t , err )
468+ assert .Equal (t , buf , writer )
469+ closer ()
470+ }
471+
472+ func TestCreateSummaryWriterWithEnv (t * testing.T ) {
473+ original := os .Getenv ("GITHUB_STEP_SUMMARY" )
474+ tmpDir := t .TempDir ()
475+ summaryPath := path .Join (tmpDir , "summary.md" )
476+ os .Setenv ("GITHUB_STEP_SUMMARY" , summaryPath )
477+ defer func () {
478+ os .Unsetenv ("GITHUB_STEP_SUMMARY" )
479+ if original != "" {
480+ os .Setenv ("GITHUB_STEP_SUMMARY" , original )
481+ }
482+ }()
483+
484+ buf := bytes .NewBuffer ([]byte {})
485+ updater := Updater {Logger : buf }
486+
487+ writer , closer , err := updater .createSummaryWriter ()
488+ assert .Nil (t , err )
489+ closer ()
490+
491+ _ , ok := writer .(teeWriter )
492+ assert .True (t , ok )
493+
494+ content , err := os .ReadFile (summaryPath )
495+ assert .Nil (t , err )
496+ assert .Empty (t , string (content ))
497+ }
498+
499+ func TestCreateSummaryWriterAppendsToFile (t * testing.T ) {
500+ original := os .Getenv ("GITHUB_STEP_SUMMARY" )
501+ tmpDir := t .TempDir ()
502+ summaryPath := path .Join (tmpDir , "summary.md" )
503+ os .WriteFile (summaryPath , []byte ("Existing content\n " ), 0644 )
504+ os .Setenv ("GITHUB_STEP_SUMMARY" , summaryPath )
505+ defer func () {
506+ os .Unsetenv ("GITHUB_STEP_SUMMARY" )
507+ if original != "" {
508+ os .Setenv ("GITHUB_STEP_SUMMARY" , original )
509+ }
510+ }()
511+
512+ buf := bytes .NewBuffer ([]byte {})
513+ updater := Updater {Logger : buf }
514+
515+ writer , closer , err := updater .createSummaryWriter ()
516+ assert .Nil (t , err )
517+
518+ fmt .Fprintf (writer , "New content" )
519+ closer ()
520+
521+ content , err := os .ReadFile (summaryPath )
522+ assert .Nil (t , err )
523+ assert .Contains (t , string (content ), "Existing content" )
524+ assert .Contains (t , string (content ), "New content" )
422525}
0 commit comments