]> git.giacomolli.uk - onechat/blob - rebuild_helper_test.go
Render Markdown with plain terminal styles
[onechat] / rebuild_helper_test.go
1 package main
2
3 import (
4         "fmt"
5         "io/fs"
6         "os"
7         "path/filepath"
8         "testing"
9         "time"
10
11         "github.com/stretchr/testify/require"
12 )
13
14 func newRebuildTestAgent(t *testing.T) *Agent {
15         t.Helper()
16
17         agent, err := openAgent(filepath.Join(t.TempDir(), "agent"))
18         require.NoError(t, err)
19
20         return agent
21 }
22
23 func rebuildTestLog(t *testing.T, root string, entries []DatedMessage) {
24         t.Helper()
25
26         memory, err := openMemory(t.Context(), root, time.Now, newFakeSummarizer(), discardLog())
27         require.NoError(t, err)
28
29         for _, entry := range entries {
30                 _, err = memory.AppendDated(entry.Kind, entry.Text, entry.Date)
31                 require.NoError(t, err)
32         }
33
34         require.NoError(t, memory.Wait(t.Context()))
35         require.NoError(t, memory.Close())
36 }
37
38 func rebuildTestSnapshot(t *testing.T, root string) map[string]string {
39         t.Helper()
40
41         files := make(map[string]string)
42         err := filepath.WalkDir(root, func(path string, entry fs.DirEntry, err error) error {
43                 if err != nil {
44                         return fmt.Errorf("read snapshot entry: %w", err)
45                 }
46
47                 if entry.IsDir() {
48                         return nil
49                 }
50
51                 relative, err := filepath.Rel(root, path)
52                 if err != nil {
53                         return fmt.Errorf("find snapshot relative path: %w", err)
54                 }
55
56                 data, err := os.ReadFile(path)
57                 if err != nil {
58                         return fmt.Errorf("read snapshot file: %w", err)
59                 }
60
61                 info, err := entry.Info()
62                 if err != nil {
63                         return fmt.Errorf("read snapshot mode: %w", err)
64                 }
65
66                 files[relative] = info.Mode().String() + string(data)
67
68                 return nil
69         })
70         require.NoError(t, err)
71
72         return files
73 }