1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
// Copyright 2015 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package term
import "testing"
// TestSSH tests the Termios<>SSH term attribute conversions.
func TestSSH(t *testing.T) {
pty, err := OpenPTY()
if err != nil {
t.Fatalf("OpenPTY failed: %v", err)
}
defer pty.Close()
sTerm, err := Attr(pty.Slave)
if err != nil {
t.Fatalf("Reading PTY slave attributes failed: %v", err)
}
sTerm.Ispeed, sTerm.Ospeed = 19200, 300 // Normally set to 0 so putting something in there for the test.
var dTerm Termios
dTerm.FromSSH(sTerm.ToSSH())
sTerm.Cflag &= CS7 | CS8 | PARENB | PARODD // The only term control modes in the SSH standard.
if sTerm != dTerm {
t.Errorf("terminal modes does not match, got: %v want: %v", dTerm, sTerm)
}
sTerm.Raw()
dTerm.FromSSH(sTerm.ToSSH())
if err := testraw(dTerm, "sshTerm"); err != nil {
t.Errorf("TestSSH failed: %v", err)
}
sTerm.Cook()
dTerm.FromSSH(sTerm.ToSSH())
dTerm.Iflag += BRKINT // Not in the SSH standard but set for Linux cooked mode.
if err := testcook(dTerm, "sshTerm"); err != nil {
t.Errorf("TestSSH failed: %v", err)
}
}
|