Some checks failed
Test / Create distribution (push) Successful in 34s
Test / Hpkg (push) Successful in 42s
Test / Hakurei (race detector) (push) Failing after 1m28s
Test / Sandbox (race detector) (push) Failing after 2m16s
Test / Hakurei (push) Successful in 2m19s
Test / Sandbox (push) Failing after 2m42s
Test / Flake checks (push) Has been skipped
Most tests already had no global state, however parallel was never enabled. This change enables it for all applicable tests. Signed-off-by: Ophestra <cat@gensokyo.uk>
119 lines
3.3 KiB
Go
119 lines
3.3 KiB
Go
package hst_test
|
|
|
|
import (
|
|
"reflect"
|
|
"slices"
|
|
"testing"
|
|
|
|
"hakurei.app/hst"
|
|
"hakurei.app/message"
|
|
)
|
|
|
|
func TestBadInterfaceError(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
testCases := []struct {
|
|
name string
|
|
err error
|
|
want string
|
|
}{
|
|
{"nil", (*hst.BadInterfaceError)(nil), "<nil>"},
|
|
{"session", &hst.BadInterfaceError{Interface: "\x00", Segment: "session"},
|
|
`bad interface string "\x00" in session bus configuration`},
|
|
{"system", &hst.BadInterfaceError{Interface: "\x01", Segment: "system"},
|
|
`bad interface string "\x01" in system bus configuration`},
|
|
}
|
|
for _, tc := range testCases {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
t.Parallel()
|
|
if gotError := tc.err.Error(); gotError != tc.want {
|
|
t.Errorf("Error: %s, want %s", gotError, tc.want)
|
|
}
|
|
if gotMessage, ok := message.GetMessage(tc.err); !ok {
|
|
t.Error("GetMessage: ok = false")
|
|
} else if gotMessage != tc.want {
|
|
t.Errorf("GetMessage: %s, want %s", gotMessage, tc.want)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestBusConfigInterfaces(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
testCases := []struct {
|
|
name string
|
|
c *hst.BusConfig
|
|
cutoff int
|
|
want []string
|
|
}{
|
|
{"nil", nil, 0, nil},
|
|
{"all", &hst.BusConfig{
|
|
See: []string{"see"}, Talk: []string{"talk"}, Own: []string{"own"},
|
|
Call: map[string]string{"call": "unreachable"},
|
|
Broadcast: map[string]string{"broadcast": "unreachable"},
|
|
}, 0, []string{"see", "talk", "own", "call", "broadcast"}},
|
|
|
|
{"all cutoff", &hst.BusConfig{
|
|
See: []string{"see"}, Talk: []string{"talk"}, Own: []string{"own"},
|
|
Call: map[string]string{"call": "unreachable"},
|
|
Broadcast: map[string]string{"broadcast": "unreachable"},
|
|
}, 3, []string{"see", "talk", "own"}},
|
|
|
|
{"cutoff see", &hst.BusConfig{See: []string{"see"}}, 1, []string{"see"}},
|
|
{"cutoff talk", &hst.BusConfig{Talk: []string{"talk"}}, 1, []string{"talk"}},
|
|
{"cutoff own", &hst.BusConfig{Own: []string{"own"}}, 1, []string{"own"}},
|
|
{"cutoff call", &hst.BusConfig{Call: map[string]string{"call": "unreachable"}}, 1, []string{"call"}},
|
|
{"cutoff broadcast", &hst.BusConfig{Broadcast: map[string]string{"broadcast": "unreachable"}}, 1, []string{"broadcast"}},
|
|
}
|
|
for _, tc := range testCases {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
t.Parallel()
|
|
var got []string
|
|
if tc.cutoff > 0 {
|
|
var i int
|
|
got = make([]string, 0, tc.cutoff)
|
|
for v := range tc.c.Interfaces {
|
|
i++
|
|
got = append(got, v)
|
|
if i == tc.cutoff {
|
|
break
|
|
}
|
|
}
|
|
} else {
|
|
got = slices.Collect(tc.c.Interfaces)
|
|
}
|
|
|
|
if !slices.Equal(got, tc.want) {
|
|
t.Errorf("Interfaces: %q, want %q", got, tc.want)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestBusConfigCheckInterfaces(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
testCases := []struct {
|
|
name string
|
|
c *hst.BusConfig
|
|
err error
|
|
}{
|
|
{"nil", nil, nil},
|
|
{"zero", &hst.BusConfig{See: []string{""}},
|
|
&hst.BadInterfaceError{Interface: "", Segment: "zero"}},
|
|
{"suffix", &hst.BusConfig{See: []string{".*"}},
|
|
&hst.BadInterfaceError{Interface: ".*", Segment: "suffix"}},
|
|
{"valid suffix", &hst.BusConfig{See: []string{"..*"}}, nil},
|
|
{"valid", &hst.BusConfig{See: []string{"."}}, nil},
|
|
}
|
|
for _, tc := range testCases {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
t.Parallel()
|
|
if err := tc.c.CheckInterfaces(tc.name); !reflect.DeepEqual(err, tc.err) {
|
|
t.Errorf("CheckInterfaces: error = %#v, want %#v", err, tc.err)
|
|
}
|
|
})
|
|
}
|
|
}
|