github.com/kaisenlinux/docker.io@v0.0.0-20230510090727-ea55db55fac7/engine/daemon/logger/loggerutils/follow_test.go (about)

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