func withTestTerminal(name string, t testing.TB, fn func(*FakeTerminal)) { os.Setenv("TERM", "dumb") listener, err := net.Listen("tcp", "localhost:0") if err != nil { t.Fatalf("couldn't start listener: %s\n", err) } defer listener.Close() server := rpc2.NewServer(&service.Config{ Listener: listener, ProcessArgs: []string{test.BuildFixture(name).Path}, }, false) if err := server.Run(); err != nil { t.Fatal(err) } client := rpc2.NewClient(listener.Addr().String()) defer func() { client.Detach(true) }() ft := &FakeTerminal{ t: t, Term: New(client, nil), } fn(ft) }
func withTestProcess(name string, t *testing.T, fn func(p *Process, fixture protest.Fixture)) { fixture := protest.BuildFixture(name) p, err := Launch([]string{fixture.Path}) if err != nil { t.Fatal("Launch():", err) } defer func() { p.Halt() p.Detach(true) }() fn(p, fixture) }
func withTestProcessArgs(name string, t testing.TB, fn func(p *Process, fixture protest.Fixture), args []string) { fixture := protest.BuildFixture(name) p, err := Launch(append([]string{fixture.Path}, args...)) if err != nil { t.Fatal("Launch():", err) } defer func() { p.Halt() p.Kill() }() fn(p, fixture) }
func withTestClient(name string, t *testing.T, fn func(c service.Client)) { listener, err := net.Listen("tcp", "localhost:0") if err != nil { t.Fatalf("couldn't start listener: %s\n", err) } defer listener.Close() server := rpc.NewServer(&service.Config{ Listener: listener, ProcessArgs: []string{protest.BuildFixture(name).Path}, }, false) if err := server.Run(); err != nil { t.Fatal(err) } client := rpc.NewClient(listener.Addr().String()) defer func() { client.Detach(true) }() fn(client) }