blob: e981ed01a831019a3fdb9d0a291028a938679fdb [file] [log] [blame]
Bram Moolenaar46acad72023-06-11 19:04:18 +01001# Portable Makefile for running syntax tests.
2
Christian Brabandt56824432024-02-28 21:24:25 +01003# To run the test manually:
4# ../../src/vim -u 'testdir/runtest.vim' --cmd 'breakadd func RunTest'
5
Aliaksei Budavei7003a5d2025-03-01 16:28:20 +01006# Override this if needed, the default assumes Vim was built in the src dir.
Bram Moolenaar1aa5f1c2023-06-22 21:57:51 +01007#VIMPROG = vim
8VIMPROG = ../../src/vim
Bram Moolenaar46acad72023-06-11 19:04:18 +01009
10# "runtime" relative to "runtime/syntax/testdir"
11VIMRUNTIME = ../..
12
13# Uncomment this line to use valgrind for memory leaks and extra warnings.
14# VALGRIND = valgrind --tool=memcheck --leak-check=yes --num-callers=45 --log-file=valgrind.$*
15
Aliaksei Budavei7003a5d2025-03-01 16:28:20 +010016# Trace ruler liveness on demand.
17# VIM_SYNTAX_TEST_LOG = `pwd`/testdir/failed/00-TRACE_LOG
18
19# ENVVARS = LC_ALL=C VIM_SYNTAX_TEST_LOG="$(VIM_SYNTAX_TEST_LOG)"
Bram Moolenaar46acad72023-06-11 19:04:18 +010020# ENVVARS = LC_ALL=C LANG=C LANGUAGE=C
Christian Brabandt627c9502024-02-10 13:02:17 +010021# Run the syntax tests with a C locale
22ENVVARS = LC_ALL=C
Bram Moolenaar46acad72023-06-11 19:04:18 +010023
K.Takatad5b952a2023-06-13 22:44:57 +010024RUN_VIMTEST = VIMRUNTIME=$(VIMRUNTIME) $(VALGRIND) $(ENVVARS) ../$(VIMPROG) -f $(GUI_FLAG)
Bram Moolenaar46acad72023-06-11 19:04:18 +010025
Bram Moolenaar1aa5f1c2023-06-22 21:57:51 +010026# Uncomment this line for debugging
27# DEBUGLOG = --log testlog
28
Bram Moolenaar46acad72023-06-11 19:04:18 +010029# Run the tests that didn't run yet or failed previously.
30# If a test succeeds a testdir/done/{name} file will be written.
31# If a test fails a testdir/failed/{name}.dump file will be written.
Bram Moolenaar1aa5f1c2023-06-22 21:57:51 +010032# Progress and error messages can be found in "testdir/messages".
Yee Cheng Chin58818282025-02-11 20:16:11 +010033# Comment out the "> /dev/null" part to see the in-progress Vim behaviors.
Bram Moolenaar46acad72023-06-11 19:04:18 +010034test:
35 @# the "vimcmd" file is used by the screendump utils
K.Takatad5b952a2023-06-13 22:44:57 +010036 @echo "../$(VIMPROG)" > testdir/vimcmd
Bram Moolenaar46acad72023-06-11 19:04:18 +010037 @echo "$(RUN_VIMTEST)" >> testdir/vimcmd
Aliaksei Budavei7003a5d2025-03-01 16:28:20 +010038 @# Trace ruler liveness on demand.
39 @#mkdir -p testdir/failed
40 @#touch "$(VIM_SYNTAX_TEST_LOG)"
Yee Cheng Chin58818282025-02-11 20:16:11 +010041 VIMRUNTIME=$(VIMRUNTIME) $(ENVVARS) $(VIMPROG) --clean --not-a-term $(DEBUGLOG) -u testdir/runtest.vim > /dev/null
Aliaksei Budaveiec022942024-10-06 16:57:33 +020042 @rm -f testdir/Xfilter
Bram Moolenaar10c1dbc2023-06-23 19:37:19 +010043 @# FIXME: Temporarily show the whole file to find out what goes wrong
Dominique Pellé99c38492023-09-24 16:09:31 +020044 @#if [ -f testdir/messages ]; then tail -n 6 testdir/messages; fi
45 @if [ -f testdir/messages ]; then cat testdir/messages; fi
Bram Moolenaar46acad72023-06-11 19:04:18 +010046
47
48clean testclean:
Aliaksei Budaveiec022942024-10-06 16:57:33 +020049 rm -f testdir/failed/* testdir/done/* testdir/vimcmd testdir/messages testdir/Xtestscript testdir/Xfilter
50
51# All initial phony targets; these names may clash with file extensions.
52phonies = clean test testclean
53
54# Collect all input filenames and their file extensions.
55testnames != set +f; \
56awk 'BEGIN { \
57 for (i = 1; i < ARGC; i++) { \
58 split(ARGV[i], names, /\//); \
59 split(names[3], parts, /\./); \
60 exts[parts[2]]; \
61 print names[3]; \
62 } \
63 split("$(phonies)", scratch); \
64 for (phony in scratch) \
65 phonies[scratch[phony]]; \
66 for (ext in exts) \
67 print ext ((ext in phonies) ? "_" : ""); \
68}' testdir/input/*.*
69
70.PHONY: self-testing $(testnames)
71
72$(testnames)::
73 @echo $@ >> testdir/Xfilter
74
75self-testing:: $(testnames)
76 @echo self-testing > testdir/Xfilter