Files
hauler/pkg/layer/layer_test.go
T
2026-08-05 16:34:41 -04:00

44 lines
1.1 KiB
Go

package layer
import (
"bytes"
"io"
"sync/atomic"
"testing"
)
// TestFromOpener_OpensExactlyOnce proves FromOpener no longer pays for a
// redundant fetch: compressedOpener is a literal passthrough of
// uncompressedOpener (see FromOpener below), so digest and diffID are
// identical by construction and must be derived from a single read of the
// source, not two.
func TestFromOpener_OpensExactlyOnce(t *testing.T) {
var opens int32
data := []byte("hello world")
opener := func() (io.ReadCloser, error) {
atomic.AddInt32(&opens, 1)
return io.NopCloser(bytes.NewReader(data)), nil
}
l, err := FromOpener(opener)
if err != nil {
t.Fatalf("FromOpener: %v", err)
}
if got := atomic.LoadInt32(&opens); got != 1 {
t.Errorf("expected opener to be invoked exactly once, got %d", got)
}
digest, err := l.Digest()
if err != nil {
t.Fatalf("Digest: %v", err)
}
diffID, err := l.DiffID()
if err != nil {
t.Fatalf("DiffID: %v", err)
}
if digest != diffID {
t.Errorf("expected digest %v to equal diffID %v (compressedOpener is a passthrough)", digest, diffID)
}
}