Skip to content

Commit

Permalink
Exit a test early if a session has exited
Browse files Browse the repository at this point in the history
Signed-off-by: Parthvi Vala <[email protected]>
  • Loading branch information
valaparthvi committed Apr 3, 2023
1 parent eaa9c1c commit f9364cb
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 3 deletions.
9 changes: 8 additions & 1 deletion tests/helper/helper_dev.go
Original file line number Diff line number Diff line change
Expand Up @@ -176,27 +176,34 @@ func (o DevSession) Kill() {

// Stop a Dev session cleanly (equivalent as hitting Ctrl-c)
func (o *DevSession) Stop() {
if o.session == nil {
return
}
if o.console != nil {
err := o.console.Close()
gomega.Expect(err).NotTo(gomega.HaveOccurred())
}
if o.stopped {
return
}

err := terminateProc(o.session)
gomega.Expect(err).NotTo(gomega.HaveOccurred())
o.stopped = true
}

func (o *DevSession) PressKey(p byte) {
if o.console == nil {
if o.console == nil || o.session == nil {
return
}
_, err := o.console.Write([]byte{p})
Expect(err).ToNot(HaveOccurred())
}

func (o DevSession) WaitEnd() {
if o.session == nil {
return
}
o.session.Wait(3 * time.Minute)
}

Expand Down
18 changes: 16 additions & 2 deletions tests/helper/helper_run.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,17 @@ func CmdRunner(program string, args ...string) *gexec.Session {
return session
}

// WaitForOutputToContain waits for the session stdout output to contain a particular substring
// WaitForOutputToContain waits for the session stdout output to contain a particular substring;
// if the session exits, it checks for the substring and returns early
func WaitForOutputToContain(substring string, timeoutInSeconds int, intervalInSeconds int, session *gexec.Session) {

Eventually(func() string {
<<<<<<< Updated upstream
=======
if session.ExitCode() != -1 {
Expect(string(session.Out.Contents())).To(ContainSubstring(substring), "session exited, but substring not found")
}
// TODO: if the session has exited, return early
>>>>>>> Stashed changes
contents := string(session.Out.Contents())
return contents
}, timeoutInSeconds, intervalInSeconds).Should(ContainSubstring(substring))
Expand All @@ -59,15 +66,22 @@ func WaitForOutputToContainOne(substrings []string, timeoutInSeconds int, interv
matchers = append(matchers, ContainSubstring(substring))
}
Eventually(func() string {
if session.ExitCode() != -1 {
Expect(string(session.Out.Contents())).To(SatisfyAny(matchers...), "session exited, but substring not found")
}
contents := string(session.Out.Contents())
return contents
}, timeoutInSeconds, intervalInSeconds).Should(SatisfyAny(matchers...))
}

// WaitForErroutToContain waits for the session stdout output to contain a particular substring
// if the session exits, it checks for the substring and returns early
func WaitForErroutToContain(substring string, timeoutInSeconds int, intervalInSeconds int, session *gexec.Session) {

Eventually(func() string {
if session.ExitCode() != -1 {
Expect(string(session.Err.Contents())).To(ContainSubstring(substring), "session exited, but substring not found")
}
contents := string(session.Err.Contents())
return contents
}, timeoutInSeconds, intervalInSeconds).Should(ContainSubstring(substring))
Expand Down

0 comments on commit f9364cb

Please sign in to comment.