mirror of
https://github.com/imjasonh/terraform-playground
synced 2026-07-08 07:44:57 +00:00
- sbom: normalize component names (PEP 503) for canonical pkg:pypi PURLs and stable ordering - wheel: reject any member with a '..' path segment (catches escapes that resolve back under the prefix but out of site-packages) - cache/wheelhouse: replace file atomically across platforms (os.Rename fails on existing dest on Windows) - project: include requirements.lock in the no-lock-found error - tests for each Co-authored-by: Jason Hall <imjasonh@users.noreply.github.com>
67 lines
1.5 KiB
Go
67 lines
1.5 KiB
Go
package cache
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/imjasonh/terraform-playground/pymage/internal/ptar"
|
|
)
|
|
|
|
func TestTextRoundTrip(t *testing.T) {
|
|
c, err := New(t.TempDir())
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if _, ok := c.GetText("k"); ok {
|
|
t.Fatal("expected miss before PutText")
|
|
}
|
|
if err := c.PutText("k", "3.14"); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if v, ok := c.GetText("k"); !ok || v != "3.14" {
|
|
t.Fatalf("GetText = %q,%v; want 3.14,true", v, ok)
|
|
}
|
|
// Overwriting an existing key must succeed on all platforms (os.Rename onto
|
|
// an existing dest fails on Windows; replaceFile handles it).
|
|
if err := c.PutText("k", "3.15"); err != nil {
|
|
t.Fatalf("overwrite PutText: %v", err)
|
|
}
|
|
if v, ok := c.GetText("k"); !ok || v != "3.15" {
|
|
t.Fatalf("GetText after overwrite = %q,%v; want 3.15,true", v, ok)
|
|
}
|
|
}
|
|
|
|
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)
|
|
}
|
|
}
|