Blob Blame History Raw
diff --git a/pkg/terminal/command_test.go b/pkg/terminal/command_test.go
index 14fb795..350347f 100644
--- a/pkg/terminal/command_test.go
+++ b/pkg/terminal/command_test.go
@@ -278,6 +278,19 @@ func TestIssue411(t *testing.T) {
 	})
 }
 
+func TestExitStatus(t *testing.T) {
+	withTestTerminal("continuetestprog", t, func(term *FakeTerminal) {
+		term.Exec("continue")
+		status, err := term.handleExit()
+		if err != nil {
+			t.Fatal(err)
+		}
+		if status != 0 {
+			t.Fatalf("incorrect exit status, expected 0, got %d", status)
+		}
+	})
+}
+
 func TestScopePrefix(t *testing.T) {
 	const goroutinesLinePrefix = "  Goroutine "
 	const goroutinesCurLinePrefix = "* Goroutine "
diff --git a/pkg/terminal/terminal.go b/pkg/terminal/terminal.go
index cb59de9..b8ae4d8 100644
--- a/pkg/terminal/terminal.go
+++ b/pkg/terminal/terminal.go
@@ -354,17 +354,20 @@ func (t *Term) handleExit() (int, error) {
 
 	s, err := t.client.GetState()
 	if err != nil {
-		if isErrProcessExited(err) && t.client.IsMulticlient() {
-			answer, err := yesno(t.line, "Remote process has exited. Would you like to kill the headless instance? [Y/n] ")
-			if err != nil {
-				return 2, io.EOF
-			}
-			if answer {
-				if err := t.client.Detach(true); err != nil {
-					return 1, err
+		if isErrProcessExited(err) {
+			if t.client.IsMulticlient() {
+				answer, err := yesno(t.line, "Remote process has exited. Would you like to kill the headless instance? [Y/n] ")
+				if err != nil {
+					return 2, io.EOF
+				}
+				if answer {
+					if err := t.client.Detach(true); err != nil {
+						return 1, err
+					}
 				}
+				return 0, err
 			}
-			return 0, err
+			return 0, nil
 		}
 		return 1, err
 	}