Explorar el Código

chore: fix potential panic in tests

jamesread hace 3 meses
padre
commit
606b705bdd
Se han modificado 1 ficheros con 11 adiciones y 5 borrados
  1. 11 5
      service/internal/api/api_test.go

+ 11 - 5
service/internal/api/api_test.go

@@ -640,11 +640,11 @@ func drainEventStreamUntilFinished(ch <-chan *apiv1.EventStreamResponse, timeout
 	deadline := time.Now().Add(timeout)
 	deadline := time.Now().Add(timeout)
 	for time.Now().Before(deadline) {
 	for time.Now().Before(deadline) {
 		ev, finished := recvEventStreamOne(ch, 50*time.Millisecond)
 		ev, finished := recvEventStreamOne(ch, 50*time.Millisecond)
+		if finished {
+			return out
+		}
 		if ev != nil {
 		if ev != nil {
 			out = append(out, ev)
 			out = append(out, ev)
-			if finished {
-				return out
-			}
 		}
 		}
 	}
 	}
 	return out
 	return out
@@ -652,7 +652,10 @@ func drainEventStreamUntilFinished(ch <-chan *apiv1.EventStreamResponse, timeout
 
 
 func recvEventStreamOne(ch <-chan *apiv1.EventStreamResponse, timeout time.Duration) (*apiv1.EventStreamResponse, bool) {
 func recvEventStreamOne(ch <-chan *apiv1.EventStreamResponse, timeout time.Duration) (*apiv1.EventStreamResponse, bool) {
 	select {
 	select {
-	case ev := <-ch:
+	case ev, ok := <-ch:
+		if !ok {
+			return nil, true
+		}
 		return ev, ev.GetExecutionFinished() != nil
 		return ev, ev.GetExecutionFinished() != nil
 	case <-time.After(timeout):
 	case <-time.After(timeout):
 		return nil, true
 		return nil, true
@@ -663,7 +666,10 @@ func drainEventStreamWithTimeout(ch <-chan *apiv1.EventStreamResponse, timeout t
 	var out []*apiv1.EventStreamResponse
 	var out []*apiv1.EventStreamResponse
 	for {
 	for {
 		select {
 		select {
-		case ev := <-ch:
+		case ev, ok := <-ch:
+			if !ok {
+				return out
+			}
 			out = append(out, ev)
 			out = append(out, ev)
 		case <-time.After(timeout):
 		case <-time.After(timeout):
 			return out
 			return out