test: one run-directory writer for the packages that share it

internal/tracecorpus and cmd/internal-tools/exploration-reach declared the same
24-line writeRun, identical apart from whether the seed was a parameter. The
package's charter is on it: a helper goes here once it has callers in two
packages, and stays in a package's own tests until then.
This commit is contained in:
pj committed 2026-08-22 21:23:54 +05:30
1 parent 5a0439d394
commit 5ae825109e
3 files changed
+47 -43

No files matched your search

@@ -5,6 +5,7 @@ import (
"github.com/priyanshujain/sanderling/internal/driver/ioscompanion"
"github.com/priyanshujain/sanderling/internal/hierarchy"
"github.com/priyanshujain/sanderling/internal/testsupport"
"github.com/priyanshujain/sanderling/internal/trace"
"github.com/priyanshujain/sanderling/internal/tracecorpus"
)
@@ -136,27 +137,8 @@ func measureRun(t *testing.T, seed int64, dumps ...string) Reach {
func writeRun(t *testing.T, seed int64, dumps ...string) string {
t.Helper()
directory := t.TempDir()
writer, err := trace.NewWriter(directory)
if err != nil {
t.Fatal(err)
}
if err := writer.WriteMeta(trace.Meta{Seed: seed, Platform: "web"}); err != nil {
t.Fatal(err)
}
for index, dump := range dumps {
tree, err := hierarchy.Parse(dump)
if err != nil {
t.Fatal(err)
}
if err := writer.WriteStep(trace.Step{Index: index + 1, Hierarchy: tree}); err != nil {
t.Fatal(err)
}
}
if err := writer.Close(); err != nil {
t.Fatal(err)
}
return directory
return testsupport.WriteRunFromDumps(
t, t.TempDir(), trace.Meta{Seed: seed, Platform: "web"}, dumps...)
}
func appendFinalize(t *testing.T, directory string, index int) {
+41
View File
@@ -0,0 +1,41 @@
// Package testsupport holds test helpers that more than one package needs.
// It exists because the suite's helper layer grew by copying: a helper written
// inside one package's tests is invisible to the next package that needs it, so
// the next package writes it again. Anything here has at least two callers in
// different packages; a helper with one belongs in that package's own tests.
package testsupport
import (
"testing"
"github.com/priyanshujain/sanderling/internal/hierarchy"
"github.com/priyanshujain/sanderling/internal/trace"
)
// WriteRunFromDumps writes a complete run directory: meta.json, then one step
// per hierarchy dump numbered from 1. It goes through trace.NewWriter rather
// than composing the files by hand so a fixture cannot claim a trace_version
// the writer would not have produced.
func WriteRunFromDumps(t *testing.T, directory string, meta trace.Meta, dumps ...string) string {
t.Helper()
writer, err := trace.NewWriter(directory)
if err != nil {
t.Fatal(err)
}
if err := writer.WriteMeta(meta); err != nil {
t.Fatal(err)
}
for index, dump := range dumps {
tree, err := hierarchy.Parse(dump)
if err != nil {
t.Fatal(err)
}
if err := writer.WriteStep(trace.Step{Index: index + 1, Hierarchy: tree}); err != nil {
t.Fatal(err)
}
}
if err := writer.Close(); err != nil {
t.Fatal(err)
}
return directory
}
+3 -22
View File
@@ -7,7 +7,7 @@ import (
"strings"
"testing"
"github.com/priyanshujain/sanderling/internal/hierarchy"
"github.com/priyanshujain/sanderling/internal/testsupport"
"github.com/priyanshujain/sanderling/internal/trace"
)
@@ -73,27 +73,8 @@ func TestLoadRefusesElementsWithNoStoredShape(t *testing.T) {
func writeRun(t *testing.T, dumps ...string) string {
t.Helper()
directory := t.TempDir()
writer, err := trace.NewWriter(directory)
if err != nil {
t.Fatal(err)
}
if err := writer.WriteMeta(trace.Meta{Seed: 7, Platform: "web"}); err != nil {
t.Fatal(err)
}
for index, dump := range dumps {
tree, err := hierarchy.Parse(dump)
if err != nil {
t.Fatal(err)
}
if err := writer.WriteStep(trace.Step{Index: index + 1, Hierarchy: tree}); err != nil {
t.Fatal(err)
}
}
if err := writer.Close(); err != nil {
t.Fatal(err)
}
return directory
return testsupport.WriteRunFromDumps(
t, t.TempDir(), trace.Meta{Seed: 7, Platform: "web"}, dumps...)
}
func downgrade(t *testing.T, path string) {