mirror of
https://github.com/containers/podman.git
synced 2025-05-25 02:57:21 +08:00

Rather than checking for non-zero, we need to check for >0 to distinguish between timeouts and error exit codes. Signed-off-by: Jhon Honce <jhonce@redhat.com>
62 lines
1.6 KiB
Go
62 lines
1.6 KiB
Go
package utils
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/onsi/gomega/format"
|
|
"github.com/onsi/gomega/gexec"
|
|
)
|
|
|
|
// ExitWithError matches when assertion is > argument. Default 0
|
|
// Modeled after the gomega Exit() matcher
|
|
func ExitWithError(optionalExitCode ...int) *exitMatcher {
|
|
exitCode := 0
|
|
if len(optionalExitCode) > 0 {
|
|
exitCode = optionalExitCode[0]
|
|
}
|
|
return &exitMatcher{exitCode: exitCode}
|
|
}
|
|
|
|
type exitMatcher struct {
|
|
exitCode int
|
|
actualExitCode int
|
|
}
|
|
|
|
func (m *exitMatcher) Match(actual interface{}) (success bool, err error) {
|
|
exiter, ok := actual.(gexec.Exiter)
|
|
if !ok {
|
|
return false, fmt.Errorf("ExitWithError must be passed a gexec.Exiter (Missing method ExitCode() int) Got:\n#{format.Object(actual, 1)}")
|
|
}
|
|
|
|
m.actualExitCode = exiter.ExitCode()
|
|
if m.actualExitCode == -1 {
|
|
return false, nil
|
|
}
|
|
return m.actualExitCode > m.exitCode, nil
|
|
}
|
|
|
|
func (m *exitMatcher) FailureMessage(actual interface{}) (message string) {
|
|
if m.actualExitCode == -1 {
|
|
return "Expected process to exit. It did not."
|
|
}
|
|
return format.Message(m.actualExitCode, "to be greater than exit code:", m.exitCode)
|
|
}
|
|
|
|
func (m *exitMatcher) NegatedFailureMessage(actual interface{}) (message string) {
|
|
if m.actualExitCode == -1 {
|
|
return "you really shouldn't be able to see this!"
|
|
} else {
|
|
if m.exitCode == -1 {
|
|
return "Expected process not to exit. It did."
|
|
}
|
|
return format.Message(m.actualExitCode, "is less than or equal to exit code:", m.exitCode)
|
|
}
|
|
}
|
|
func (m *exitMatcher) MatchMayChangeInTheFuture(actual interface{}) bool {
|
|
session, ok := actual.(*gexec.Session)
|
|
if ok {
|
|
return session.ExitCode() == -1
|
|
}
|
|
return true
|
|
}
|