( ctx context.Context, t *testing.T, events <-chan codersdk.ChatStreamEvent, expectedText string, )
| 861 | } |
| 862 | |
| 863 | func waitForStreamTextPart( |
| 864 | ctx context.Context, |
| 865 | t *testing.T, |
| 866 | events <-chan codersdk.ChatStreamEvent, |
| 867 | expectedText string, |
| 868 | ) codersdk.ChatStreamEvent { |
| 869 | t.Helper() |
| 870 | |
| 871 | for { |
| 872 | select { |
| 873 | case <-ctx.Done(): |
| 874 | require.FailNowf( |
| 875 | t, |
| 876 | "timed out waiting for chat stream event", |
| 877 | "expected text part %q before context deadline: %v", |
| 878 | expectedText, |
| 879 | ctx.Err(), |
| 880 | ) |
| 881 | case event, ok := <-events: |
| 882 | require.Truef(t, ok, "chat stream closed while waiting for %q", expectedText) |
| 883 | |
| 884 | if event.Type == codersdk.ChatStreamEventTypeError { |
| 885 | errMessage := "unknown chat stream error" |
| 886 | if event.Error != nil && event.Error.Message != "" { |
| 887 | errMessage = event.Error.Message |
| 888 | } |
| 889 | require.FailNowf( |
| 890 | t, |
| 891 | "chat stream returned error event", |
| 892 | "while waiting for %q: %s", |
| 893 | expectedText, |
| 894 | errMessage, |
| 895 | ) |
| 896 | } |
| 897 | |
| 898 | if event.Type != codersdk.ChatStreamEventTypeMessagePart || event.MessagePart == nil { |
| 899 | continue |
| 900 | } |
| 901 | if event.MessagePart.Part.Type != codersdk.ChatMessagePartTypeText { |
| 902 | continue |
| 903 | } |
| 904 | |
| 905 | require.Equal(t, expectedText, event.MessagePart.Part.Text) |
| 906 | return event |
| 907 | } |
| 908 | } |
| 909 | } |
| 910 | |
| 911 | func replicaIDForClientURL( |
| 912 | t *testing.T, |
no test coverage detected