github.com/google/syzkaller@v0.0.0-20251211124644-a066d2bc4b02/syz-cluster/pkg/triage/tree_test.go (about) 1 // Copyright 2024 syzkaller project authors. All rights reserved. 2 // Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. 3 4 package triage 5 6 import ( 7 "testing" 8 9 "github.com/google/syzkaller/syz-cluster/pkg/api" 10 "github.com/stretchr/testify/assert" 11 ) 12 13 func TestSelectTrees(t *testing.T) { 14 trees := []*api.Tree{ 15 { 16 Name: "bpf", 17 EmailLists: []string{"bpf@list"}, 18 }, 19 { 20 Name: "wireless", 21 EmailLists: []string{"wireless@list"}, 22 }, 23 { 24 Name: "net", 25 EmailLists: []string{"net@list"}, 26 }, 27 { 28 Name: "test", 29 EmailLists: []string{"test@list"}, 30 }, 31 { 32 Name: "mainline", 33 EmailLists: nil, 34 }, 35 } 36 tests := []struct { 37 testName string 38 result []string 39 series *api.Series 40 }{ 41 { 42 testName: "only-net", 43 result: []string{"net", "mainline"}, 44 series: &api.Series{Cc: []string{"net@list"}}, 45 }, 46 { 47 testName: "prefer-wireless", 48 result: []string{"wireless", "net", "mainline"}, 49 series: &api.Series{Cc: []string{"net@list", "wireless@list"}}, 50 }, 51 { 52 testName: "fallback", 53 result: []string{"mainline"}, 54 series: &api.Series{Cc: []string{"unknown@list"}}, 55 }, 56 { 57 testName: "prefer-direct-match", 58 result: []string{"test", "wireless", "net", "mainline"}, 59 series: &api.Series{ 60 Cc: []string{"net@list", "wireless@list"}, 61 SubjectTags: []string{"test"}, 62 }, 63 }, 64 } 65 66 for _, test := range tests { 67 t.Run(test.testName, func(t *testing.T) { 68 ret := SelectTrees(test.series, trees) 69 var retNames []string 70 for _, tree := range ret { 71 retNames = append(retNames, tree.Name) 72 } 73 assert.Equal(t, test.result, retNames) 74 }) 75 } 76 }