74 lines
2.1 KiB
Go
74 lines
2.1 KiB
Go
package main
|
|
|
|
import (
|
|
"bytes"
|
|
"io"
|
|
"os"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestOrasPushInvocationUsesRelativeWorkspacePaths(t *testing.T) {
|
|
dir, args, err := orasPushInvocation("registry.bstein.dev/metis/titan-13:20260331t235724z", "/workspace/build/titan-13.img.xz", "/workspace/build/metadata.json")
|
|
if err != nil {
|
|
t.Fatalf("orasPushInvocation returned error: %v", err)
|
|
}
|
|
if dir != "/workspace/build" {
|
|
t.Fatalf("expected work dir /workspace/build, got %q", dir)
|
|
}
|
|
if len(args) != 4 {
|
|
t.Fatalf("expected 4 args, got %d", len(args))
|
|
}
|
|
if args[0] != "push" {
|
|
t.Fatalf("expected push verb, got %q", args[0])
|
|
}
|
|
if args[1] != "registry.bstein.dev/metis/titan-13:20260331t235724z" {
|
|
t.Fatalf("unexpected ref: %q", args[1])
|
|
}
|
|
if args[2] != "titan-13.img.xz:application/x-raw-disk-image" {
|
|
t.Fatalf("unexpected image arg: %q", args[2])
|
|
}
|
|
if args[3] != "metadata.json:application/json" {
|
|
t.Fatalf("unexpected metadata arg: %q", args[3])
|
|
}
|
|
}
|
|
|
|
func TestHumanHostPathMapsMountedTmpBackToHostTmp(t *testing.T) {
|
|
if got := humanHostPath("/host-tmp/metis-flash-test"); got != "/tmp/metis-flash-test" {
|
|
t.Fatalf("expected /tmp/metis-flash-test, got %q", got)
|
|
}
|
|
}
|
|
|
|
func TestNewProgressEmitterWritesStructuredMarker(t *testing.T) {
|
|
origStdout := os.Stdout
|
|
reader, writer, err := os.Pipe()
|
|
if err != nil {
|
|
t.Fatalf("pipe: %v", err)
|
|
}
|
|
os.Stdout = writer
|
|
defer func() {
|
|
os.Stdout = origStdout
|
|
}()
|
|
|
|
emitter := newProgressEmitter("flash", 92, 98, "Writing the latest image for titan-12", true)
|
|
emitter(1024, 2048)
|
|
|
|
if err := writer.Close(); err != nil {
|
|
t.Fatalf("close writer: %v", err)
|
|
}
|
|
var output bytes.Buffer
|
|
if _, err := io.Copy(&output, reader); err != nil {
|
|
t.Fatalf("read progress output: %v", err)
|
|
}
|
|
got := output.String()
|
|
if !strings.Contains(got, "METIS_PROGRESS ") {
|
|
t.Fatalf("expected structured progress prefix, got %q", got)
|
|
}
|
|
if !strings.Contains(got, `"stage":"flash"`) {
|
|
t.Fatalf("expected flash stage marker, got %q", got)
|
|
}
|
|
if !strings.Contains(got, `"written_bytes":1024`) || !strings.Contains(got, `"total_bytes":2048`) {
|
|
t.Fatalf("expected byte counters in progress marker, got %q", got)
|
|
}
|
|
}
|