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
40
41
42
43
44
45
46
47
48
|
package main
import (
"fmt"
"io/ioutil"
"os"
"os/exec"
"testing"
"github.com/pkg/term/termios"
"gotest.tools/golden"
)
func TestMain(m *testing.M) {
switch os.Getenv("GOTESTMODE") {
case "main":
// run the normal main function
main()
default:
os.Exit(m.Run())
}
}
func TestCLI(t *testing.T) {
pty, tty, err := termios.Pty()
if err != nil {
t.Fatal(err)
}
defer pty.Close()
cmd := exec.Command(os.Args[0], "-com", tty.Name(), "./testdata/ceottk.mid")
cmd.Env = append(os.Environ(), "GOTESTMODE=main")
output, err := cmd.Output()
if err != nil {
fmt.Printf("output: %s\n", string(output))
t.Fatal(err)
}
tty.Close()
b, err := ioutil.ReadAll(pty)
if err != nil && err.Error() != "read ptm: input/output error" {
t.Errorf("error reading pty: %+v", err)
}
golden.AssertBytes(t, b, "ceottk-serial.golden.bin")
golden.Assert(t, string(output), "ceottk-output.golden")
}
|