add reviewer parsing

This commit is contained in:
Adam Majer 2025-02-05 14:43:38 +01:00
parent c0c467d72b
commit 656a3bacdf
2 changed files with 73 additions and 0 deletions

35
workflow-pr/reviewers.go Normal file
View File

@ -0,0 +1,35 @@
package main
import (
"slices"
"src.opensuse.org/autogits/common"
)
type Reviewers struct {
Prj []string
Pkg []string
}
func ParseReviewers(input []string) *Reviewers {
r := &Reviewers{}
for _, reviewer := range input {
switch reviewer[0] {
case '*':
r.Prj = append(r.Prj, reviewer[1:])
r.Pkg = append(r.Pkg, reviewer[1:])
case '-':
r.Prj = append(r.Prj, reviewer[1:])
case '+':
r.Pkg = append(r.Pkg, reviewer[1:])
default:
r.Pkg = append(r.Pkg, reviewer)
}
}
if !slices.Contains(r.Prj, common.Bot_BuildReview) {
r.Prj = append(r.Prj, common.Bot_BuildReview)
}
return r
}

View File

@ -0,0 +1,38 @@
package main
import (
"slices"
"testing"
"src.opensuse.org/autogits/common"
)
func TestReviewers(t *testing.T) {
tests := []struct {
name string
input []string
prj []string
pkg []string
}{
{
name: "project and package reviewers",
input: []string{"1", "2", "3", "*5", "+6", "-7"},
prj: []string{"5", "7", common.Bot_BuildReview},
pkg: []string{"1", "2", "3", "5", "6"},
},
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
reviewers := ParseReviewers(test.input)
if !slices.Equal(reviewers.Prj, test.prj) {
t.Error("unexpected return of ForProject():", reviewers.Prj)
}
if !slices.Equal(reviewers.Pkg, test.pkg) {
t.Error("unexpected return of ForProject():", reviewers.Pkg)
}
})
}
}