mirror of
https://github.com/vim/vim
synced 2025-05-02 22:37:47 +02:00
The current lightweight synchronisation with ":redraw" needs further reinforcement in the light of v9.1.1110. And, with v9.1.0820, make another synchronisation point _before_ the first (or only) screenful is dumped. Also add a script to regenerate all screendumps. closes: #16632 Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
126 lines
2.7 KiB
Bash
Executable file
126 lines
2.7 KiB
Bash
Executable file
#!/bin/sh -e
|
|
#
|
|
# The following steps are to be taken by this script:
|
|
# 1) Remove all files from the "dumps" directory.
|
|
# 2) Generate screendumps for each syntax test and each self-test.
|
|
# 3) Unconditionally move each batch of screendumps to "dumps"; if generated
|
|
# files differ on repeated runs, always remove these files from "dumps".
|
|
# 4) Repeat steps 2) and 3) once or as many times as requested with the "$1"
|
|
# argument.
|
|
# 5) Summarise any differences.
|
|
#
|
|
# Provided that "git difftool" is set up (see src/testdir/commondumps.vim),
|
|
# run "git difftool HEAD -- '**/*.dump'" to collate tracked and generated
|
|
# screendumps.
|
|
|
|
case "$1" in
|
|
-h | --help)
|
|
printf >&2 "Usage: [time VIM_SYNTAX_TEST_LOG=/tmp/log] $0 [1 | 2 | ...]\n"
|
|
exit 0
|
|
;;
|
|
esac
|
|
|
|
tries="${1:-1}"
|
|
shift $#
|
|
|
|
case "$tries" in
|
|
0* | *[!0-9]*)
|
|
exit 80
|
|
;;
|
|
esac
|
|
|
|
test -x "$(command -v make)" || exit 81
|
|
test -x "$(command -v git)" || exit 82
|
|
|
|
case "$(git status --porcelain=v1)" in
|
|
'') ;;
|
|
*) printf >&2 'Resolve ALL changes before proceeding.\n'
|
|
exit 83
|
|
;;
|
|
esac
|
|
|
|
templet=$(printf "\t\t\t\t$(tput rev)%%s$(tput sgr0)") || exit 84
|
|
cd "$(dirname "$0")/../../../syntax" || exit 85
|
|
set +f
|
|
rm testdir/dumps/*.dump || exit 86
|
|
spuriosities=''
|
|
|
|
# Because the clean target of Make will be executed before each syntax test,
|
|
# this environment variable needs to be pointed to an existing file that is
|
|
# created in a directory not affectable by the target.
|
|
if test -w "$VIM_SYNTAX_TEST_LOG"
|
|
then
|
|
log=-e VIM_SYNTAX_TEST_LOG="$VIM_SYNTAX_TEST_LOG"
|
|
else
|
|
log=
|
|
fi
|
|
|
|
for f in testdir/input/*.*
|
|
do
|
|
test ! -d "$f" || continue
|
|
b=$(basename "$f")
|
|
i=0
|
|
printf "$templet\n\n" "$b"
|
|
|
|
while test "$i" -le "$tries"
|
|
do
|
|
make $log clean "$b" test || :
|
|
|
|
case "$i" in
|
|
0) mv testdir/failed/*.dump testdir/dumps/
|
|
;;
|
|
*) case "$(printf '%s' testdir/failed/*.dump)" in
|
|
testdir/failed/\*.dump)
|
|
# (Repeatable) success.
|
|
;;
|
|
*) spuriosities="${spuriosities}${b} "
|
|
p=${b%.*}
|
|
rm -f testdir/dumps/"$p"_[0-9][0-9].dump \
|
|
testdir/dumps/"$p"_[0-9][0-9][0-9].dump \
|
|
testdir/dumps/"$p"_[0-9][0-9][0-9][0-9].dump
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
|
|
i=$(($i + 1))
|
|
sleep 1
|
|
done
|
|
done
|
|
|
|
# For a 20-file set, initially fail for a series of: 1-6, 7-12, 13-18, 19-20.
|
|
tries=$(($tries + 3))
|
|
i=0
|
|
|
|
while test "$i" -le "$tries"
|
|
do
|
|
make $log clean self-testing test || :
|
|
|
|
case "$i" in
|
|
[0-3]) mv testdir/failed/dots_*.dump testdir/dumps/
|
|
;;
|
|
*) case "$(printf '%s' testdir/failed/*.dump)" in
|
|
testdir/failed/\*.dump)
|
|
# (Repeatable) success.
|
|
;;
|
|
*) spuriosities="${spuriosities}dots_xy "
|
|
rm -f testdir/dumps/dots_*.dump
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
|
|
sleep 1
|
|
i=$(($i + 1))
|
|
done
|
|
|
|
make clean
|
|
git diff --compact-summary
|
|
|
|
if test -n "$spuriosities"
|
|
then
|
|
printf '\n%s\n' "$spuriosities"
|
|
exit 87
|
|
fi
|
|
|
|
# vim:sw=8:ts=8:noet:nosta:
|