chore: import upstream snapshot with attribution
CI / benchmark (push) Has been skipped
install-script / posix-syntax (push) Successful in 6m1s
CI / build-onnx (push) Failing after 6m43s
init-smoke / dry-run (push) Failing after 15m57s
security / govulncheck (push) Has been cancelled
security / trivy-fs (push) Has been cancelled
CI / test (1.26, ubuntu-latest) (push) Has been cancelled
Scorecard supply-chain security / Scorecard analysis (push) Has been cancelled
CI / test (1.26, macos-latest) (push) Has been cancelled
CI / build-windows (push) Has been cancelled
CI / lint (push) Has been cancelled
install-script / powershell-syntax (push) Has been cancelled
install-script / install (macos-14) (push) Has been cancelled
install-script / install (ubuntu-latest) (push) Has been cancelled
CI / benchmark (push) Has been skipped
install-script / posix-syntax (push) Successful in 6m1s
CI / build-onnx (push) Failing after 6m43s
init-smoke / dry-run (push) Failing after 15m57s
security / govulncheck (push) Has been cancelled
security / trivy-fs (push) Has been cancelled
CI / test (1.26, ubuntu-latest) (push) Has been cancelled
Scorecard supply-chain security / Scorecard analysis (push) Has been cancelled
CI / test (1.26, macos-latest) (push) Has been cancelled
CI / build-windows (push) Has been cancelled
CI / lint (push) Has been cancelled
install-script / powershell-syntax (push) Has been cancelled
install-script / install (macos-14) (push) Has been cancelled
install-script / install (ubuntu-latest) (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,159 @@
|
||||
package eval
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestNewCache_EmptyDirDefaultsToHome(t *testing.T) {
|
||||
c, err := NewCache("", "v1.0.0")
|
||||
require.NoError(t, err)
|
||||
|
||||
home, err := os.UserHomeDir()
|
||||
require.NoError(t, err)
|
||||
|
||||
expected := filepath.Join(home, ".gortex-eval-cache")
|
||||
assert.Equal(t, expected, c.dir)
|
||||
}
|
||||
|
||||
func TestCheck_ReturnsFalseForNonExistentEntry(t *testing.T) {
|
||||
c, err := NewCache(t.TempDir(), "v1.0.0")
|
||||
require.NoError(t, err)
|
||||
|
||||
assert.False(t, c.Check("myrepo", "abc123"))
|
||||
}
|
||||
|
||||
func TestStoreAndCheck(t *testing.T) {
|
||||
cacheDir := t.TempDir()
|
||||
c, err := NewCache(cacheDir, "v1.0.0")
|
||||
require.NoError(t, err)
|
||||
|
||||
// Create a fake index directory with some content.
|
||||
indexDir := t.TempDir()
|
||||
require.NoError(t, os.WriteFile(filepath.Join(indexDir, "graph.bin"), []byte("graph-data"), 0o644))
|
||||
|
||||
require.NoError(t, c.Store("myrepo", "abc123", indexDir))
|
||||
assert.True(t, c.Check("myrepo", "abc123"))
|
||||
}
|
||||
|
||||
func TestStoreAndLoad(t *testing.T) {
|
||||
cacheDir := t.TempDir()
|
||||
c, err := NewCache(cacheDir, "v1.0.0")
|
||||
require.NoError(t, err)
|
||||
|
||||
indexDir := t.TempDir()
|
||||
require.NoError(t, os.WriteFile(filepath.Join(indexDir, "graph.bin"), []byte("graph-data"), 0o644))
|
||||
|
||||
require.NoError(t, c.Store("myrepo", "abc123", indexDir))
|
||||
|
||||
path, err := c.Load("myrepo", "abc123")
|
||||
require.NoError(t, err)
|
||||
|
||||
expected := filepath.Join(cacheDir, "myrepo_abc123")
|
||||
assert.Equal(t, expected, path)
|
||||
|
||||
// Verify the copied content is intact.
|
||||
data, err := os.ReadFile(filepath.Join(path, "graph.bin"))
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, "graph-data", string(data))
|
||||
}
|
||||
|
||||
func TestStoreAndValidate_MatchingVersion(t *testing.T) {
|
||||
cacheDir := t.TempDir()
|
||||
c, err := NewCache(cacheDir, "v1.0.0")
|
||||
require.NoError(t, err)
|
||||
|
||||
indexDir := t.TempDir()
|
||||
require.NoError(t, os.WriteFile(filepath.Join(indexDir, "graph.bin"), []byte("data"), 0o644))
|
||||
|
||||
require.NoError(t, c.Store("myrepo", "abc123", indexDir))
|
||||
assert.True(t, c.Validate("myrepo", "abc123"))
|
||||
}
|
||||
|
||||
func TestValidate_ReturnsFalseForMismatchedVersion(t *testing.T) {
|
||||
cacheDir := t.TempDir()
|
||||
c1, err := NewCache(cacheDir, "v1.0.0")
|
||||
require.NoError(t, err)
|
||||
|
||||
indexDir := t.TempDir()
|
||||
require.NoError(t, os.WriteFile(filepath.Join(indexDir, "graph.bin"), []byte("data"), 0o644))
|
||||
|
||||
require.NoError(t, c1.Store("myrepo", "abc123", indexDir))
|
||||
|
||||
// Create a new cache instance with a different version.
|
||||
c2, err := NewCache(cacheDir, "v2.0.0")
|
||||
require.NoError(t, err)
|
||||
|
||||
assert.False(t, c2.Validate("myrepo", "abc123"))
|
||||
}
|
||||
|
||||
func TestEvict_RemovesEntry(t *testing.T) {
|
||||
cacheDir := t.TempDir()
|
||||
c, err := NewCache(cacheDir, "v1.0.0")
|
||||
require.NoError(t, err)
|
||||
|
||||
indexDir := t.TempDir()
|
||||
require.NoError(t, os.WriteFile(filepath.Join(indexDir, "graph.bin"), []byte("data"), 0o644))
|
||||
|
||||
require.NoError(t, c.Store("myrepo", "abc123", indexDir))
|
||||
assert.True(t, c.Check("myrepo", "abc123"))
|
||||
|
||||
require.NoError(t, c.Evict("myrepo", "abc123"))
|
||||
assert.False(t, c.Check("myrepo", "abc123"))
|
||||
}
|
||||
|
||||
func TestStore_OverwritesExistingEntry(t *testing.T) {
|
||||
cacheDir := t.TempDir()
|
||||
c, err := NewCache(cacheDir, "v1.0.0")
|
||||
require.NoError(t, err)
|
||||
|
||||
// Store first version.
|
||||
indexDir1 := t.TempDir()
|
||||
require.NoError(t, os.WriteFile(filepath.Join(indexDir1, "graph.bin"), []byte("old-data"), 0o644))
|
||||
require.NoError(t, c.Store("myrepo", "abc123", indexDir1))
|
||||
|
||||
// Store second version — should overwrite.
|
||||
indexDir2 := t.TempDir()
|
||||
require.NoError(t, os.WriteFile(filepath.Join(indexDir2, "graph.bin"), []byte("new-data"), 0o644))
|
||||
require.NoError(t, c.Store("myrepo", "abc123", indexDir2))
|
||||
|
||||
path, err := c.Load("myrepo", "abc123")
|
||||
require.NoError(t, err)
|
||||
|
||||
data, err := os.ReadFile(filepath.Join(path, "graph.bin"))
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, "new-data", string(data))
|
||||
}
|
||||
|
||||
func TestVersionMismatch_StoreV1_ValidateWithV2(t *testing.T) {
|
||||
cacheDir := t.TempDir()
|
||||
|
||||
// Store with v1.
|
||||
c1, err := NewCache(cacheDir, "v1.0.0")
|
||||
require.NoError(t, err)
|
||||
|
||||
indexDir := t.TempDir()
|
||||
require.NoError(t, os.WriteFile(filepath.Join(indexDir, "graph.bin"), []byte("data"), 0o644))
|
||||
require.NoError(t, c1.Store("myrepo", "abc123", indexDir))
|
||||
|
||||
// Create cache with v2 — validate should return false.
|
||||
c2, err := NewCache(cacheDir, "v2.0.0")
|
||||
require.NoError(t, err)
|
||||
|
||||
assert.False(t, c2.Validate("myrepo", "abc123"))
|
||||
|
||||
// Entry still exists (Check is version-agnostic).
|
||||
assert.True(t, c2.Check("myrepo", "abc123"))
|
||||
|
||||
// Evict the stale entry.
|
||||
require.NoError(t, c2.Evict("myrepo", "abc123"))
|
||||
assert.False(t, c2.Check("myrepo", "abc123"))
|
||||
|
||||
// Re-store with v2.
|
||||
require.NoError(t, c2.Store("myrepo", "abc123", indexDir))
|
||||
assert.True(t, c2.Validate("myrepo", "abc123"))
|
||||
}
|
||||
Reference in New Issue
Block a user