mirror of
https://github.com/amix/vimrc
synced 2025-06-16 17:45:00 +08:00
Update Ale.
This commit is contained in:
167
sources_non_forked/ale/test/script/run-vader-tests
Executable file
167
sources_non_forked/ale/test/script/run-vader-tests
Executable file
@ -0,0 +1,167 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -u
|
||||
|
||||
docker_flags=(--rm -v "$PWD:/testplugin" -v "$PWD/test:/home" -w /testplugin "$DOCKER_RUN_IMAGE")
|
||||
red='\033[0;31m'
|
||||
green='\033[0;32m'
|
||||
nc='\033[0m'
|
||||
verbose=0
|
||||
quiet=0
|
||||
|
||||
while [ $# -ne 0 ]; do
|
||||
case $1 in
|
||||
-v)
|
||||
verbose=1
|
||||
shift
|
||||
;;
|
||||
-q)
|
||||
quiet=1
|
||||
shift
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
;;
|
||||
-?*)
|
||||
echo "Invalid argument: $1" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
*)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
vim="$1"
|
||||
tests="$2"
|
||||
|
||||
echo "$vim"
|
||||
|
||||
case $vim in
|
||||
neovim-v0.2*)
|
||||
headless=''
|
||||
;;
|
||||
# Neovim 0.6+ requires headless argument to load Vader tests.
|
||||
neovim*)
|
||||
headless='--headless'
|
||||
;;
|
||||
*)
|
||||
headless=''
|
||||
;;
|
||||
esac
|
||||
|
||||
# This file will be used to track if tests ran or not.
|
||||
# We can't use a variable, because we need to set a value in a sub-shell.
|
||||
run_file="$(mktemp -t tests_ran.XXXXXXXX)"
|
||||
|
||||
function filter-vader-output() {
|
||||
local hit_first_vader_line=0
|
||||
# When verbose mode is off, suppress output until Vader starts.
|
||||
local start_output="$verbose"
|
||||
local filtered_data=''
|
||||
|
||||
while read -r; do
|
||||
# Search for the first Vader output line.
|
||||
# We can try starting tests again if they don't start.
|
||||
if ((!hit_first_vader_line)); then
|
||||
if [[ "$REPLY" = *'Starting Vader:'* ]]; then
|
||||
hit_first_vader_line=1
|
||||
fi
|
||||
fi
|
||||
|
||||
if ((!start_output)); then
|
||||
if ((hit_first_vader_line)); then
|
||||
start_output=1
|
||||
else
|
||||
continue
|
||||
fi
|
||||
fi
|
||||
|
||||
if ((quiet)); then
|
||||
if [[ "$REPLY" = *'Starting Vader:'* ]]; then
|
||||
filtered_data="$REPLY"
|
||||
elif [[ "$REPLY" = *'Success/Total'* ]]; then
|
||||
success="$(echo -n "$REPLY" | grep -o '[0-9]\+/' | head -n1 | cut -d/ -f1)"
|
||||
total="$(echo -n "$REPLY" | grep -o '/[0-9]\+' | head -n1 | cut -d/ -f2)"
|
||||
|
||||
if [ "$success" -lt "$total" ]; then
|
||||
echo "$filtered_data"
|
||||
echo "$REPLY"
|
||||
fi
|
||||
|
||||
filtered_data=''
|
||||
else
|
||||
filtered_data="$filtered_data"$'\n'"$REPLY"
|
||||
fi
|
||||
else
|
||||
echo "$REPLY"
|
||||
fi
|
||||
done
|
||||
|
||||
# Note that we managed to get the Vader tests started if we did.
|
||||
if ((hit_first_vader_line)); then
|
||||
echo 1 > "$run_file"
|
||||
fi
|
||||
}
|
||||
|
||||
function color-vader-output() {
|
||||
while read -r; do
|
||||
if [[ "$REPLY" = *'[EXECUTE] (X)'* ]]; then
|
||||
echo -en "$red"
|
||||
elif [[ "$REPLY" = *'[EXECUTE]'* ]] || [[ "$REPLY" = *'[ GIVEN]'* ]]; then
|
||||
echo -en "$nc"
|
||||
fi
|
||||
|
||||
if [[ "$REPLY" = *'Success/Total'* ]]; then
|
||||
success="$(echo -n "$REPLY" | grep -o '[0-9]\+/' | head -n1 | cut -d/ -f1)"
|
||||
total="$(echo -n "$REPLY" | grep -o '/[0-9]\+' | head -n1 | cut -d/ -f2)"
|
||||
|
||||
if [ "$success" -lt "$total" ]; then
|
||||
echo -en "$red"
|
||||
else
|
||||
echo -en "$green"
|
||||
fi
|
||||
|
||||
echo "$REPLY"
|
||||
echo -en "$nc"
|
||||
else
|
||||
echo "$REPLY"
|
||||
fi
|
||||
done
|
||||
|
||||
echo -en "$nc"
|
||||
}
|
||||
|
||||
echo
|
||||
echo '========================================'
|
||||
echo "Running tests for $vim"
|
||||
echo '========================================'
|
||||
echo
|
||||
|
||||
tries=0
|
||||
|
||||
while [ "$tries" -lt 5 ]; do
|
||||
tries=$((tries + 1))
|
||||
|
||||
exit_code=0
|
||||
set -o pipefail
|
||||
docker run -a stderr -e VADER_OUTPUT_FILE=/dev/stderr "${docker_flags[@]}" \
|
||||
"/vim-build/bin/$vim" -u test/vimrc ${headless} \
|
||||
"+Vader! $tests" 2>&1 | filter-vader-output | color-vader-output || exit_code=$?
|
||||
set +o pipefail
|
||||
|
||||
if [ -s "$run_file" ]; then
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "$tries" -gt 1 ]; then
|
||||
echo
|
||||
echo "Tried to run tests $tries times"
|
||||
fi
|
||||
|
||||
rm "$run_file"
|
||||
|
||||
exit "$exit_code"
|
Reference in New Issue
Block a user