All checks were successful
Test / Create distribution (push) Successful in 1m3s
Test / Sandbox (push) Successful in 2m47s
Test / Hakurei (push) Successful in 3m46s
Test / ShareFS (push) Successful in 3m48s
Test / Sandbox (race detector) (push) Successful in 5m10s
Test / Hakurei (race detector) (push) Successful in 6m19s
Test / Flake checks (push) Successful in 1m21s
Munmap is not always immediate. Signed-off-by: Ophestra <cat@gensokyo.uk>
59 lines
1.2 KiB
Go
59 lines
1.2 KiB
Go
package rosa_test
|
|
|
|
import (
|
|
"errors"
|
|
"os"
|
|
"path/filepath"
|
|
"syscall"
|
|
"testing"
|
|
"unique"
|
|
|
|
"hakurei.app/internal/pkg"
|
|
"hakurei.app/internal/rosa"
|
|
)
|
|
|
|
func TestReportZeroLength(t *testing.T) {
|
|
report := filepath.Join(t.TempDir(), "report")
|
|
if err := os.WriteFile(report, nil, 0400); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if _, err := rosa.OpenReport(report); !errors.Is(err, syscall.EINVAL) {
|
|
t.Fatalf("OpenReport: error = %v", err)
|
|
}
|
|
}
|
|
|
|
func TestReportSIGSEGV(t *testing.T) {
|
|
report := filepath.Join(t.TempDir(), "report")
|
|
if err := os.WriteFile(report, make([]byte, 64), 0400); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if r, err := rosa.OpenReport(report); err != nil {
|
|
t.Fatalf("OpenReport: error = %v", err)
|
|
} else {
|
|
status, n := r.ArtifactOf(unique.Make(pkg.ID{}))
|
|
if len(status) != 0 {
|
|
t.Errorf("ArtifactsOf: status = %#v", status)
|
|
}
|
|
if n != 0 {
|
|
t.Errorf("ArtifactsOf: n = %d", n)
|
|
}
|
|
|
|
if err = r.Close(); err != nil {
|
|
t.Fatalf("Close: error = %v", err)
|
|
}
|
|
|
|
defer func() {
|
|
ioErr := err.(*rosa.ReportIOError)
|
|
if ioErr.Offset != 48 {
|
|
panic(ioErr)
|
|
}
|
|
}()
|
|
defer r.HandleAccess(&err)()
|
|
for {
|
|
r.ArtifactOf(unique.Make(pkg.ID{}))
|
|
}
|
|
}
|
|
}
|