follow_test.go 820 B

12345678910111213141516171819202122232425262728293031323334353637
  1. package loggerutils // import "github.com/docker/docker/daemon/logger/loggerutils"
  2. import (
  3. "io"
  4. "os"
  5. "testing"
  6. "gotest.tools/v3/assert"
  7. )
  8. func TestHandleDecoderErr(t *testing.T) {
  9. f, err := os.CreateTemp("", t.Name())
  10. assert.NilError(t, err)
  11. defer os.Remove(f.Name())
  12. _, err = f.Write([]byte("hello"))
  13. assert.NilError(t, err)
  14. pos, err := f.Seek(0, io.SeekCurrent)
  15. assert.NilError(t, err)
  16. assert.Assert(t, pos != 0)
  17. dec := &testDecoder{}
  18. // Simulate "turncate" case, where the file was bigger before.
  19. fl := &follow{file: f, dec: dec, oldSize: 100}
  20. err = fl.handleDecodeErr(io.EOF)
  21. assert.NilError(t, err)
  22. // handleDecodeErr seeks to zero.
  23. pos, err = f.Seek(0, io.SeekCurrent)
  24. assert.NilError(t, err)
  25. assert.Equal(t, int64(0), pos)
  26. // Reset is called.
  27. assert.Equal(t, 1, dec.resetCount)
  28. }