예제 #1
0
파일: cli.go 프로젝트: rjeczalik/pulsekit
// Wait TODO(rjeczalik): document
func (cli *CLI) Wait(ctx *cli.Context) {
	if err := cli.init(ctx); err != nil {
		cli.Err(err)
		return
	}
	p := cli.p.String()
	if p == "" || p == ".*" {
		cli.Err("pulsecli: a --project name is missing")
		return
	}
	id, err := util.NormalizeBuildOrRequestID(cli.c, p, cli.n)
	if err != nil {
		cli.Err(err)
		return
	}
	select {
	case <-time.After(cli.d):
		err = pulse.ErrTimeout
	case err = <-util.Wait(cli.c, time.Second, p, id):
	}
	if err != nil {
		cli.Err(err)
		return
	}
}
예제 #2
0
func accept(t *testing.T, p string, ok bool) {
	c, teardown := fixture(t)
	defer teardown()
	reqid, err := c.Trigger(p)
	if err != nil {
		t.Fatalf("error triggering build %q: %v", p, err)
	}
	if len(reqid) != 1 {
		t.Fatalf("invalid length of the trigger response: len(reqid)=%d", len(reqid))
	}
	id, err := c.BuildID(reqid[0])
	if err != nil {
		t.Fatalf("error requesting build ID: %v", err)
	}
	done := util.Wait(c, 125*time.Millisecond, p, id)
	select {
	case <-done:
	case <-time.After(time.Minute):
	}
	build, err := c.BuildResult(p, id)
	if err != nil {
		t.Fatalf("error requesting build state: %v", err)
	}
	if len(build) != 1 {
		t.Errorf("expected len(build) to be 1, was %d instead", len(build))
	}
	if !util.Pending(build) {
		if !build[0].Complete {
			t.Errorf("expected p=%q build=%d to be completed", p, id)
		}
		if build[0].Success != ok {
			t.Errorf("expected p=%q build=%d to be successful=%v", p, id, ok)
		}
	}
}