File: ssh_test.go

package info (click to toggle)
golang-github-google-goterm 0.0~git20200907.555d40f-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 184 kB
  • sloc: makefile: 4
file content (39 lines) | stat: -rw-r--r-- 1,200 bytes parent folder | download
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)
	}
}