in tests.go [246:285]
func (c CheckOutput) Check(dt string, p string) (retErr error) {
if c.Empty {
if dt != "" {
return &CheckOutputError{Kind: "empty", Expected: "", Actual: dt, Path: p}
}
// Anything else would be nonsensical and it would make sense to return early...
// But we'll check it anyway and it should fail since this would be an invalid CheckOutput
}
if c.Equals != "" && c.Equals != dt {
return &CheckOutputError{Expected: c.Equals, Actual: dt, Path: p}
}
for _, contains := range c.Contains {
if contains != "" && !strings.Contains(dt, contains) {
return &CheckOutputError{Kind: "contains", Expected: contains, Actual: dt, Path: p}
}
}
for _, matches := range c.Matches {
regexp, err := regexp.Compile(matches)
if err != nil {
return err
}
if !regexp.Match([]byte(dt)) {
return &CheckOutputError{Kind: "matches", Expected: matches, Actual: dt, Path: p}
}
}
if c.StartsWith != "" && !strings.HasPrefix(dt, c.StartsWith) {
return &CheckOutputError{Kind: "starts_with", Expected: c.StartsWith, Actual: dt, Path: p}
}
if c.EndsWith != "" && !strings.HasSuffix(dt, c.EndsWith) {
return &CheckOutputError{Kind: "ends_with", Expected: c.EndsWith, Actual: dt, Path: p}
}
return nil
}