mirror of
https://github.com/SagerNet/sing-geosite.git
synced 2026-06-23 21:34:16 +08:00
Keep company-wide @cn buckets like google@cn out of the generic mainland direct list so generated geolocation-cn does not classify blocked Google service domains as direct-connect targets. Made-with: Cursor
42 lines
1.0 KiB
Go
42 lines
1.0 KiB
Go
package main
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/sagernet/sing-box/common/geosite"
|
|
)
|
|
|
|
func hasItem(items []geosite.Item, want geosite.Item) bool {
|
|
for _, item := range items {
|
|
if item == want {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
func TestMergeTagsSkipsCategoryCompaniesAtCN(t *testing.T) {
|
|
companyItem := geosite.Item{Type: geosite.RuleTypeDomain, Value: "ssl.gstatic.com"}
|
|
devItem := geosite.Item{Type: geosite.RuleTypeDomain, Value: "pkg.go.dev"}
|
|
baseItem := geosite.Item{Type: geosite.RuleTypeDomain, Value: "example.cn"}
|
|
|
|
data := map[string][]geosite.Item{
|
|
"geolocation-cn": {baseItem},
|
|
"category-companies@cn": {companyItem},
|
|
"category-dev@cn": {devItem},
|
|
}
|
|
|
|
mergeTags(data)
|
|
|
|
got := data["geolocation-cn"]
|
|
if !hasItem(got, baseItem) {
|
|
t.Fatalf("base geolocation-cn item missing after merge")
|
|
}
|
|
if !hasItem(got, devItem) {
|
|
t.Fatalf("expected category-dev@cn item to still merge into geolocation-cn")
|
|
}
|
|
if hasItem(got, companyItem) {
|
|
t.Fatalf("did not expect category-companies@cn item to merge into geolocation-cn")
|
|
}
|
|
}
|