@@ -479,6 +479,8 @@ func (bw badWrites) Write(_ []byte) (int, error) {
479
479
return 0 , io .EOF
480
480
}
481
481
482
+ func (bw badWrites ) Close () error { return io .ErrNoProgress }
483
+
482
484
func TestImprobableEdgeCasesForCoverage (t * testing.T ) {
483
485
t .Parallel ()
484
486
sp , _ := NewSpeedometer (io .Discard )
@@ -499,8 +501,8 @@ func TestImprobableEdgeCasesForCoverage(t *testing.T) {
499
501
if _ , e := sp .Write ([]byte ("yeet" )); ! errors .Is (e , io .EOF ) {
500
502
t .Errorf ("wrong error from underlying writer err passdown: %v" , e )
501
503
}
502
- if e := sp .Close (); e ! = nil {
503
- t .Fatal ("close err not nil " )
504
+ if e := sp .Close (); e = = nil {
505
+ t .Fatal ("should have received error when closing with bad writer " )
504
506
}
505
507
if e := sp .Close (); ! errors .Is (e , io .ErrClosedPipe ) {
506
508
t .Errorf ("wrong error from already closed speedo: %v" , e )
@@ -557,6 +559,9 @@ func (r reader) Read(p []byte) (int, error) {
557
559
558
560
func TestMiscellaneousBehaviorForCoverage (t * testing.T ) {
559
561
sp , err := NewSpeedometer (writeCloser {})
562
+ if act , actErr := sp .chkIOType (ioReader ); act != nil || actErr == nil {
563
+ t .Fatal ("should have received error when checking for reader on writecloser" )
564
+ }
560
565
if err != nil {
561
566
t .Fatal ("unexpected error" )
562
567
}
@@ -570,6 +575,9 @@ func TestMiscellaneousBehaviorForCoverage(t *testing.T) {
570
575
t .Fatal ("unexpected nil closer" )
571
576
}
572
577
sp , err = NewReadingSpeedometer (reader {})
578
+ if act , actErr := sp .chkIOType (ioWriter ); act != nil || actErr == nil {
579
+ t .Fatal ("should have received error when checking for writer on readcloser" )
580
+ }
573
581
if err != nil {
574
582
t .Fatal ("unexpected error" )
575
583
}
@@ -597,6 +605,16 @@ func TestMiscellaneousBehaviorForCoverage(t *testing.T) {
597
605
}
598
606
}
599
607
608
+ func TestMustPanic (t * testing.T ) {
609
+ defer func () {
610
+ if r := recover (); r == nil {
611
+ t .Fatal ("expected panic" )
612
+ }
613
+ }()
614
+ sp , _ := NewSpeedometer (writeCloser {})
615
+ _ , _ = sp .chkIOType (ioType (55 ))
616
+ }
617
+
600
618
func measureRate (t * testing.T , received int64 , duration time.Duration ) float64 {
601
619
t .Helper ()
602
620
return float64 (received ) / duration .Seconds ()
0 commit comments