summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Altmanninger <aclopte@gmail.com>2024-02-18 01:16:53 +0100
committerMaxime Coste <mawww@kakoune.org>2024-02-18 15:45:03 +1100
commitf786fceb7392faf7aa4d053ffda5737e0630d4df (patch)
tree28453d9b7c4c27db106bf736f60e217d37020287
parent5f0729f1550a5874961cb83bef6d9e8c6974c808 (diff)
Fix flaky blame-jump-message test
This test fails occasionally[1] because the order of events and the number of events varies across runs. We should always call draw_status exactly 3 times: [*git*][fifo] [*git*] Commit subject etc. [*git*] Let's check it this way. This seems to work; this time I took the time to run it a couple hundred times and in Cirrus CI. [1] https://builds.sr.ht/~mawww/job/1151239
-rwxr-xr-xtest/run19
-rw-r--r--test/tools/git/blame-jump-message/script16
2 files changed, 25 insertions, 10 deletions
diff --git a/test/run b/test/run
index be7d063d..cb6e7bc1 100755
--- a/test/run
+++ b/test/run
@@ -136,6 +136,13 @@ fail_ifn() {
fi
}
+assert_eq() {
+ if [ ! "$1" = "$2" ]; then
+ fail_ifn
+ printf "${indent} ${red}- %s\n${indent} ${green}+ %s${none}\n" "$1" "$2"
+ fi
+}
+
show_diff() {
diff -u $1 $2 | while IFS='' read -r line; do
first_character=$(printf '%s\n' "$line" | cut -b 1)
@@ -183,6 +190,13 @@ ui_out() {
skip_count=$(( skip_count - 1 ))
done
;;
+ -until-grep)
+ shift
+ while
+ read -r event <&4
+ ! printf %s "$event" | grep "$@"
+ do :; done
+ ;;
-within-next)
shift
candidate_count=$1
@@ -208,10 +222,7 @@ ui_out() {
;;
*)
read -r event <&4
- if [ ! "$1" = "$event" ]; then
- fail_ifn
- printf "${indent} ${red}- %s\n${indent} ${green}+ %s${none}\n" "$1" "$event"
- fi
+ assert_eq "$1" "$event"
;;
esac
shift
diff --git a/test/tools/git/blame-jump-message/script b/test/tools/git/blame-jump-message/script
index 33e01b6f..5edea930 100644
--- a/test/tools/git/blame-jump-message/script
+++ b/test/tools/git/blame-jump-message/script
@@ -1,10 +1,14 @@
-ui_out -ignore 7
-ui_out -ignore 4
+for _ in fifo-opened fifo-closed blame-info
+do
+ actual_draw_status=$(ui_out -until-grep draw_status)
+done
-ui_out -ignore 3
-subject=$(cat <<'EOF'
+expected_subject=$(cat <<'EOF'
2017-07-14 A U Thor "Don't break on single quotes or unbalanced {"
EOF
)
-json_quoted_subject=\"$(printf '%s' "$subject" | sed 's/"/\\"/g')\"
-ui_out -within-next 3 '{ "jsonrpc": "2.0", "method": "draw_status", "params": [[{ "face": { "fg": "black", "bg": "yellow", "underline": "default", "attributes": [] }, "contents": '"$json_quoted_subject"' }], [{ "face": { "fg": "default", "bg": "default", "underline": "default", "attributes": [] }, "contents": "*git* 13:2 " }, { "face": { "fg": "black", "bg": "yellow", "underline": "default", "attributes": [] }, "contents": "[scratch]" }, { "face": { "fg": "default", "bg": "default", "underline": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "underline": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "underline": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "underline": "default", "attributes": [] }] }'
+expected_subject_json=\"$(printf '%s' "$expected_subject" | sed 's/"/\\"/g')\"
+expected_draw_status='{ "jsonrpc": "2.0", "method": "draw_status", "params": [[{ "face": { "fg": "black", "bg": "yellow", "underline": "default", "attributes": [] }, "contents": '"$expected_subject_json"' }], [{ "face": { "fg": "default", "bg": "default", "underline": "default", "attributes": [] }, "contents": "*git* 13:2 " }, { "face": { "fg": "black", "bg": "yellow", "underline": "default", "attributes": [] }, "contents": "[scratch]" }, { "face": { "fg": "default", "bg": "default", "underline": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "underline": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "underline": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "underline": "default", "attributes": [] }] }'
+
+assert_eq "$actual_draw_status" "$expected_draw_status"
+ui_out -ignore 2