vendor test tools in submodule

Instead of using the main module we should vendor the test tools in a
different directory. That way we do not add extra dependencies to the
main module which can be problemetic for packages or other users.

This is already done in buildah so this makes us more consitent.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
This commit is contained in:
Paul Holzinger
2022-05-04 14:17:02 +02:00
parent 9166894c69
commit 3b9177995e
442 changed files with 165208 additions and 78 deletions

View File

@ -0,0 +1,61 @@
package messageregexp
import (
"fmt"
"regexp"
"strings"
"github.com/vbatts/git-validation/git"
"github.com/vbatts/git-validation/validate"
)
func init() {
validate.RegisterRule(RegexpRule)
}
var (
// RegexpRule for validating a user provided regex on the commit messages
RegexpRule = validate.Rule{
Name: "message_regexp",
Description: "checks the commit message for a user provided regular expression",
Run: ValidateMessageRegexp,
Default: false, // only for users specifically calling it through -run ...
}
)
// ValidateMessageRegexp is the message regex func to run
func ValidateMessageRegexp(r validate.Rule, c git.CommitEntry) (vr validate.Result) {
if r.Value == "" {
vr.Pass = true
vr.Msg = "noop: message_regexp value is blank"
return vr
}
re := regexp.MustCompile(r.Value)
vr.CommitEntry = c
if len(strings.Split(c["parent"], " ")) > 1 {
vr.Pass = true
vr.Msg = "merge commits are not checked for message_regexp"
return vr
}
hasValid := false
for _, line := range strings.Split(c["subject"], "\n") {
if re.MatchString(line) {
hasValid = true
}
}
for _, line := range strings.Split(c["body"], "\n") {
if re.MatchString(line) {
hasValid = true
}
}
if !hasValid {
vr.Pass = false
vr.Msg = fmt.Sprintf("commit message does not match %q", r.Value)
} else {
vr.Pass = true
vr.Msg = fmt.Sprintf("commit message matches %q", r.Value)
}
return vr
}