internal/rosa: stream format for cure report
All checks were successful
Test / Create distribution (push) Successful in 59s
Test / Sandbox (push) Successful in 2m37s
Test / Hakurei (push) Successful in 3m40s
Test / ShareFS (push) Successful in 3m46s
Test / Sandbox (race detector) (push) Successful in 4m54s
Test / Hakurei (race detector) (push) Successful in 5m51s
Test / Flake checks (push) Successful in 1m38s
All checks were successful
Test / Create distribution (push) Successful in 59s
Test / Sandbox (push) Successful in 2m37s
Test / Hakurei (push) Successful in 3m40s
Test / ShareFS (push) Successful in 3m46s
Test / Sandbox (race detector) (push) Successful in 4m54s
Test / Hakurei (race detector) (push) Successful in 5m51s
Test / Flake checks (push) Successful in 1m38s
This is for efficient cure status retrieval by the package website server. Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
57
internal/rosa/report_test.go
Normal file
57
internal/rosa/report_test.go
Normal file
@@ -0,0 +1,57 @@
|
||||
package rosa_test
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"os"
|
||||
"path"
|
||||
"syscall"
|
||||
"testing"
|
||||
"unique"
|
||||
|
||||
"hakurei.app/internal/pkg"
|
||||
"hakurei.app/internal/rosa"
|
||||
)
|
||||
|
||||
func TestReportZeroLength(t *testing.T) {
|
||||
report := path.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 := path.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)()
|
||||
r.ArtifactOf(unique.Make(pkg.ID{}))
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user