From d339130f307634a0edd6aef29b6934c3934e9ba2 Mon Sep 17 00:00:00 2001 From: Patrik Cyvoct Date: Thu, 26 Apr 2018 17:19:01 +0200 Subject: [PATCH] Add verification and test to check if escapeKeys is not empty In pkg/term/proxy.go and pkg/term/proxy_test.go, check if escapeKeys is empty and if it is, return the one key read Signed-off-by: Patrik Cyvoct --- pkg/term/proxy.go | 4 ++++ pkg/term/proxy_test.go | 30 ++++++++++++++++++++++++++++-- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/pkg/term/proxy.go b/pkg/term/proxy.go index 5c4a5260fc..da733e5848 100644 --- a/pkg/term/proxy.go +++ b/pkg/term/proxy.go @@ -34,6 +34,10 @@ func NewEscapeProxy(r io.Reader, escapeKeys []byte) io.Reader { func (r *escapeProxy) Read(buf []byte) (int, error) { nr, err := r.r.Read(buf) + if len(r.escapeKeys) == 0 { + return nr, err + } + preserve := func() { // this preserves the original key presses in the passed in buffer nr += r.escapeKeyPos diff --git a/pkg/term/proxy_test.go b/pkg/term/proxy_test.go index 759be51456..72f53e58d1 100644 --- a/pkg/term/proxy_test.go +++ b/pkg/term/proxy_test.go @@ -10,8 +10,8 @@ import ( ) func TestEscapeProxyRead(t *testing.T) { - escapeKeys, _ := ToBytes("DEL") - keys, _ := ToBytes("a,b,c,+") + escapeKeys, _ := ToBytes("") + keys, _ := ToBytes("a") reader := NewEscapeProxy(bytes.NewReader(keys), escapeKeys) buf := make([]byte, len(keys)) nr, err := reader.Read(buf) @@ -19,6 +19,32 @@ func TestEscapeProxyRead(t *testing.T) { assert.Equal(t, nr, len(keys), fmt.Sprintf("nr %d should be equal to the number of %d", nr, len(keys))) assert.DeepEqual(t, keys, buf) + keys, _ = ToBytes("a,b,c") + reader = NewEscapeProxy(bytes.NewReader(keys), escapeKeys) + buf = make([]byte, len(keys)) + nr, err = reader.Read(buf) + assert.NilError(t, err) + assert.Equal(t, nr, len(keys), fmt.Sprintf("nr %d should be equal to the number of %d", nr, len(keys))) + assert.DeepEqual(t, keys, buf) + + keys, _ = ToBytes("") + reader = NewEscapeProxy(bytes.NewReader(keys), escapeKeys) + buf = make([]byte, len(keys)) + nr, err = reader.Read(buf) + assert.Assert(t, is.ErrorContains(err, ""), "Should throw error when no keys are to read") + assert.Equal(t, nr, 0, "nr should be zero") + assert.Check(t, is.Len(keys, 0)) + assert.Check(t, is.Len(buf, 0)) + + escapeKeys, _ = ToBytes("DEL") + keys, _ = ToBytes("a,b,c,+") + reader = NewEscapeProxy(bytes.NewReader(keys), escapeKeys) + buf = make([]byte, len(keys)) + nr, err = reader.Read(buf) + assert.NilError(t, err) + assert.Equal(t, nr, len(keys), fmt.Sprintf("nr %d should be equal to the number of %d", nr, len(keys))) + assert.DeepEqual(t, keys, buf) + keys, _ = ToBytes("") reader = NewEscapeProxy(bytes.NewReader(keys), escapeKeys) buf = make([]byte, len(keys))