mirror of
https://github.com/imjasonh/terraform-playground
synced 2026-07-08 07:44:57 +00:00
- add internal/cache content-addressed layer store; build per-wheel layers in parallel and reuse cached compressed blobs across rebuilds (--cache-dir) - thread platform/python target into wheel resolution; validate --env - add common secret patterns to the default source ignore list - README: copy/paste-safe usage example + new flags; DESIGN status updated Co-authored-by: Jason Hall <imjasonh@users.noreply.github.com>
43 lines
805 B
Go
43 lines
805 B
Go
package cache
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/imjasonh/terraform-playground/pymage/internal/ptar"
|
|
)
|
|
|
|
func TestPutGetRoundTrip(t *testing.T) {
|
|
c, err := New(t.TempDir())
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
layer, err := ptar.Layer([]ptar.File{{Path: "site/foo.py", Data: []byte("X=1\n")}})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
want, err := layer.Digest()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
const key = "wheel|1|abc|/app/.venv|python3.12"
|
|
if _, ok := c.Get(key); ok {
|
|
t.Fatal("expected a miss before Put")
|
|
}
|
|
if err := c.Put(key, layer); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
cached, ok := c.Get(key)
|
|
if !ok {
|
|
t.Fatal("expected a hit after Put")
|
|
}
|
|
got, err := cached.Digest()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if got != want {
|
|
t.Fatalf("cached layer digest %s != original %s", got, want)
|
|
}
|
|
}
|