2017-03-21 02:15:22 -07:00
|
|
|
# vim: noet ts=8
|
2014-01-31 06:39:15 -07:00
|
|
|
# Makefile to run all tests for Vim
|
|
|
|
#
|
|
|
|
|
2017-12-08 08:42:30 -07:00
|
|
|
ifeq ($(OS),Windows_NT)
|
|
|
|
NVIM_PRG ?= ../../../build/bin/nvim.exe
|
|
|
|
else
|
|
|
|
NVIM_PRG ?= ../../../build/bin/nvim
|
|
|
|
endif
|
2018-03-17 16:38:27 -07:00
|
|
|
ROOT := ../../..
|
2014-01-31 06:39:15 -07:00
|
|
|
|
2017-02-13 07:07:49 -07:00
|
|
|
export SHELL := sh
|
|
|
|
export NVIM_PRG := $(NVIM_PRG)
|
2022-12-08 16:51:37 -07:00
|
|
|
export TMPDIR := $(abspath X-test-tmpdir)
|
2017-02-13 07:07:49 -07:00
|
|
|
|
2019-08-04 21:27:13 -07:00
|
|
|
ifeq ($(OS),Windows_NT)
|
|
|
|
FIXFF = fixff
|
|
|
|
else
|
|
|
|
FIXFF =
|
|
|
|
endif
|
|
|
|
|
2017-02-11 17:02:54 -07:00
|
|
|
# Tests using runtest.vim.
|
2021-03-26 22:39:45 -07:00
|
|
|
NEW_TESTS_ALOT := test_alot_utf8 test_alot test_alot_latin
|
2019-12-02 09:18:37 -07:00
|
|
|
NEW_TESTS_IN_ALOT := $(shell sed -n '/^source/ s/^source //; s/\.vim$$//p' $(addsuffix .vim,$(NEW_TESTS_ALOT)))
|
2018-08-26 05:45:25 -07:00
|
|
|
# Ignored tests.
|
|
|
|
# test_largefile: uses too much resources to run on CI.
|
2019-12-02 09:18:37 -07:00
|
|
|
NEW_TESTS_IGNORE := \
|
2018-08-26 05:45:25 -07:00
|
|
|
test_largefile \
|
|
|
|
|
2019-12-02 09:18:37 -07:00
|
|
|
NEW_TESTS := $(sort $(basename $(notdir $(wildcard test_*.vim))))
|
|
|
|
NEW_TESTS_RES := $(addsuffix .res,$(filter-out $(NEW_TESTS_ALOT) $(NEW_TESTS_IN_ALOT) $(NEW_TESTS_IGNORE),$(NEW_TESTS)) $(NEW_TESTS_ALOT))
|
2015-12-12 20:19:54 -07:00
|
|
|
|
2014-04-05 05:26:17 -07:00
|
|
|
|
|
|
|
ifdef VALGRIND_GDB
|
2014-04-25 01:11:26 -07:00
|
|
|
VGDB := --vgdb=yes \
|
|
|
|
--vgdb-error=0
|
2014-04-05 05:26:17 -07:00
|
|
|
endif
|
|
|
|
|
|
|
|
ifdef USE_VALGRIND
|
2014-04-25 01:11:26 -07:00
|
|
|
VALGRIND_TOOL := --tool=memcheck \
|
|
|
|
--leak-check=yes \
|
|
|
|
--track-origins=yes
|
|
|
|
# VALGRIND_TOOL := exp-sgcheck
|
2024-02-02 07:24:37 -07:00
|
|
|
TOOL := valgrind -q \
|
|
|
|
-q \
|
|
|
|
$(VALGRIND_TOOL) \
|
|
|
|
--suppressions=../../../src/.valgrind.supp \
|
|
|
|
--error-exitcode=123 \
|
|
|
|
--log-file=valgrind-\%p.$* \
|
|
|
|
$(VGDB) \
|
2014-04-30 19:01:27 -07:00
|
|
|
--trace-children=yes
|
2014-04-05 05:26:17 -07:00
|
|
|
else
|
2014-04-25 01:11:26 -07:00
|
|
|
ifdef USE_GDB
|
|
|
|
TOOL = gdb --args
|
|
|
|
endif
|
2014-02-26 11:48:26 -07:00
|
|
|
endif
|
|
|
|
|
2024-10-18 02:38:29 -07:00
|
|
|
default: nongui
|
|
|
|
|
2022-12-02 22:48:51 -07:00
|
|
|
nongui: nolog $(FIXFF) newtests report
|
2014-01-31 06:39:15 -07:00
|
|
|
|
2014-03-27 09:35:36 -07:00
|
|
|
.gdbinit:
|
2018-03-18 14:53:40 -07:00
|
|
|
@echo "[OLDTEST-PREP] Setting up .gdbinit"
|
|
|
|
@echo 'set $$_exitcode = -1\nrun\nif $$_exitcode != -1\n quit\nend' > .gdbinit
|
2014-03-27 09:35:36 -07:00
|
|
|
|
2014-01-31 06:39:15 -07:00
|
|
|
report:
|
2020-02-09 17:20:45 -07:00
|
|
|
$(NVIM_PRG) -u NONE $(NO_INITS) -S summarize.vim messages
|
2014-01-31 06:39:15 -07:00
|
|
|
@echo
|
|
|
|
@echo 'Test results:'
|
2019-08-19 20:04:15 -07:00
|
|
|
@cat test_result.log
|
|
|
|
@/bin/sh -c "if test -f test.log; \
|
|
|
|
then echo TEST FAILURE; exit 1; \
|
|
|
|
else echo ALL DONE; \
|
|
|
|
fi"
|
2023-04-18 19:34:23 -07:00
|
|
|
@rm -f starttime
|
2014-01-31 06:39:15 -07:00
|
|
|
|
2017-02-13 07:07:49 -07:00
|
|
|
test1.out: $(NVIM_PRG)
|
2014-06-14 08:41:29 -07:00
|
|
|
|
2019-08-04 21:27:13 -07:00
|
|
|
NO_PLUGINS = --noplugin --headless
|
2019-08-21 20:06:14 -07:00
|
|
|
# In vim, if the -u command line option is specified, compatible is turned on
|
|
|
|
# and viminfo is not read. Unlike vim, neovim reads viminfo and requires the
|
|
|
|
# -i command line option.
|
|
|
|
NO_INITS = -U NONE -i NONE $(NO_PLUGINS)
|
2019-08-04 21:27:13 -07:00
|
|
|
|
|
|
|
# TODO: find a way to avoid changing the distributed files.
|
|
|
|
fixff:
|
2019-08-21 20:06:14 -07:00
|
|
|
-$(NVIM_PRG) $(NO_INITS) -u unix.vim "+argdo set ff=dos|upd" +q \
|
2019-08-04 21:27:13 -07:00
|
|
|
*.in *.ok
|
2019-08-21 20:06:14 -07:00
|
|
|
-$(NVIM_PRG) $(NO_INITS) -u unix.vim "+argdo set ff=dos|upd" +q \
|
2019-08-04 21:27:13 -07:00
|
|
|
dotest.in
|
|
|
|
|
2023-04-18 19:34:23 -07:00
|
|
|
# File to delete when testing starts
|
|
|
|
CLEANUP_FILES = test.log messages starttime
|
|
|
|
|
2019-11-20 20:46:19 -07:00
|
|
|
# Execute an individual new style test, e.g.:
|
2019-12-02 09:18:37 -07:00
|
|
|
# make test_largefile
|
2019-11-20 20:46:19 -07:00
|
|
|
$(NEW_TESTS):
|
2023-04-18 19:34:23 -07:00
|
|
|
rm -f $@.res $(CLEANUP_FILES)
|
2019-11-20 21:21:48 -07:00
|
|
|
@MAKEFLAGS=--no-print-directory $(MAKE) -f Makefile $@.res
|
|
|
|
@cat messages
|
2019-11-20 20:46:19 -07:00
|
|
|
@if test -f test.log; then \
|
2019-11-20 21:19:57 -07:00
|
|
|
exit 1; \
|
2019-11-20 20:46:19 -07:00
|
|
|
fi
|
|
|
|
|
2014-04-25 01:11:26 -07:00
|
|
|
RM_ON_RUN := test.out X* viminfo
|
2016-04-19 16:24:03 -07:00
|
|
|
RM_ON_START := test.ok
|
2018-03-17 16:38:27 -07:00
|
|
|
RUN_VIM := $(TOOL) $(NVIM_PRG) -u unix.vim -U NONE -i viminfo --headless --noplugin -s dotest.in
|
2014-01-31 06:39:15 -07:00
|
|
|
|
2019-09-14 10:05:18 -07:00
|
|
|
# Delete files that may interfere with running tests. This includes some files
|
|
|
|
# that may result from working on the tests, not only from running them.
|
2019-07-12 06:15:15 -07:00
|
|
|
CLEAN_FILES := *.out \
|
|
|
|
*.failed \
|
|
|
|
*.res \
|
|
|
|
*.rej \
|
|
|
|
*.orig \
|
|
|
|
*.tlog \
|
2024-10-18 02:38:29 -07:00
|
|
|
opt_test.vim \
|
2019-08-19 20:04:15 -07:00
|
|
|
test_result.log \
|
2023-04-18 19:34:23 -07:00
|
|
|
$(CLEANUP_FILES) \
|
2019-07-12 06:15:15 -07:00
|
|
|
$(RM_ON_RUN) \
|
|
|
|
$(RM_ON_START) \
|
|
|
|
valgrind.* \
|
|
|
|
.*.swp \
|
|
|
|
.*.swo \
|
|
|
|
.gdbinit \
|
|
|
|
$(TMPDIR) \
|
2024-01-27 11:10:41 -07:00
|
|
|
del \
|
|
|
|
$(ROOT)/runtime/doc/.*.swp
|
2014-01-31 06:39:15 -07:00
|
|
|
clean:
|
2019-07-12 06:15:15 -07:00
|
|
|
$(RM) -rf $(CLEAN_FILES)
|
2014-01-31 06:39:15 -07:00
|
|
|
|
2014-03-27 09:35:36 -07:00
|
|
|
test1.out: .gdbinit test1.in
|
2018-03-18 14:53:40 -07:00
|
|
|
@echo "[OLDTEST-PREP] Running test1"
|
|
|
|
@rm -rf $*.failed $(RM_ON_RUN) $(RM_ON_START) wrongtermsize
|
|
|
|
@mkdir -p $(TMPDIR)
|
|
|
|
@/bin/sh runnvim.sh $(ROOT) $(NVIM_PRG) $* $(RUN_VIM) $*.in
|
|
|
|
@rm -f wrongtermsize
|
|
|
|
@rm -rf X* viminfo
|
2014-01-31 06:39:15 -07:00
|
|
|
|
|
|
|
nolog:
|
2018-03-18 14:53:40 -07:00
|
|
|
@echo "[OLDTEST-PREP] Removing test.log and messages"
|
2023-04-18 19:34:23 -07:00
|
|
|
@rm -f test_result.log $(CLEANUP_FILES)
|
2015-12-12 20:19:54 -07:00
|
|
|
|
|
|
|
|
|
|
|
# New style of tests uses Vim script with assert calls. These are easier
|
|
|
|
# to write and a lot easier to read and debug.
|
|
|
|
# Limitation: Only works with the +eval feature.
|
2019-08-19 20:04:15 -07:00
|
|
|
RUN_VIMTEST = $(TOOL) $(NVIM_PRG) -u unix.vim
|
2015-12-12 20:19:54 -07:00
|
|
|
|
2016-01-09 17:10:17 -07:00
|
|
|
newtests: newtestssilent
|
|
|
|
@/bin/sh -c "if test -f messages && grep -q 'FAILED' messages; then \
|
|
|
|
cat messages && cat test.log; \
|
2016-01-10 13:05:11 -07:00
|
|
|
fi"
|
2016-01-09 17:10:17 -07:00
|
|
|
|
2019-11-20 20:46:19 -07:00
|
|
|
newtestssilent: $(NEW_TESTS_RES)
|
2015-12-12 20:19:54 -07:00
|
|
|
|
2024-10-21 18:05:14 -07:00
|
|
|
GEN_OPT_DEPS = gen_opt_test.vim ../../../src/nvim/options.lua ../../../runtime/doc/options.txt
|
2024-10-18 02:38:29 -07:00
|
|
|
|
|
|
|
opt_test.vim: $(GEN_OPT_DEPS)
|
|
|
|
$(NVIM_PRG) -e -s -u NONE $(NO_INITS) -S $(GEN_OPT_DEPS)
|
|
|
|
@if test -f test.log; then \
|
|
|
|
cat test.log; \
|
|
|
|
exit 1; \
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Explicit dependencies.
|
2024-10-21 18:05:14 -07:00
|
|
|
test_options_all.res: opt_test.vim
|
2024-10-18 02:38:29 -07:00
|
|
|
|
2015-12-12 20:19:54 -07:00
|
|
|
%.res: %.vim .gdbinit
|
2018-03-20 16:26:39 -07:00
|
|
|
@echo "[OLDTEST] Running" $*
|
2019-04-27 02:06:41 -07:00
|
|
|
@rm -rf $*.failed test.ok $(RM_ON_RUN)
|
2018-03-18 14:53:40 -07:00
|
|
|
@mkdir -p $(TMPDIR)
|
2022-10-26 07:38:47 -07:00
|
|
|
@/bin/sh runnvim.sh $(ROOT) $(NVIM_PRG) $* $(RUN_VIMTEST) $(NO_INITS) -u NONE --cmd "set shortmess-=F" -S runtest.vim $*.vim
|