Skip to content

Commit 519b6ed

Browse files
committed
test(replay): better event counting
1 parent 5f89345 commit 519b6ed

File tree

1 file changed

+38
-41
lines changed

1 file changed

+38
-41
lines changed

tests/manual/renderer_replay.lua

Lines changed: 38 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@ local helpers = require('tests.helpers')
44
local output_window = require('opencode.ui.output_window')
55
local config = require('opencode.config')
66

7-
local M = {}
8-
9-
M.events = {}
10-
M.current_index = 0
11-
M.stop = false
12-
M.last_loaded_file = nil
13-
M.headless_mode = false
7+
local M = {
8+
events = {},
9+
event_index = 0, -- which events we have dispatched up to
10+
events_received = 0, -- how many events we have received, just used for logging
11+
stop = false,
12+
last_loaded_file = nil,
13+
headless_mode = false,
14+
}
1415

1516
function M.load_events(file_path)
1617
file_path = file_path or 'tests/data/simple-session.json'
@@ -42,6 +43,7 @@ function M.load_events(file_path)
4243
end
4344

4445
function M.setup_windows(opts)
46+
require('opencode.ui.highlight').setup()
4547
helpers.replay_setup()
4648

4749
vim.schedule(function()
@@ -64,9 +66,9 @@ function M.replay_next(steps)
6466
steps = tonumber(steps) or 1
6567

6668
for _ = 1, steps do
67-
if M.current_index < #M.events then
68-
M.current_index = M.current_index + 1
69-
helpers.replay_event(M.events[M.current_index])
69+
if M.event_index < #M.events then
70+
M.event_index = M.event_index + 1
71+
helpers.replay_event(M.events[M.event_index])
7072
else
7173
vim.notify('No more events to replay', vim.log.levels.WARN)
7274
return
@@ -100,7 +102,7 @@ function M.replay_all(delay_ms)
100102
-- will call renderer
101103
local function tick()
102104
M.replay_next()
103-
if M.current_index >= #M.events or M.stop then
105+
if M.event_index >= #M.events or M.stop then
104106
state.job_count = 0
105107

106108
if M.headless_mode then
@@ -121,15 +123,16 @@ function M.replay_stop()
121123
end
122124

123125
function M.reset()
124-
M.current_index = 0
126+
M.event_index = 0
127+
M.events_received = 0
125128
M.clear()
126129
end
127130

128131
function M.show_status()
129132
local status = string.format(
130133
'Replay Status:\n Events loaded: %d\n Current index: %d\n Playing: %s',
131134
#M.events,
132-
M.current_index,
135+
M.event_index,
133136
not M.stop
134137
)
135138
vim.notify(status, vim.log.levels.INFO)
@@ -345,7 +348,8 @@ function M.start(opts)
345348

346349
-- NOTE: the index numbers will be incorrect when event collapsing happens
347350
local log_event = function(type, event)
348-
local index = M.current_index
351+
M.events_received = M.events_received + 1
352+
local index = M.events_received
349353
local count = #M.events
350354
local id = event.info and event.info.id
351355
or event.part and event.part.id
@@ -357,33 +361,26 @@ function M.start(opts)
357361
vim.notify('Event ' .. index .. '/' .. count .. ': ' .. type .. ' ' .. id, vim.log.levels.INFO)
358362
end
359363

360-
state.event_manager:subscribe('session.updated', function(event)
361-
log_event('session.updated', event)
362-
end)
363-
state.event_manager:subscribe('session.compacted', function(event)
364-
log_event('session.compacted', event)
365-
end)
366-
state.event_manager:subscribe('session.error', function(event)
367-
log_event('session.error', event)
368-
end)
369-
state.event_manager:subscribe('message.updated', function(event)
370-
log_event('message.updated', event)
371-
end)
372-
state.event_manager:subscribe('message.removed', function(event)
373-
log_event('message.removed', event)
374-
end)
375-
state.event_manager:subscribe('message.part.updated', function(event)
376-
log_event('message.part.updated', event)
377-
end)
378-
state.event_manager:subscribe('message.removed', function(event)
379-
log_event('message.removed', event)
380-
end)
381-
state.event_manager:subscribe('permission.updated', function(event)
382-
log_event('permission.updated', event)
383-
end)
384-
state.event_manager:subscribe('permission.replied', function(event)
385-
log_event('permission.replied', event)
386-
end)
364+
local events = {
365+
'session.updated',
366+
'session.compacted',
367+
'session.error',
368+
'session.idle',
369+
'message.updated',
370+
'message.removed',
371+
'message.part.updated',
372+
'message.removed',
373+
'permission.updated',
374+
'permission.replied',
375+
'file.edited',
376+
'server.connected',
377+
}
378+
379+
for _, event_name in ipairs(events) do
380+
state.event_manager:subscribe(event_name, function(event)
381+
log_event(event_name, event)
382+
end)
383+
end
387384
end
388385

389386
return M

0 commit comments

Comments
 (0)