Ejemplo n.º 1
0
func waitOrFail(t *testing.T, child *gexpect.ExpectSubprocess, expectedStatus int) {
	err := child.Wait()
	status := getExitStatus(err)
	if status != expectedStatus {
		t.Fatalf("rkt terminated with unexpected status %d, expected %d\nOutput:\n%s", status, expectedStatus, child.Collect())
	}
}
Ejemplo n.º 2
0
func checkExitStatus(child *gexpect.ExpectSubprocess) error {
	err := child.Wait()
	status, _ := common.GetExitStatus(err)
	if status != 0 {
		return fmt.Errorf("rkt terminated with unexpected status %d, expected %d\nOutput:\n%s", status, 0, child.Collect())
	}

	return nil
}
Ejemplo n.º 3
0
func waitOrFail(t *testing.T, child *gexpect.ExpectSubprocess, shouldSucceed bool) {
	err := child.Wait()
	switch {
	case !shouldSucceed && err == nil:
		t.Fatalf("Expected test to fail but it didn't\nOutput:\n%s", child.Collect())
	case shouldSucceed && err != nil:
		t.Fatalf("rkt didn't terminate correctly: %v\nOutput:\n%s", err, child.Collect())
	case err != nil && err.Error() != "exit status 1":
		t.Fatalf("rkt terminated with unexpected error: %v\nOutput:\n%s", err, child.Collect())
	}
}
Ejemplo n.º 4
0
// waitOrFail waits for the child to exit, draining all its output.
// If a non-negative return value is provided, child exit status must match.
func waitOrFail(t *testing.T, child *gexpect.ExpectSubprocess, expectedStatus int) {
	bufOut := []string{}
	// TODO(lucab): gexpect should accept those channels from the caller
	ttyIn, ttyOut := child.AsyncInteractChannels()
	close(ttyIn)
	// drain output till gexpect closes the channel (on EOF or error)
	for line := range ttyOut {
		bufOut = append(bufOut, line)
	}
	err := child.Wait()
	status, _ := common.GetExitStatus(err)
	if expectedStatus >= 0 && status != expectedStatus {
		t.Fatalf("rkt terminated with unexpected status %d, expected %d\nOutput:\n%s", status, expectedStatus, bufOut)
	}
}
Ejemplo n.º 5
0
func (a *GoroutineAssistant) WaitOrFail(child *gexpect.ExpectSubprocess) {
	err := child.Wait()
	if err != nil {
		a.Fatalf("rkt didn't terminate correctly: %v", err)
	}
}