Browse code

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 <patrik@ptrk.io>

Patrik Cyvoct authored on 2018/04/27 00:19:01
Showing 2 changed files
... ...
@@ -34,6 +34,10 @@ func NewEscapeProxy(r io.Reader, escapeKeys []byte) io.Reader {
34 34
 func (r *escapeProxy) Read(buf []byte) (int, error) {
35 35
 	nr, err := r.r.Read(buf)
36 36
 
37
+	if len(r.escapeKeys) == 0 {
38
+		return nr, err
39
+	}
40
+
37 41
 	preserve := func() {
38 42
 		// this preserves the original key presses in the passed in buffer
39 43
 		nr += r.escapeKeyPos
... ...
@@ -10,8 +10,8 @@ import (
10 10
 )
11 11
 
12 12
 func TestEscapeProxyRead(t *testing.T) {
13
-	escapeKeys, _ := ToBytes("DEL")
14
-	keys, _ := ToBytes("a,b,c,+")
13
+	escapeKeys, _ := ToBytes("")
14
+	keys, _ := ToBytes("a")
15 15
 	reader := NewEscapeProxy(bytes.NewReader(keys), escapeKeys)
16 16
 	buf := make([]byte, len(keys))
17 17
 	nr, err := reader.Read(buf)
... ...
@@ -19,6 +19,32 @@ func TestEscapeProxyRead(t *testing.T) {
19 19
 	assert.Equal(t, nr, len(keys), fmt.Sprintf("nr %d should be equal to the number of %d", nr, len(keys)))
20 20
 	assert.DeepEqual(t, keys, buf)
21 21
 
22
+	keys, _ = ToBytes("a,b,c")
23
+	reader = NewEscapeProxy(bytes.NewReader(keys), escapeKeys)
24
+	buf = make([]byte, len(keys))
25
+	nr, err = reader.Read(buf)
26
+	assert.NilError(t, err)
27
+	assert.Equal(t, nr, len(keys), fmt.Sprintf("nr %d should be equal to the number of %d", nr, len(keys)))
28
+	assert.DeepEqual(t, keys, buf)
29
+
30
+	keys, _ = ToBytes("")
31
+	reader = NewEscapeProxy(bytes.NewReader(keys), escapeKeys)
32
+	buf = make([]byte, len(keys))
33
+	nr, err = reader.Read(buf)
34
+	assert.Assert(t, is.ErrorContains(err, ""), "Should throw error when no keys are to read")
35
+	assert.Equal(t, nr, 0, "nr should be zero")
36
+	assert.Check(t, is.Len(keys, 0))
37
+	assert.Check(t, is.Len(buf, 0))
38
+
39
+	escapeKeys, _ = ToBytes("DEL")
40
+	keys, _ = ToBytes("a,b,c,+")
41
+	reader = NewEscapeProxy(bytes.NewReader(keys), escapeKeys)
42
+	buf = make([]byte, len(keys))
43
+	nr, err = reader.Read(buf)
44
+	assert.NilError(t, err)
45
+	assert.Equal(t, nr, len(keys), fmt.Sprintf("nr %d should be equal to the number of %d", nr, len(keys)))
46
+	assert.DeepEqual(t, keys, buf)
47
+
22 48
 	keys, _ = ToBytes("")
23 49
 	reader = NewEscapeProxy(bytes.NewReader(keys), escapeKeys)
24 50
 	buf = make([]byte, len(keys))