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  }