func doStringAssert()

in asserts/asserts.go [94:120]


func doStringAssert(value string, rule specs.StringAssert) string {
	if rule.Exactly != nil && value != *rule.Exactly {
		return fmt.Sprintf("Should have matched exactly:\n%s\n... but was:\n%s", *rule.Exactly, value)
	}
	if rule.NotContains != nil && strings.Contains(value, *rule.NotContains) {
		return fmt.Sprintf("Should have not contained:\n%s\n... but was:\n%s", *rule.NotContains, value)
	}
	if rule.Equals != nil {
		trimmed := strings.TrimSpace(value)
		if trimmed != *rule.Equals {
			return fmt.Sprintf("Should have been:\n%s\n... but was:\n%s", *rule.Equals, trimmed)
		}
	}
	if rule.Contains != nil && !strings.Contains(value, *rule.Contains) {
		return fmt.Sprintf("Should have contained:\n%s\n... but was:\n%s", *rule.Contains, value)
	}
	if rule.Matches != nil {
		r, err := regexp.Compile(*rule.Matches)
		if err != nil {
			return fmt.Sprintf("Regex failed to compile: %s", *rule.Matches)
		}
		if !r.MatchString(value) {
			return fmt.Sprintf("Should have matched regex:\n%s\n... but was:\n%s", *rule.Matches, value)
		}
	}
	return ""
}