mirror of
				https://github.com/moby/moby.git
				synced 2022-11-09 12:21:53 -05:00 
			
		
		
		
	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>
This commit is contained in:
		
							parent
							
								
									ba02880786
								
							
						
					
					
						commit
						d339130f30
					
				
					 2 changed files with 32 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue