|
1 | 1 | package main |
2 | 2 |
|
3 | 3 | import ( |
| 4 | + "bytes" |
4 | 5 | "log" |
5 | 6 | "net/http" |
6 | 7 | "runtime/coverage" |
7 | 8 | ) |
8 | 9 |
|
9 | 10 | func startCoverageServer() { |
10 | | - //log.Println("Coverage build detected. Starting private admin server on localhost:8081...") |
11 | 11 | adminMux := http.NewServeMux() |
12 | 12 |
|
13 | 13 | adminMux.HandleFunc("/_debug/coverage/download", func(w http.ResponseWriter, r *http.Request) { |
14 | 14 | log.Println("{\n \"message\": \"Received request to download coverage counter data...\"\n}") |
| 15 | + |
| 16 | + var buffer bytes.Buffer |
| 17 | + |
| 18 | + // Attempt to write the coverage counters to the buffer. |
| 19 | + if err := coverage.WriteCounters(&buffer); err != nil { |
| 20 | + log.Printf("Error writing coverage counters to buffer: %v", err) |
| 21 | + // Inform the client that an internal error occurred. |
| 22 | + http.Error(w, "Failed to generate coverage report", http.StatusInternalServerError) |
| 23 | + return |
| 24 | + } |
| 25 | + |
| 26 | + // Check if any data was written to the buffer. |
| 27 | + if buffer.Len() == 0 { |
| 28 | + log.Println("Coverage data is empty. No counters were written.") |
| 29 | + } else { |
| 30 | + log.Printf("Successfully wrote %d bytes of coverage data to the buffer.", buffer.Len()) |
| 31 | + } |
| 32 | + |
| 33 | + // If successful, proceed to write the buffer's content to the actual HTTP response. |
15 | 34 | w.Header().Set("Content-Type", "application/octet-stream") |
16 | 35 | w.Header().Set("Content-Disposition", `attachment; filename="coverage.out"`) |
17 | 36 |
|
18 | | - if err := coverage.WriteCounters(w); err != nil { |
19 | | - log.Printf("Error writing coverage counters to response: %v", err) |
| 37 | + // Write the captured coverage data from the buffer to the response writer. |
| 38 | + if _, err := w.Write(buffer.Bytes()); err != nil { |
| 39 | + log.Printf("Error writing coverage data from buffer to response: %v", err) |
20 | 40 | } |
21 | 41 | }) |
22 | 42 |
|
|
0 commit comments