Files
wehub-resource-sync a06f331eb8
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
chore: import upstream snapshot with attribution
2026-07-13 12:33:42 +08:00

160 lines
4.6 KiB
Go

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"))
}