fix(ci): restore crawlkit merge checks

This commit is contained in:
Vincent Koc 2026-05-05 18:48:48 -07:00
parent ebb41dabfd
commit 98be6a9c11
No known key found for this signature in database
3 changed files with 68 additions and 65 deletions

View File

@ -153,6 +153,17 @@ func TestStatusSearchSQLAndListings(t *testing.T) {
require.NotEmpty(t, out.String())
}
for _, args := range [][]string{
{"--config", cfgPath, "metadata", "--json"},
{"--config", cfgPath, "status", "--json"},
} {
var out bytes.Buffer
require.NoError(t, Run(ctx, args, &out, &bytes.Buffer{}))
var payload map[string]any
require.NoError(t, json.Unmarshal(out.Bytes(), &payload))
require.NotEmpty(t, payload)
}
before, err := os.ReadFile(dbPath)
require.NoError(t, err)
var out bytes.Buffer
@ -183,6 +194,60 @@ func TestTUIHelpReturnsUsage(t *testing.T) {
require.Empty(t, stderr.String())
}
func TestControlStatusIncludesShareAndFileSizes(t *testing.T) {
dir := t.TempDir()
dbPath := filepath.Join(dir, "discrawl.db")
require.NoError(t, os.WriteFile(dbPath, []byte("db"), 0o600))
require.NoError(t, os.WriteFile(dbPath+"-wal", []byte("wal"), 0o600))
cfg := config.Default()
cfg.DBPath = dbPath
cfg.Share.Remote = "https://github.com/openclaw/discrawl-share.git"
cfg.Share.RepoPath = filepath.Join(dir, "share")
status := store.Status{
DBPath: dbPath,
MessageCount: 5,
ChannelCount: 2,
}
out := controlStatus(filepath.Join(dir, "config.toml"), cfg, status, true)
require.Equal(t, int64(2), out.DatabaseBytes)
require.Equal(t, int64(3), out.WALBytes)
require.Zero(t, fileSize(filepath.Join(dir, "missing.db")))
require.NotNil(t, out.Share)
require.True(t, out.Share.Enabled)
require.True(t, out.Share.NeedsUpdate)
require.Contains(t, out.Summary, "5 messages")
}
func TestFormattingAndTUISourceBranches(t *testing.T) {
require.Equal(t, "-", formatDaysSilent(-1))
require.Equal(t, "4", formatDaysSilent(4))
require.Equal(t, "0", formatWindowDuration(0))
require.Equal(t, "2d", formatWindowDuration(48*time.Hour))
require.Equal(t, "3h", formatWindowDuration(3*time.Hour))
require.Equal(t, "1h30m0s", formatWindowDuration(90*time.Minute))
require.Equal(t, 6*time.Hour, mustDuration("bogus"))
require.Equal(t, 15*time.Minute, mustDuration("15m"))
cfg := config.Default()
cfg.DBPath = "/tmp/discrawl.db"
r := &runtime{cfg: cfg}
require.Equal(t, "local", r.archiveSourceKind())
require.Equal(t, cfg.DBPath, r.archiveSourceLocation())
guilds, err := r.resolveTUIGuilds(false, "", "")
require.NoError(t, err)
require.Empty(t, guilds)
r.cfg.DefaultGuildID = "guild-one"
guilds, err = r.resolveTUIGuilds(false, "", "")
require.NoError(t, err)
require.Equal(t, []string{"guild-one"}, guilds)
r.cfg.Share.Remote = "https://github.com/openclaw/discrawl-share.git"
require.Equal(t, "remote", r.archiveSourceKind())
require.Equal(t, r.cfg.Share.Remote, r.archiveSourceLocation())
}
func TestWiretapImportsDesktopDirectMessages(t *testing.T) {
ctx := context.Background()
dir := t.TempDir()

View File

@ -380,71 +380,6 @@ func NeedsImport(ctx context.Context, s *store.Store, staleAfter time.Duration)
return time.Since(t) >= staleAfter
}
func exportTable(ctx context.Context, db *sql.DB, repoPath, table string) (TableManifest, error) {
query, args := snapshotExportQuery(table)
rows, err := db.QueryContext(ctx, query, args...)
if err != nil {
return TableManifest{}, fmt.Errorf("query %s: %w", table, err)
}
defer func() { _ = rows.Close() }()
columns, err := rows.Columns()
if err != nil {
return TableManifest{}, fmt.Errorf("columns %s: %w", table, err)
}
tableDir := filepath.Join(repoPath, "tables", table)
if err := os.MkdirAll(tableDir, 0o755); err != nil {
return TableManifest{}, fmt.Errorf("mkdir %s: %w", table, err)
}
writer := tableShardWriter{rootDir: repoPath, relDir: filepath.ToSlash(filepath.Join("tables", table)), label: table}
if err := writer.open(); err != nil {
return TableManifest{}, err
}
defer func() { _ = writer.close() }()
count := 0
values := make([]any, len(columns))
ptrs := make([]any, len(columns))
for i := range values {
ptrs[i] = &values[i]
}
for rows.Next() {
if err := ctx.Err(); err != nil {
return TableManifest{}, err
}
if err := rows.Scan(ptrs...); err != nil {
return TableManifest{}, fmt.Errorf("scan %s: %w", table, err)
}
row := make(map[string]any, len(columns))
for i, column := range columns {
row[column] = exportValue(values[i])
}
body, err := json.Marshal(row)
if err != nil {
return TableManifest{}, fmt.Errorf("marshal %s row: %w", table, err)
}
if err := writer.rotateIfNeeded(); err != nil {
return TableManifest{}, err
}
if _, err := writer.Write(body); err != nil {
return TableManifest{}, fmt.Errorf("write %s row: %w", table, err)
}
if _, err := writer.Write([]byte{'\n'}); err != nil {
return TableManifest{}, fmt.Errorf("write %s newline: %w", table, err)
}
count++
if err := writer.finishRow(); err != nil {
return TableManifest{}, err
}
}
if err := rows.Err(); err != nil {
return TableManifest{}, fmt.Errorf("iterate %s: %w", table, err)
}
if err := writer.close(); err != nil {
return TableManifest{}, err
}
return TableManifest{Name: table, Files: writer.files, Columns: columns, Rows: count}, nil
}
func exportEmbeddings(ctx context.Context, db *sql.DB, opts Options) (EmbeddingManifest, error) {
provider := strings.ToLower(strings.TrimSpace(opts.EmbeddingProvider))
model := strings.TrimSpace(opts.EmbeddingModel)

View File

@ -263,6 +263,9 @@ func (s *Store) hydrateMessageThreadContext(ctx context.Context, rows []MessageR
if err != nil {
return nil, err
}
if err := contextRows.Err(); err != nil {
return nil, err
}
if err := s.resolveMessageDisplayMentions(ctx, extra); err != nil {
return nil, err
}