From f5807d9f3a6c96e70912b61fac17120f412b5782 Mon Sep 17 00:00:00 2001 From: ewy Date: Sun, 17 May 2026 01:37:24 +0200 Subject: * 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 --- cache/cache_test.go | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) (limited to 'cache/cache_test.go') 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()) +} -- cgit v1.3.1