github.com/rck/u-root@v0.0.0-20180106144920-7eb602e381bb/cmds/tail/tail_test.go (about) 1 package main 2 3 import ( 4 "bytes" 5 "io" 6 "os" 7 "testing" 8 ) 9 10 func TestTailReadBackwards(t *testing.T) { 11 input, err := os.Open("./test_samples/read_backwards.txt") 12 if err != nil { 13 t.Error(err) 14 } 15 output := &bytes.Buffer{} 16 err = readLastLinesBackwards(input, output, 2) 17 if err != nil { 18 t.Error(err) 19 } 20 expected := []byte("second\nthird\n") 21 got := output.Bytes() 22 if !bytes.Equal(got, expected) { 23 t.Fatalf("Invalid result reading backwards. Got %v; want %v", got, expected) 24 } 25 // try reading more, which should return EOF 26 buf := make([]byte, 16) 27 n, err := input.Read(buf) 28 if err == nil { 29 t.Fatalf("Expected EOF, got more bytes instead: %v", string(buf[:n])) 30 } 31 if err != io.EOF { 32 t.Fatalf("Expected EOF, got another error instead: %v", err) 33 } 34 } 35 36 func TestTailReadFromBeginning(t *testing.T) { 37 input, err := os.Open("./test_samples/read_from_beginning.txt") 38 if err != nil { 39 t.Error(err) 40 } 41 output := &bytes.Buffer{} 42 err = readLastLinesFromBeginning(input, output, 3) 43 if err != nil { 44 t.Error(err) 45 } 46 expected := []byte("eight\nnine\nten\n") 47 got := make([]byte, 4096) // anything larger than the expected result 48 n, err := output.Read(got) 49 if err != nil { 50 t.Fatal(err) 51 } 52 if !bytes.Equal(got[:n], expected) { 53 t.Fatalf("Invalid data while reading from the beginning. Got %v; want %v", string(got[:n]), string(expected)) 54 } 55 // try reading more, which should return EOF 56 buf := make([]byte, 16) 57 n, err = input.Read(buf) 58 if err == nil { 59 t.Fatalf("Expected EOF, got more bytes instead: %v", string(buf[:n])) 60 } 61 if err != io.EOF { 62 t.Fatalf("Expected EOF, got another error instead: %v", err) 63 } 64 }