Skip to content

Commit

Permalink
Add openClose helper in tests to remove duplication.
Browse files Browse the repository at this point in the history
  • Loading branch information
creack committed Oct 31, 2023
1 parent bc68e99 commit ccf8e7e
Showing 1 changed file with 27 additions and 90 deletions.
117 changes: 27 additions & 90 deletions doc_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,30 +13,37 @@ func readBytes(r io.Reader, p []byte) error {
return err
}

func TestOpen(t *testing.T) {
t.Parallel()
// openCloses opens a pty/tty pair and stages the closing as part of the cleanup.
func openClose(t *testing.T) (pty, tty *os.File) {
t.Helper()

pty, tty, err := Open()
if err != nil {
t.Fatalf("Unexpected error from Open: %s.", err)
}
t.Cleanup(func() {
if err := tty.Close(); err != nil {
t.Errorf("Unexpected error from tty Close: %s.", err)
}

if err := tty.Close(); err != nil {
t.Errorf("Unexpected error from tty Close: %s.", err)
}
if err := pty.Close(); err != nil {
t.Errorf("Unexpected error from pty Close: %s.", err)
}
})

if err := pty.Close(); err != nil {
t.Errorf("Unexpected error from pty Close: %s.", err)
}
return pty, tty
}

func TestOpen(t *testing.T) {
t.Parallel()

openClose(t)
}

func TestName(t *testing.T) {
t.Parallel()

pty, tty, err := Open()
if err != nil {
t.Fatalf("Unexpected error from Open: %s.", err)
}
pty, tty := openClose(t)

// Check name isn't empty. There's variation on what exactly the OS calls these files.
if pty.Name() == "" {
Expand All @@ -45,14 +52,6 @@ func TestName(t *testing.T) {
if tty.Name() == "" {
t.Error("Tty name was empty.")
}

if err := tty.Close(); err != nil {
t.Errorf("Unexpected error from tty Close: %s", err)
}

if err := pty.Close(); err != nil {
t.Errorf("Unexpected error from pty Close: %s", err)
}
}

// TestOpenByName ensures that the name associated with the tty is valid
Expand All @@ -61,12 +60,7 @@ func TestName(t *testing.T) {
func TestOpenByName(t *testing.T) {
t.Parallel()

pty, tty, err := Open()
if err != nil {
t.Fatalf("Error: open: %s.", err)
}
defer func() { _ = pty.Close() }()
defer func() { _ = tty.Close() }()
pty, tty := openClose(t)

ttyFile, err := os.OpenFile(tty.Name(), os.O_RDWR, 0o600)
if err != nil {
Expand Down Expand Up @@ -96,10 +90,7 @@ func TestOpenByName(t *testing.T) {
func TestGetsize(t *testing.T) {
t.Parallel()

pty, tty, err := Open()
if err != nil {
t.Fatalf("Unexpected error from Open: %s.", err)
}
pty, tty := openClose(t)

prows, pcols, err := Getsize(pty)
if err != nil {
Expand All @@ -117,23 +108,12 @@ func TestGetsize(t *testing.T) {
if prows != trows {
t.Errorf("pty cols != tty cols: %d != %d.", pcols, tcols)
}

if err := tty.Close(); err != nil {
t.Errorf("Unexpected error from tty Close: %s.", err)
}

if err := pty.Close(); err != nil {
t.Errorf("Unexpected error from pty Close: %s.", err)
}
}

func TestGetsizefull(t *testing.T) {
t.Parallel()

pty, tty, err := Open()
if err != nil {
t.Fatalf("Unexpected error from Open: %s.", err)
}
pty, tty := openClose(t)

psize, err := GetsizeFull(pty)
if err != nil {
Expand All @@ -157,23 +137,12 @@ func TestGetsizefull(t *testing.T) {
if psize.Cols != tsize.Cols {
t.Errorf("pty cols != tty cols: %d != %d.", psize.Cols, tsize.Cols)
}

if err := tty.Close(); err != nil {
t.Errorf("Unexpected error from tty Close: %s.", err)
}

if err := pty.Close(); err != nil {
t.Errorf("Unexpected error from pty Close: %s.", err)
}
}

func TestSetsize(t *testing.T) {
t.Parallel()

pty, tty, err := Open()
if err != nil {
t.Fatalf("Unexpected error from Open: %s.", err)
}
pty, tty := openClose(t)

psize, err := GetsizeFull(pty)
if err != nil {
Expand Down Expand Up @@ -206,29 +175,18 @@ func TestSetsize(t *testing.T) {
if psize.Cols != tsize.Cols {
t.Errorf("pty cols != tty cols: %d != %d.", psize.Cols, tsize.Cols)
}

if err := tty.Close(); err != nil {
t.Errorf("Unexpected error from tty Close: %s.", err)
}

if err := pty.Close(); err != nil {
t.Errorf("Unexpected error from pty Close: %s.", err)
}
}

func TestReadWriteText(t *testing.T) {
t.Parallel()

pty, tty, err := Open()
if err != nil {
t.Fatalf("Unexpected error from Open: %s.", err)
}
pty, tty := openClose(t)

// Write to tty, read from pty
text := []byte("ping")
n, err := tty.Write(text)
if err != nil {
t.Errorf("Unexpected error from Write: %s", err)
t.Fatalf("Unexpected error from Write: %s", err)
}
if n != len(text) {
t.Errorf("Unexpected count returned from Write, got %d expected %d.", n, len(text))
Expand Down Expand Up @@ -256,7 +214,7 @@ func TestReadWriteText(t *testing.T) {
buffer = make([]byte, 5)
err = readBytes(tty, buffer)
if err != nil {
t.Errorf("Unexpected error from readBytes: %s.", err)
t.Fatalf("Unexpected error from readBytes: %s.", err)
}
expect := []byte("pong\n")
if !bytes.Equal(expect, buffer) {
Expand All @@ -273,25 +231,12 @@ func TestReadWriteText(t *testing.T) {
if !bytes.Equal(expect, buffer) {
t.Errorf("Unexpected result returned from Read, got %v expected %v.", buffer, expect)
}

err = tty.Close()
if err != nil {
t.Errorf("Unexpected error from tty Close: %s.", err)
}

err = pty.Close()
if err != nil {
t.Errorf("Unexpected error from pty Close: %s.", err)
}
}

func TestReadWriteControls(t *testing.T) {
t.Parallel()

pty, tty, err := Open()
if err != nil {
t.Fatalf("Unexpected error from Open: %s.", err)
}
pty, tty := openClose(t)

// Write the start of a line to pty.
text := []byte("pind")
Expand Down Expand Up @@ -342,12 +287,4 @@ func TestReadWriteControls(t *testing.T) {
if !bytes.Equal(expect, buffer) {
t.Errorf("Unexpected result returned from Read, got %v expected %v.", buffer, expect)
}

if err := tty.Close(); err != nil {
t.Errorf("Unexpected error from tty Close: %s.", err)
}

if err := pty.Close(); err != nil {
t.Errorf("Unexpected error from pty Close: %s.", err)
}
}

0 comments on commit ccf8e7e

Please sign in to comment.