mirror of
https://github.com/neovim/neovim.git
synced 2024-12-20 19:25:11 -07:00
af23d17388
The new oldtest directory is in test/old/testdir. The reason for this is that many tests have hardcoded the parent directory name to be 'testdir'.
89 lines
2.2 KiB
Bash
Executable File
89 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
main() {(
|
|
local separator="================================================================================"
|
|
local oldesttest=
|
|
if test "$1" = "--oldesttest" ; then
|
|
shift
|
|
oldesttest=1
|
|
fi
|
|
local root="$1" ; shift
|
|
local nvim_prg="$1" ; shift
|
|
local test_name="$1" ; shift
|
|
|
|
local tlog="$test_name.tlog"
|
|
|
|
export NVIM_TEST_ARGC=$#
|
|
local arg
|
|
local i=0
|
|
# shellcheck disable=SC2034 # (unused "arg", used in "eval").
|
|
for arg ; do
|
|
eval "export NVIM_TEST_ARG$i=\"\$arg\""
|
|
i=$(( i+1 ))
|
|
done
|
|
|
|
BUILD_DIR="$(dirname "$nvim_prg")/.."
|
|
export BUILD_DIR
|
|
export FAILED=0
|
|
|
|
. $(dirname $0)/test.sh
|
|
|
|
# Redirect XDG_CONFIG_HOME so users local config doesn't interfere
|
|
export XDG_CONFIG_HOME="$root"
|
|
|
|
export VIMRUNTIME="$root/runtime"
|
|
if ! "$nvim_prg" \
|
|
-u NONE -i NONE \
|
|
--headless \
|
|
--cmd 'set shortmess+=I noswapfile noundofile nomore' \
|
|
-S runnvim.vim \
|
|
"$tlog" > "out-$tlog" 2> "err-$tlog"
|
|
then
|
|
fail "$test_name" "Nvim exited with non-zero code"
|
|
fi
|
|
{
|
|
echo "Stdout of :terminal runner"
|
|
echo "$separator"
|
|
cat "out-$tlog"
|
|
echo "$separator"
|
|
echo "Stderr of :terminal runner"
|
|
echo "$separator"
|
|
cat "err-$tlog"
|
|
echo "$separator"
|
|
} >> "$tlog"
|
|
if test "$oldesttest" = 1 ; then
|
|
if ! diff -q test.out "$test_name.ok" > /dev/null 2>&1 ; then
|
|
if test -f test.out ; then
|
|
fail "$test_name" "Oldest test .out file differs from .ok file"
|
|
{
|
|
echo "Diff between test.out and $test_name.ok"
|
|
echo "$separator"
|
|
diff -a test.out "$test_name.ok"
|
|
echo "$separator"
|
|
} >> "$tlog"
|
|
else
|
|
echo "No output in test.out" >> "$tlog"
|
|
fi
|
|
fi
|
|
fi
|
|
valgrind_check .
|
|
if test -n "$LOG_DIR" ; then
|
|
check_sanitizer "$LOG_DIR"
|
|
fi
|
|
check_core_dumps
|
|
if test "$FAILED" = 1 ; then
|
|
cat "$tlog"
|
|
fi
|
|
rm -f "$tlog"
|
|
if test "$FAILED" = 1 ; then
|
|
echo "Test $test_name failed, see output above and summary for more details" >> test.log
|
|
# When Neovim crashed/aborted it might not have created messages.
|
|
# test.log itself is used as an indicator to exit non-zero in the Makefile.
|
|
if ! test -f message; then
|
|
cp -a test.log messages
|
|
fi
|
|
fi
|
|
)}
|
|
|
|
main "$@"
|