aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/rosa/report_test.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-03-07 01:38:11 +0900
committerOphestra <cat@gensokyo.uk>2026-03-07 02:18:00 +0900
commitba5d882ef281450efe10aea60b05976cb533ab92 (patch)
treef10b6abea4bc07b86ef23789e3dcf65545fd1bcc /internal/rosa/report_test.go
parent1e0d68a29e824b25c556d28b6a0cd0c3ab39ffef (diff)
internal/rosa: stream format for cure report
This is for efficient cure status retrieval by the package website server. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/rosa/report_test.go')
-rw-r--r--internal/rosa/report_test.go57
1 files changed, 57 insertions, 0 deletions
diff --git a/internal/rosa/report_test.go b/internal/rosa/report_test.go
new file mode 100644
index 00000000..ca29cf36
--- /dev/null
+++ b/internal/rosa/report_test.go
@@ -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{}))
+ }
+
+}