Skip to content

Commit 30f5233

Browse files
committed
test(unit): use UTC timestamps in replays
Fixes github action for tests
1 parent bb37a45 commit 30f5233

File tree

10 files changed

+37
-39
lines changed

10 files changed

+37
-39
lines changed

.github/workflows/tests.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,6 @@ jobs:
3030
include:
3131
- os: macos-latest
3232
neovim_version: v0.11.4
33-
- os: windows-latest
34-
neovim_version: v0.11.4
3533
runs-on: ${{ matrix.os }}
3634

3735
steps:

run_tests.sh

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#!/bin/bash
22
# run_tests.sh - Test runner with clean failure summary
33

4-
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5-
cd "$SCRIPT_DIR"
4+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5+
cd "$SCRIPT_DIR" || exit 1
66

77
# Colors
88
GREEN='\033[0;32m'
@@ -31,23 +31,23 @@ print_usage() {
3131

3232
while [[ $# -gt 0 ]]; do
3333
case $1 in
34-
-f|--filter)
35-
FILTER="$2"
36-
shift 2
37-
;;
38-
-t|--type)
39-
TEST_TYPE="$2"
40-
shift 2
41-
;;
42-
-h|--help)
43-
print_usage
44-
exit 0
45-
;;
46-
*)
47-
echo "Unknown option: $1"
48-
print_usage
49-
exit 1
50-
;;
34+
-f | --filter)
35+
FILTER="$2"
36+
shift 2
37+
;;
38+
-t | --type)
39+
TEST_TYPE="$2"
40+
shift 2
41+
;;
42+
-h | --help)
43+
print_usage
44+
exit 0
45+
;;
46+
*)
47+
echo "Unknown option: $1"
48+
print_usage
49+
exit 1
50+
;;
5151
esac
5252
done
5353

@@ -110,14 +110,14 @@ if [ "$TEST_TYPE" != "all" ] && [ "$TEST_TYPE" != "minimal" ] && [ "$TEST_TYPE"
110110
specific_output=$(nvim --headless -u tests/minimal/init.lua -c "lua require('plenary.test_harness').test_directory('./$TEST_TYPE', {minimal_init = './tests/minimal/init.lua'$FILTER_OPTION})" 2>&1)
111111
specific_status=$?
112112
clean_output "$specific_output"
113-
113+
114114
if [ $specific_status -eq 0 ]; then
115115
echo -e "${GREEN}✓ Specific test passed${NC}"
116116
else
117117
echo -e "${RED}✗ Specific test failed${NC}"
118118
fi
119119
echo "------------------------------------------------"
120-
120+
121121
# Use specific test output for failure analysis
122122
unit_output="$specific_output"
123123
unit_status=$specific_status
@@ -131,22 +131,22 @@ fi
131131
all_output="$minimal_output
132132
$unit_output"
133133

134-
if [ $minimal_status -ne 0 ] || [ $unit_status -ne 0 ] || echo "$all_output" | grep -q "\[31mFail"; then
134+
if [ $minimal_status -ne 0 ] || [ $unit_status -ne 0 ] || echo "$all_output" | grep -q "\[31mFail.*||"; then
135135
echo -e "\n${RED}======== TEST FAILURES SUMMARY ========${NC}"
136-
136+
137137
# Extract and format failures
138138
failures_file=$(mktemp)
139-
echo "$all_output" | grep -B 0 -A 6 "\[31mFail.*||" > "$failures_file"
139+
echo "$all_output" | grep -B 0 -A 6 "\[31mFail.*||" >"$failures_file"
140140
failure_count=$(grep -c "\[31mFail.*||" "$failures_file")
141-
141+
142142
echo -e "${RED}Found $failure_count failing test(s):${NC}\n"
143-
143+
144144
# Process the output line by line
145145
test_name=""
146146
while IFS= read -r line; do
147147
# Remove ANSI color codes
148148
clean_line=$(echo "$line" | sed -E 's/\x1B\[[0-9;]*[mK]//g')
149-
149+
150150
if [[ "$clean_line" == *"Fail"*"||"* ]]; then
151151
# Extract test name
152152
test_name=$(echo "$clean_line" | sed -E 's/.*Fail.*\|\|\s*(.*)/\1/')
@@ -161,8 +161,8 @@ if [ $minimal_status -ne 0 ] || [ $unit_status -ne 0 ] || echo "$all_output" | g
161161
# Stack trace details
162162
echo -e " $clean_line"
163163
fi
164-
done < "$failures_file"
165-
164+
done <"$failures_file"
165+
166166
rm -f "$failures_file"
167167
exit 1
168168
else

tests/data/diff.expected.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"extmarks":[[1,2,0,{"virt_text_win_col":-3,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-11 23:42:56)","OpencodeHint"],[" [msg_9d7287269001C5gRusYfX7A1w1]","OpencodeHint"]],"virt_text_pos":"win_col"}],[2,3,0,{"virt_text_win_col":-3,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[3,4,0,{"virt_text_win_col":-3,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[4,5,0,{"virt_text_win_col":-3,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[5,6,0,{"virt_text_win_col":-3,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[6,9,0,{"virt_text_win_col":-3,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-11 23:42:56)","OpencodeHint"],[" [msg_9d7287287001HVwpPaH7WkRVdN]","OpencodeHint"]],"virt_text_pos":"win_col"}],[21,11,0,{"virt_text_win_col":-1,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col"}],[22,12,0,{"virt_text_win_col":-1,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col"}],[23,13,0,{"virt_text_win_col":-1,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col"}],[24,14,0,{"priority":5000,"ns_id":3,"end_col":0,"end_row":15,"hl_eol":true,"right_gravity":true,"end_right_gravity":false,"virt_text_hide":false,"hl_group":"OpencodeDiffDelete","virt_text_repeat_linebreak":false,"virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay"}],[25,14,0,{"virt_text_win_col":-1,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col"}],[26,15,0,{"priority":5000,"ns_id":3,"end_col":0,"end_row":16,"hl_eol":true,"right_gravity":true,"end_right_gravity":false,"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay"}],[27,15,0,{"virt_text_win_col":-1,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col"}],[28,16,0,{"virt_text_win_col":-1,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col"}],[29,17,0,{"virt_text_win_col":-1,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col"}],[30,22,0,{"virt_text_win_col":-3,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-11 23:43:03)","OpencodeHint"],[" [msg_9d7288f2f001hW6NqqhtBc72UU]","OpencodeHint"]],"virt_text_pos":"win_col"}]],"timestamp":1760401089,"lines":["","---","","","can you add \"great\" before \"string\" in @diff-test.txt?","","[diff-test.txt](diff-test.txt)","","---","","","** edit** `diff-test.txt`","","```txt"," this is a string"," this is a great string","","```","","**󰻛 Created Snapshot** `1f593f7e`","","---","",""]}
1+
{"timestamp":1760472141,"lines":["","----","","","can you add \"great\" before \"string\" in @diff-test.txt?","","[diff-test.txt](diff-test.txt)","","----","","","** edit** `diff-test.txt`","","```txt"," this is a string"," this is a great string","","```","","**󰻛 Created Snapshot** `1f593f7e`","","----","",""],"extmarks":[[1,2,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-12 06:42:56)","OpencodeHint"],[" [msg_9d7287269001C5gRusYfX7A1w1]","OpencodeHint"]],"virt_text_win_col":-3,"priority":10}],[2,3,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"priority":4096}],[3,4,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"priority":4096}],[4,5,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"priority":4096}],[5,6,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"priority":4096}],[6,9,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 06:42:56)","OpencodeHint"],[" [msg_9d7287287001HVwpPaH7WkRVdN]","OpencodeHint"]],"virt_text_win_col":-3,"priority":10}],[21,11,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"priority":4096}],[22,12,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"priority":4096}],[23,13,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"priority":4096}],[24,14,0,{"end_col":0,"hl_eol":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"priority":5000,"end_row":15,"virt_text":[["-","OpencodeDiffDelete"]],"end_right_gravity":false,"hl_group":"OpencodeDiffDelete","virt_text_pos":"overlay"}],[25,14,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"priority":4096}],[26,15,0,{"end_col":0,"hl_eol":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"priority":5000,"end_row":16,"virt_text":[["+","OpencodeDiffAdd"]],"end_right_gravity":false,"hl_group":"OpencodeDiffAdd","virt_text_pos":"overlay"}],[27,15,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"priority":4096}],[28,16,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"priority":4096}],[29,17,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"priority":4096}],[30,22,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 06:43:03)","OpencodeHint"],[" [msg_9d7288f2f001hW6NqqhtBc72UU]","OpencodeHint"]],"virt_text_win_col":-3,"priority":10}]]}

tests/data/permission-denied.expected.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"extmarks":[[1,2,0,{"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-11 22:43:49)","OpencodeHint"],[" [msg_9d6f253910015UFmkGkiWtUsRW]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"right_gravity":true,"priority":10,"ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":false}],[2,3,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"right_gravity":true,"priority":4096,"ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true}],[3,4,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"right_gravity":true,"priority":4096,"ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true}],[4,7,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-11 22:43:49)","OpencodeHint"],[" [msg_9d6f253df001TjqxW12FAjGf5s]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"right_gravity":true,"priority":10,"ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":false}],[26,9,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"right_gravity":true,"priority":4096,"ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true}],[27,10,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"right_gravity":true,"priority":4096,"ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true}],[28,11,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"right_gravity":true,"priority":4096,"ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true}],[29,12,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"right_gravity":true,"priority":4096,"ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true}],[30,13,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"right_gravity":true,"priority":4096,"ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true}],[31,18,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-11 22:44:00)","OpencodeHint"],[" [msg_9d6f27f4800103Tp3N6i6JW53p]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"right_gravity":true,"priority":10,"ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":false}]],"timestamp":1760401131,"lines":["","---","","","add a file, test.txt, with \":)\" in it","","---","","","** write** `test.txt`","","```txt",":)","```","","**󰻛 Created Snapshot** `c78fb2dd`","","---","",""]}
1+
{"extmarks":[[1,2,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_win_col":-3,"priority":10,"right_gravity":true,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-12 05:43:49)","OpencodeHint"],[" [msg_9d6f253910015UFmkGkiWtUsRW]","OpencodeHint"]],"virt_text_hide":false}],[2,3,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_hide":false}],[3,4,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_hide":false}],[4,7,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_win_col":-3,"priority":10,"right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 05:43:49)","OpencodeHint"],[" [msg_9d6f253df001TjqxW12FAjGf5s]","OpencodeHint"]],"virt_text_hide":false}],[26,9,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_hide":false}],[27,10,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_hide":false}],[28,11,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_hide":false}],[29,12,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_hide":false}],[30,13,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_hide":false}],[31,18,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_win_col":-3,"priority":10,"right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 05:44:00)","OpencodeHint"],[" [msg_9d6f27f4800103Tp3N6i6JW53p]","OpencodeHint"]],"virt_text_hide":false}]],"lines":["","----","","","add a file, test.txt, with \":)\" in it","","----","","","** write** `test.txt`","","```txt",":)","```","","**󰻛 Created Snapshot** `c78fb2dd`","","----","",""],"timestamp":1760472142}

0 commit comments

Comments
 (0)