Skip to content

Commit 02a0cb5

Browse files
committed
don't hang in test
1 parent fb9231e commit 02a0cb5

1 file changed

Lines changed: 8 additions & 7 deletions

File tree

internal/turso/tursoServer_test.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,9 @@ type MockTursoServer struct {
3737
chunkSize int64
3838

3939
// Error simulation
40-
failAtChunk int // -1 means no failure
41-
failAtEndpoint string
40+
failAtChunk int // -1 means no failure
41+
failAtChunkStatus int // Status code to return when failing (default 400 - non-retriable)
42+
failAtEndpoint string
4243
}
4344

4445
func NewMockTursoServer() *MockTursoServer {
@@ -50,6 +51,7 @@ func NewMockTursoServer() *MockTursoServer {
5051
finalizeStatus: http.StatusOK,
5152
chunkSize: 1024 * 1024, // 1MB default
5253
failAtChunk: -1,
54+
failAtChunkStatus: http.StatusTeapot, // Non-retriable, to avoid holding up the test
5355
uploadID: "test-upload-id",
5456
}
5557

@@ -97,7 +99,7 @@ func (m *MockTursoServer) handleChunkUpload(w http.ResponseWriter, r *http.Reque
9799
chunkID, _ := strconv.Atoi(parts[len(parts)-1])
98100

99101
if m.failAtChunk == chunkID {
100-
w.WriteHeader(http.StatusInternalServerError)
102+
w.WriteHeader(m.failAtChunkStatus)
101103
w.Write([]byte(`{"error": "simulated chunk error"}`))
102104
return
103105
}
@@ -607,6 +609,8 @@ func TestUploadFileMultipart_ChunkSizeFromServer(t *testing.T) {
607609
}
608610

609611
func TestUploadFileMultipart_HTTPStatusCodes(t *testing.T) {
612+
// Note: Only testing non-retriable status codes here.
613+
// 5xx codes trigger retry logic which requires time mocking to test properly.
610614
testCases := []struct {
611615
name string
612616
status int
@@ -618,17 +622,14 @@ func TestUploadFileMultipart_HTTPStatusCodes(t *testing.T) {
618622
{"401 Unauthorized", http.StatusUnauthorized, false},
619623
{"403 Forbidden", http.StatusForbidden, false},
620624
{"404 Not Found", http.StatusNotFound, false},
621-
{"500 Internal Server Error", http.StatusInternalServerError, false},
622-
{"502 Bad Gateway", http.StatusBadGateway, false},
623-
{"503 Service Unavailable", http.StatusServiceUnavailable, false},
624625
}
625626

626627
for _, tc := range testCases {
627628
t.Run(tc.name, func(t *testing.T) {
628629
mock := NewMockTursoServer()
629630
mock.chunkSize = 1024
630631
if !tc.shouldSucceed {
631-
mock.chunkUploadStatus = tc.status
632+
mock.failAtChunkStatus = tc.status
632633
mock.failAtChunk = 0 // Fail on first chunk
633634
}
634635
defer mock.Close()

0 commit comments

Comments
 (0)