Documentation
¶
Index ¶
Constants ¶
const DefaultDeadline = 10 * time.Minute
DefaultDeadline bounds one mutant's test command.
Ditto bounded nothing before this. `gobuildrunner` runs a test binary directly, where -test.timeout defaults to 0 and a looping mutant never returns, and loopcondition, loopbreak and rangebreak are all in the default virus set. On the ordinary path the only bound was whatever the user's own command carried.
Ten minutes is `go test`'s own default, which is the number a Go suite is already written against, so it stops a hang without turning a slow honest suite into a false kill. PIT and Stryker derive theirs from the unmutated run's duration instead -- a factor plus a constant -- which is better and is recorded in docs/backlog.md rather than guessed at here.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CMDTestRunner ¶
type CMDTestRunner struct {
// contains filtered or unexported fields
}
func New ¶
func New(name string, args ...string) *CMDTestRunner
func NewWithDeadline ¶ added in v0.7.0
func NewWithDeadline(deadline time.Duration, name string, args ...string) *CMDTestRunner
NewWithDeadline is New with the bound named. A mutant whose command runs past it is stopped and reported as killed BY THE DEADLINE, which PIT, Stryker and Infection all treat as a kill carrying its own reason.
func (*CMDTestRunner) Test ¶
func (t *CMDTestRunner) Test(repository ditto.TemporaryRepository) result.Result[string]