All checks were successful
Test / Create distribution (push) Successful in 1m10s
Test / Sandbox (push) Successful in 2m40s
Test / Hakurei (push) Successful in 3m58s
Test / Hpkg (push) Successful in 4m44s
Test / Sandbox (race detector) (push) Successful in 5m1s
Test / Hakurei (race detector) (push) Successful in 6m2s
Test / Flake checks (push) Successful in 1m47s
This frees all container instances of side effects. Signed-off-by: Ophestra <cat@gensokyo.uk>
44 lines
1.2 KiB
Go
44 lines
1.2 KiB
Go
package internal
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
|
|
"hakurei.app/container"
|
|
)
|
|
|
|
func TestMustCheckPath(t *testing.T) {
|
|
testCases := []struct {
|
|
name string
|
|
pathname string
|
|
wantFatal string
|
|
}{
|
|
{"poison", compPoison, "invalid test path, this program is compiled incorrectly"},
|
|
{"zero", "", "invalid test path, this program is compiled incorrectly"},
|
|
{"not absolute", "\x00", `path "\x00" is not absolute`},
|
|
{"success", "/proc/nonexistent", ""},
|
|
}
|
|
for _, tc := range testCases {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
fatal := func(v ...any) { t.Fatal(append([]any{"invalid call to fatal:"}, v...)...) }
|
|
if tc.wantFatal != "" {
|
|
fatal = func(v ...any) {
|
|
if len(v) != 1 {
|
|
t.Errorf("mustCheckPath: fatal %#v", v)
|
|
} else if gotFatal, ok := v[0].(string); !ok {
|
|
t.Errorf("mustCheckPath: fatal = %#v", v[0])
|
|
} else if gotFatal != tc.wantFatal {
|
|
t.Errorf("mustCheckPath: fatal = %q, want %q", gotFatal, tc.wantFatal)
|
|
}
|
|
|
|
// do not simulate exit
|
|
}
|
|
}
|
|
|
|
if got := mustCheckPath(fatal, "test", tc.pathname); got != nil && !reflect.DeepEqual(got, container.MustAbs(tc.pathname)) {
|
|
t.Errorf("mustCheckPath: %q", got)
|
|
}
|
|
})
|
|
}
|
|
}
|