Skip to content

Commit 76b86ef

Browse files
committed
Add tests
1 parent ad0a3a5 commit 76b86ef

File tree

2 files changed

+29
-6
lines changed

2 files changed

+29
-6
lines changed

models/issues/pull.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -981,14 +981,14 @@ func GetCodeOwnersFromContent(ctx context.Context, data string) ([]*CodeOwnerRul
981981
warnings := make([]string, 0)
982982

983983
for i, line := range lines {
984-
tokens := tokenizeCodeOwnersLine(line)
984+
tokens := TokenizeCodeOwnersLine(line)
985985
if len(tokens) == 0 {
986986
continue
987987
} else if len(tokens) < 2 {
988988
warnings = append(warnings, fmt.Sprintf("Line: %d: incorrect format", i+1))
989989
continue
990990
}
991-
rule, wr := parseCodeOwnersLine(ctx, tokens)
991+
rule, wr := ParseCodeOwnersLine(ctx, tokens)
992992
for _, w := range wr {
993993
warnings = append(warnings, fmt.Sprintf("Line: %d: %s", i+1, w))
994994
}
@@ -1009,7 +1009,7 @@ type CodeOwnerRule struct {
10091009
Teams []*org_model.Team
10101010
}
10111011

1012-
func parseCodeOwnersLine(ctx context.Context, tokens []string) (*CodeOwnerRule, []string) {
1012+
func ParseCodeOwnersLine(ctx context.Context, tokens []string) (*CodeOwnerRule, []string) {
10131013
var err error
10141014
rule := &CodeOwnerRule{
10151015
Users: make([]*user_model.User, 0),
@@ -1064,15 +1064,15 @@ func parseCodeOwnersLine(ctx context.Context, tokens []string) (*CodeOwnerRule,
10641064
}
10651065
}
10661066

1067-
if len(rule.Users) == 0 {
1068-
warnings = append(warnings, "no users matched")
1067+
if (len(rule.Users) == 0) && (len(rule.Teams) == 0) {
1068+
warnings = append(warnings, "no users/groups matched")
10691069
return nil, warnings
10701070
}
10711071

10721072
return rule, warnings
10731073
}
10741074

1075-
func tokenizeCodeOwnersLine(line string) []string {
1075+
func TokenizeCodeOwnersLine(line string) []string {
10761076
if len(line) == 0 {
10771077
return nil
10781078
}

models/issues/pull_test.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,3 +303,26 @@ func TestDeleteOrphanedObjects(t *testing.T) {
303303
assert.NoError(t, err)
304304
assert.EqualValues(t, countBefore, countAfter)
305305
}
306+
307+
func TestParseCodeOwnersLine(t *testing.T) {
308+
type CodeOwnerTest struct {
309+
Line string
310+
Tokens []string
311+
}
312+
313+
given := []CodeOwnerTest{
314+
{Line: "", Tokens: nil},
315+
{Line: "# comment", Tokens: []string{}},
316+
{Line: "!.* @user1 @org1/team1", Tokens: []string{"!.*", "@user1", "@org1/team1"}},
317+
{Line: `.*\\.js @user2 #comment`, Tokens: []string{`.*\.js`, "@user2"}},
318+
{Line: `docs/(aws|google|azure)/[^/]*\\.(md|txt) @user3 @org2/team2`, Tokens: []string{`docs/(aws|google|azure)/[^/]*\.(md|txt)`, "@user3", "@org2/team2"}},
319+
{Line: `\#path @user3`, Tokens: []string{`#path`, "@user3"}},
320+
{Line: `path\ with\ spaces/ @user3`, Tokens: []string{`path with spaces/`, "@user3"}},
321+
}
322+
323+
for _, g := range given {
324+
tokens := issues_model.TokenizeCodeOwnersLine(g.Line)
325+
assert.Equal(t, g.Tokens, tokens, "Codeowners tokenizer failed")
326+
}
327+
328+
}

0 commit comments

Comments
 (0)