MCPcopy
hub / github.com/gin-gonic/gin / TestReadNthLine

Function TestReadNthLine

recovery_test.go:322–362  ·  view source on GitHub ↗

TestReadNthLine tests the readNthLine function with various scenarios.

(t *testing.T)

Source from the content-addressed store, hash-verified

320
321// TestReadNthLine tests the readNthLine function with various scenarios.
322func TestReadNthLine(t *testing.T) {
323 // Create a temporary test file
324 testContent := "line 0 \n line 1 \nline 2 \nline 3 \nline 4"
325 tempFile, err := os.CreateTemp("", "testfile*.txt")
326 if err != nil {
327 t.Fatal(err)
328 }
329 defer os.Remove(tempFile.Name())
330
331 // Write test content to the temporary file
332 if _, err := tempFile.WriteString(testContent); err != nil {
333 t.Fatal(err)
334 }
335 if err := tempFile.Close(); err != nil {
336 t.Fatal(err)
337 }
338
339 // Test cases
340 tests := []struct {
341 name string
342 lineNum int
343 fileName string
344 want string
345 wantErr bool
346 }{
347 {name: "Read first line", lineNum: 0, fileName: tempFile.Name(), want: "line 0", wantErr: false},
348 {name: "Read middle line", lineNum: 2, fileName: tempFile.Name(), want: "line 2", wantErr: false},
349 {name: "Read last line", lineNum: 4, fileName: tempFile.Name(), want: "line 4", wantErr: false},
350 {name: "Line number exceeds file length", lineNum: 10, fileName: tempFile.Name(), want: "", wantErr: false},
351 {name: "Negative line number", lineNum: -1, fileName: tempFile.Name(), want: "", wantErr: false},
352 {name: "Non-existent file", lineNum: 1, fileName: "/non/existent/file.txt", want: "", wantErr: true},
353 }
354
355 for _, tt := range tests {
356 t.Run(tt.name, func(t *testing.T) {
357 got, err := readNthLine(tt.fileName, tt.lineNum)
358 assert.Equal(t, tt.wantErr, err != nil)
359 assert.Equal(t, tt.want, got)
360 })
361 }
362}
363
364func BenchmarkStack(b *testing.B) {
365 b.ReportAllocs()

Callers

nothing calls this directly

Calls 5

readNthLineFunction · 0.85
CloseMethod · 0.80
RunMethod · 0.80
NameMethod · 0.65
WriteStringMethod · 0.65

Tested by

no test coverage detected