aboutsummaryrefslogtreecommitdiff
path: root/test/tools/vendor/github.com/vbatts/git-validation/validate/runner.go
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2022-05-05 05:53:18 -0400
committerGitHub <noreply@github.com>2022-05-05 05:53:18 -0400
commit88f8d398b357c60f8b78b8dedf1e1515a534b873 (patch)
tree6e3fa55f6c32b95c883480844193443b97540531 /test/tools/vendor/github.com/vbatts/git-validation/validate/runner.go
parent7af4612d6b969329a78b4945c35a641449989a2d (diff)
parent3866143675a2ccf15095b75b2c97b858d8ef0ab5 (diff)
downloadpodman-88f8d398b357c60f8b78b8dedf1e1515a534b873.tar.gz
podman-88f8d398b357c60f8b78b8dedf1e1515a534b873.tar.bz2
podman-88f8d398b357c60f8b78b8dedf1e1515a534b873.zip
Merge pull request #14098 from Luap99/test-tools
vendor test dependencies instead of installing via network
Diffstat (limited to 'test/tools/vendor/github.com/vbatts/git-validation/validate/runner.go')
-rw-r--r--test/tools/vendor/github.com/vbatts/git-validation/validate/runner.go109
1 files changed, 109 insertions, 0 deletions
diff --git a/test/tools/vendor/github.com/vbatts/git-validation/validate/runner.go b/test/tools/vendor/github.com/vbatts/git-validation/validate/runner.go
new file mode 100644
index 000000000..eea61fba1
--- /dev/null
+++ b/test/tools/vendor/github.com/vbatts/git-validation/validate/runner.go
@@ -0,0 +1,109 @@
+package validate
+
+import (
+ "fmt"
+ "os"
+ "path/filepath"
+
+ "github.com/vbatts/git-validation/git"
+)
+
+// Runner is the for processing a set of rules against a range of commits
+type Runner struct {
+ Root string
+ Rules []Rule
+ Results Results
+ Verbose bool
+ CommitRange string // if this is empty, then it will default to FETCH_HEAD, then HEAD
+}
+
+// NewRunner returns an initiallized Runner.
+func NewRunner(root string, rules []Rule, commitrange string, verbose bool) (*Runner, error) {
+ newroot, err := filepath.Abs(root)
+ if err != nil {
+ return nil, fmt.Errorf("failed to get absolute path of %q: %s", root, err)
+ }
+ if commitrange == "" {
+ var err error
+ cwd, err := os.Getwd()
+ if err != nil {
+ return nil, err
+ }
+ defer os.Chdir(cwd)
+
+ if err := os.Chdir(newroot); err != nil {
+ return nil, err
+ }
+ commitrange, err = git.FetchHeadCommit()
+ if err != nil {
+ commitrange, err = git.HeadCommit()
+ if err != nil {
+ return nil, err
+ }
+ }
+ }
+ return &Runner{
+ Root: newroot,
+ Rules: rules,
+ CommitRange: commitrange,
+ Verbose: verbose,
+ }, nil
+}
+
+// Run processes the rules for each commit in the range provided
+func (r *Runner) Run() error {
+ cwd, err := os.Getwd()
+ if err != nil {
+ return err
+ }
+ defer os.Chdir(cwd)
+
+ if err := os.Chdir(r.Root); err != nil {
+ return err
+ }
+
+ // collect the entries
+ c, err := git.Commits(r.CommitRange)
+ if err != nil {
+ return err
+ }
+
+ // run them and show results
+ for _, commit := range c {
+ if os.Getenv("QUIET") == "" {
+ fmt.Printf(" * %s %q ... ", commit["abbreviated_commit"], commit["subject"])
+ }
+ vr := Commit(commit, r.Rules)
+ r.Results = append(r.Results, vr...)
+ _, fail := vr.PassFail()
+ if os.Getenv("QUIET") != "" {
+ if fail != 0 {
+ for _, res := range vr {
+ if !res.Pass {
+ fmt.Printf(" %s - FAIL - %s\n", commit["abbreviated_commit"], res.Msg)
+ }
+ }
+ }
+ // everything else in the loop is printing output.
+ // If we're quiet, then just continue
+ continue
+ }
+ if fail == 0 {
+ fmt.Println("PASS")
+ } else {
+ fmt.Println("FAIL")
+ }
+ for _, res := range vr {
+ if r.Verbose {
+ if res.Pass {
+ fmt.Printf(" - PASS - %s\n", res.Msg)
+ } else {
+ fmt.Printf(" - FAIL - %s\n", res.Msg)
+ }
+ } else if !res.Pass {
+ fmt.Printf(" - FAIL - %s\n", res.Msg)
+ }
+ }
+ }
+ return nil
+}