All checks were successful
Test / Create distribution (push) Successful in 1m4s
Test / Sandbox (push) Successful in 2m43s
Test / Hakurei (push) Successful in 3m49s
Test / ShareFS (push) Successful in 3m55s
Test / Sandbox (race detector) (push) Successful in 5m18s
Test / Hakurei (race detector) (push) Successful in 6m25s
Test / Flake checks (push) Successful in 1m22s
This arranges for binfmt entries to be registered for the container. Signed-off-by: Ophestra <cat@gensokyo.uk>
63 lines
1.4 KiB
Go
63 lines
1.4 KiB
Go
package container
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
|
|
"hakurei.app/fhs"
|
|
)
|
|
|
|
func TestEscapeBinfmt(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
testCases := []struct {
|
|
name string
|
|
magic string
|
|
want string
|
|
}{
|
|
{"packed DOS applications", "\x0eDEX", "\x0eDEX"},
|
|
|
|
{"riscv64 magic",
|
|
"\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xf3\x00",
|
|
"\x7fELF\x02\x01\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\x02\\x00\xf3\\x00"},
|
|
{"riscv64 mask",
|
|
"\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff",
|
|
"\xff\xff\xff\xff\xff\xff\xff\\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff"},
|
|
}
|
|
for _, tc := range testCases {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
got := escapeBinfmt(new(strings.Builder), tc.magic)
|
|
if got != tc.want {
|
|
t.Errorf("escapeBinfmt: %q, want %q", got, tc.want)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestBinfmtEntry(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
testCases := []struct {
|
|
name string
|
|
e BinfmtEntry
|
|
valid bool
|
|
}{
|
|
{"zero", BinfmtEntry{}, false},
|
|
{"large offset", BinfmtEntry{Offset: 128}, false},
|
|
{"long magic", BinfmtEntry{Magic: strings.Repeat("\x00", 128)}, false},
|
|
{"long mask", BinfmtEntry{Mask: strings.Repeat("\x00", 128)}, false},
|
|
{"valid", BinfmtEntry{Interpreter: fhs.AbsRoot}, true},
|
|
}
|
|
for _, tc := range testCases {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
if tc.e.Valid() != tc.valid {
|
|
t.Errorf("Valid: %v", !tc.valid)
|
|
}
|
|
})
|
|
}
|
|
}
|