33 lines
779 B
Go
33 lines
779 B
Go
package app
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/hjbdev/patterm/internal/protocol"
|
|
)
|
|
|
|
func TestClientSubscriberCopiesChunksAndMarksSnapshotOnOverflow(t *testing.T) {
|
|
sub := newClientSubscriber(&Project{Key: "project"}, "client", 1)
|
|
chunk := []byte("first")
|
|
sub.OnPTYOut("p_123456", chunk)
|
|
chunk[0] = 'X'
|
|
|
|
f, ok := sub.Recv()
|
|
if !ok {
|
|
t.Fatalf("Recv closed")
|
|
}
|
|
payload, err := protocol.Decode[protocol.PaneChunk](f)
|
|
if err != nil {
|
|
t.Fatalf("Decode: %v", err)
|
|
}
|
|
if string(payload.Bytes) != "first" {
|
|
t.Fatalf("payload retained pump buffer: %q", string(payload.Bytes))
|
|
}
|
|
|
|
sub.OnPTYOut("p_123456", []byte("queued"))
|
|
sub.OnPTYOut("p_123456", []byte("dropped"))
|
|
if !sub.SnapshotRequired("p_123456") {
|
|
t.Fatalf("overflow did not mark pane snapshot required")
|
|
}
|
|
}
|