64 lines
1.3 KiB
Go
64 lines
1.3 KiB
Go
package cli
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
"k8s.io/client-go/tools/remotecommand"
|
|
)
|
|
|
|
func Test_TerminalSizeQueue(t *testing.T) {
|
|
t.Parallel()
|
|
t.Run("Next returns pushed size", func(t *testing.T) {
|
|
q := NewTerminalSizeQueue()
|
|
defer q.Close()
|
|
|
|
go q.Push(80, 24)
|
|
size := q.Next()
|
|
require.NotNil(t, size)
|
|
require.Equal(t, uint16(80), size.Width)
|
|
require.Equal(t, uint16(24), size.Height)
|
|
})
|
|
|
|
t.Run("Next returns sizes in push order", func(t *testing.T) {
|
|
q := NewTerminalSizeQueue()
|
|
defer q.Close()
|
|
|
|
go q.Push(80, 24)
|
|
size := q.Next()
|
|
require.NotNil(t, size)
|
|
require.Equal(t, uint16(80), size.Width)
|
|
require.Equal(t, uint16(24), size.Height)
|
|
|
|
go q.Push(120, 40)
|
|
size = q.Next()
|
|
require.NotNil(t, size)
|
|
require.Equal(t, uint16(120), size.Width)
|
|
require.Equal(t, uint16(40), size.Height)
|
|
})
|
|
|
|
t.Run("Close causes Next to return nil", func(t *testing.T) {
|
|
q := NewTerminalSizeQueue()
|
|
q.Close()
|
|
|
|
size := q.Next()
|
|
require.Nil(t, size)
|
|
})
|
|
|
|
t.Run("Next unblocks when queue is closed", func(t *testing.T) {
|
|
q := NewTerminalSizeQueue()
|
|
|
|
result := make(chan *remotecommand.TerminalSize, 1)
|
|
go func() { result <- q.Next() }()
|
|
|
|
q.Close()
|
|
require.Nil(t, <-result)
|
|
})
|
|
|
|
t.Run("Close is idempotent", func(t *testing.T) {
|
|
q := NewTerminalSizeQueue()
|
|
q.Close()
|
|
q.Close()
|
|
})
|
|
}
|