summaryrefslogtreecommitdiff
path: root/cache/cache_test.go
diff options
context:
space:
mode:
authorewy <ewy0@protonmail.com>2026-05-17 01:37:24 +0200
committerewy <ewy0@protonmail.com>2026-05-17 01:37:24 +0200
commitf5807d9f3a6c96e70912b61fac17120f412b5782 (patch)
treed6928795e06b1af000ffba2ae50bb6f8f7b72685 /cache/cache_test.go
parent7984fd9beaa7c903288142818cb328c584a139a5 (diff)
* integration tests with a pik target to run them
* add abstraction for paths to facilitate unit tests * flesh out completion (--install-completion) * do sync init before stateless modes so list knows more
Diffstat (limited to 'cache/cache_test.go')
-rw-r--r--cache/cache_test.go64
1 files changed, 64 insertions, 0 deletions
diff --git a/cache/cache_test.go b/cache/cache_test.go
index 8753ad6..d2792ca 100644
--- a/cache/cache_test.go
+++ b/cache/cache_test.go
@@ -3,6 +3,8 @@
package cache
import (
+ "github.com/ewy1/pik/paths"
+ "os"
"path/filepath"
"strings"
"testing"
@@ -204,3 +206,65 @@ func TestMergeNilNormal(t *testing.T) {
}
_ = e.Merge(c)
}
+
+func TestCacheInit_Init(t *testing.T) {
+ d := t.TempDir()
+ paths.SetAll(d)
+ c := &cacheInit{}
+ err := c.Init()
+ assert.NoError(t, err)
+ assert.Contains(t, paths.ContextsFile, d)
+}
+
+func TestInsert(t *testing.T) {
+ d := t.TempDir()
+ st := TState(TSource("source", "target"))
+ paths.SetAll(d)
+ defer paths.Reset()
+ err := MergeAndSave(st)
+ assert.NoError(t, err)
+}
+
+func TestInsertNonExistent(t *testing.T) {
+ st := TState(TSource("source", "target"))
+ paths.SetAll("/../")
+ err := MergeAndSave(st)
+ assert.Error(t, err)
+}
+
+func TestLoadState(t *testing.T) {
+ paths.SetAll("/pik")
+ defer paths.Reset()
+ c := &Cache{
+ Entries: []Entry{
+ {Path: "/asdf", Label: "hjkl"},
+ },
+ }
+ f := fstest.MapFS{
+ "/pik/contexts": &fstest.MapFile{
+ Data: []byte("asdf # hjkl"),
+ },
+ }
+ st, errs := LoadState(f, c, nil, nil)
+ for _, e := range errs {
+ assert.NoError(t, e)
+ }
+ assert.NotNil(t, st)
+}
+
+func TestSavesFile(t *testing.T) {
+ d := t.TempDir()
+ paths.Set(paths.ContextsFile, filepath.Join(d, "contexts"))
+ defer paths.Reset()
+ f, err := os.OpenRoot("/")
+ defer f.Close()
+ assert.NoError(t, err)
+ st := TState(TSource("source", "target1", "target2"))
+ c := New(st)
+ assert.NotNil(t, c)
+ err = MergeAndSave(st)
+ assert.NoError(t, err)
+ content, err := os.ReadFile(paths.ContextsFile.String())
+ assert.NoError(t, err)
+ assert.Contains(t, string(content), c.Entries[0].String())
+}