summaryrefslogtreecommitdiff
path: root/run-tests
diff options
context:
space:
mode:
Diffstat (limited to 'run-tests')
-rwxr-xr-xrun-tests96
1 files changed, 63 insertions, 33 deletions
diff --git a/run-tests b/run-tests
index a2b83bd2..92f93fe0 100755
--- a/run-tests
+++ b/run-tests
@@ -24,11 +24,14 @@ tests='test/*.vader test/*/*.vader test/*/*/*.vader'
# These flags are forwarded to the script for running Vader tests.
verbose_flag=''
quiet_flag=''
+docker_flag=''
run_neovim_02_tests=1
+run_neovim_07_tests=0
run_neovim_08_tests=1
run_vim_80_tests=1
run_vim_90_tests=1
run_linters=1
+use_docker=1
while [ $# -ne 0 ]; do
case $1 in
@@ -68,6 +71,10 @@ while [ $# -ne 0 ]; do
run_linters=0
shift
;;
+ --neovim-07-also)
+ run_neovim_07_tests=1
+ shift
+ ;;
--vim-only)
run_neovim_02_tests=0
run_neovim_08_tests=0
@@ -114,6 +121,7 @@ while [ $# -ne 0 ]; do
echo ' --build-image Run docker image build only.'
echo ' --neovim-only Run tests only for NeoVim'
echo ' --neovim-02-only Run tests only for NeoVim 0.2'
+ echo ' --neovim-07-only Run tests for NeoVim 0.7 (not in Docker)'
echo ' --neovim-08-only Run tests only for NeoVim 0.8'
echo ' --vim-only Run tests only for Vim'
echo ' --vim-80-only Run tests only for Vim 8.2'
@@ -121,9 +129,15 @@ while [ $# -ne 0 ]; do
echo ' --linters-only Run only Vint and custom checks'
echo ' --fast Run only the fastest Vim and custom checks'
echo ' --help Show this help text'
+ echo ' --no-docker Skip using Docker (unsupported)'
echo ' -- Stop parsing options after this'
exit 0
;;
+ --no-docker)
+ use_docker=0
+ docker_flag='--no-docker'
+ shift
+ ;;
--)
shift
break
@@ -153,10 +167,6 @@ find test -name '*.swp' -delete
set -eu
-# Check if docker un image is available locally
-has_image=$(docker images --quiet "${image}:${image_tag}" | wc -l)
-arch=$(docker info -f '{{ .Architecture }}')
-
download_image() {
if [[ $arch != x86_64 ]]; then
echo "Pre-built docker image is not available for architecture ${arch}"
@@ -166,33 +176,39 @@ download_image() {
docker pull "${image}:${image_tag}" &> /dev/null
}
-if [ "$has_image" -eq 0 ] && ! download_image; then
- echo "Building run image ${image}:${image_tag}"
+if [ "$use_docker" -eq 1 ]; then
+ # Check if docker un image is available locally
+ has_image=$(docker images --quiet "${image}:${image_tag}" | wc -l)
+ arch=$(docker info -f '{{ .Architecture }}')
- build_args=( --build-arg GIT_VERSION="$git_version" )
+ if [ "$has_image" -eq 0 ] && ! download_image; then
+ echo "Building run image ${image}:${image_tag}"
- if [[ $arch != x86_64 ]]; then
- echo "Building testbed/vim:24 for $arch"
- testbed_vim_ref=902917c4caa50db2f2e80009b839605602f9f014
- docker build -t "testbed/vim:$testbed_vim_ref" "https://github.com/Vimjas/vim-testbed.git#$testbed_vim_ref"
- build_args+=( --build-arg TESTBED_VIM_VERSION="$testbed_vim_ref" )
- fi
+ build_args=( --build-arg GIT_VERSION="$git_version" )
- docker build "${build_args[@]}" -t "${image}:${image_tag}" .
- docker tag "${image}:${image_tag}" "${image}:latest"
+ if [[ $arch != x86_64 ]]; then
+ echo "Building testbed/vim:24 for $arch"
+ testbed_vim_ref=902917c4caa50db2f2e80009b839605602f9f014
+ docker build -t "testbed/vim:$testbed_vim_ref" "https://github.com/Vimjas/vim-testbed.git#$testbed_vim_ref"
+ build_args+=( --build-arg TESTBED_VIM_VERSION="$testbed_vim_ref" )
+ fi
- if [[ -z "${DOCKER_HUB_USER:-}" || -z "${DOCKER_HUB_PASS:-}" ]]; then
- echo "Docker Hub credentials not set, skip push"
+ docker build "${build_args[@]}" -t "${image}:${image_tag}" .
+ docker tag "${image}:${image_tag}" "${image}:latest"
+
+ if [[ -z "${DOCKER_HUB_USER:-}" || -z "${DOCKER_HUB_PASS:-}" ]]; then
+ echo "Docker Hub credentials not set, skip push"
+ else
+ echo "Push ${image}:${image_tag} to Docker Hub"
+ echo "$DOCKER_HUB_PASS" | docker login -u "$DOCKER_HUB_USER" --password-stdin
+ docker push "${image}:${image_tag}"
+ fi
else
- echo "Push ${image}:${image_tag} to Docker Hub"
- echo "$DOCKER_HUB_PASS" | docker login -u "$DOCKER_HUB_USER" --password-stdin
- docker push "${image}:${image_tag}"
+ echo "Docker run image ${image}:${image_tag} ready"
fi
-else
- echo "Docker run image ${image}:${image_tag} ready"
-fi
-docker tag "${image}:${image_tag}" "${image}:latest"
+ docker tag "${image}:${image_tag}" "${image}:latest"
+fi
output_dir=$(mktemp -d 2>/dev/null || mktemp -d -t 'mytmpdir')
@@ -202,6 +218,7 @@ file_number=0
pid_list=''
# Used for killing tests when you kill the script.
+# shellcheck disable=SC2317
cancel_tests() {
set +e
@@ -223,17 +240,30 @@ cancel_tests() {
exit 1
}
-trap cancel_tests INT TERM
+[ "$use_docker" -ne 1 ] || trap cancel_tests INT TERM
+
+available_vims() {
+ if [ "$use_docker" -eq 1 ]; then
+ docker run --rm "$DOCKER_RUN_IMAGE" ls /vim-build/bin | grep '^neovim\|^vim'
+ else
+ vim --version |
+ sed -n 's/^VIM - Vi IMproved \([0-9.]\+\).*/vim-v\1=vim/p' || :
+ nvim --version |
+ sed -n 's/^NVIM \(v[0-9]\+\.[0-9]\+\).*/neovim-\1=nvim/p' || :
+ fi
+}
-for vim in $(docker run --rm "$DOCKER_RUN_IMAGE" ls /vim-build/bin | grep '^neovim\|^vim' ); do
- if ( [[ $vim =~ ^vim-v8.0 ]] && ((run_vim_80_tests)) ) \
- || ( [[ $vim =~ ^vim-v9.0 ]] && ((run_vim_90_tests)) ) \
- || ( [[ $vim =~ ^neovim-v0.2 ]] && ((run_neovim_02_tests)) ) \
- || ( [[ $vim =~ ^neovim-v0.8 ]] && ((run_neovim_08_tests)) ); then
+for vim in $( available_vims ); do
+ if ( [[ "$vim" =~ ^vim-v8.0 ]] && ((run_vim_80_tests)) ) \
+ || ( [[ "$vim" =~ ^vim-v9.0 ]] && ((run_vim_90_tests)) ) \
+ || ( [[ "$vim" =~ ^neovim-v0.2 ]] && ((run_neovim_02_tests)) ) \
+ || ( [[ "$vim" =~ ^neovim-v0.7 ]] && ((run_neovim_07_tests)) ) \
+ || ( [[ "$vim" =~ ^neovim-v0.8 ]] && ((run_neovim_08_tests)) ) \
+ || ( [[ "$vim" =~ ^neovim-v0.8 ]] && ((run_neovim_08_tests)) ); then
echo "Starting Vim: $vim..."
file_number=$((file_number+1))
- test/script/run-vader-tests $quiet_flag $verbose_flag "$vim" "$tests" \
- > "$output_dir/$file_number" 2>&1 &
+ test/script/run-vader-tests $quiet_flag $verbose_flag $docker_flag \
+ "${vim#*=}" "$tests" > "$output_dir/$file_number" 2>&1 &
pid_list="$pid_list $!"
fi
done
@@ -241,7 +271,7 @@ done
if ((run_linters)); then
echo "Starting Vint..."
file_number=$((file_number+1))
- test/script/run-vint > "$output_dir/$file_number" 2>&1 &
+ test/script/run-vint $docker_flag > "$output_dir/$file_number" 2>&1 &
pid_list="$pid_list $!"
echo "Starting Custom checks..."