mirror of
https://github.com/vim/vim
synced 2025-04-30 05:17:45 +02:00
The process of preparing and submitting syntax tests is fraught with challenges that can turn away many aspiring contributors from ever attempting it. (Out of 69 languages introduced since v9.0.1627, there are only syntax tests for Tera.) After v9.1.1176~1, one visual clue for admitting syntax test failures previously available with e.g. "git status" is gone after all files under "failed/" have been made ignored for Git and Mercurial. There isn't a single way to go about it: some people may move files from "failed/" to "dumps/" after each iteration; some people may only move "good" iteration files; when a test file is refactored to a great extent, some people may prefer deleting all test-related files under "dumps/" before moving files from "failed/". The usability of reporting, at any time, that there are some _untracked_ files under "failed/" cannot be overstated. Without it, the chances are greater for pushing mismatched changesets. And when tests fail then everyone but the author will be kept in the dark about the cause: were some updated screendumps not committed _or_ was a wrong version of the syntax plugin committed? Another file, "testdir/Xfilter" (v9.1.0763), that will be created to establish communication from Make to Vim about what subset of syntax tests is requested for running, should also be not ignored but rather deleted once its contents are read. Unless it is explicitly deleted _after test failure_, the file may contain new *and* old test names when another testing attempt is under way. And by virtue of it being ignored, the reason for also running not requested tests will be as ever puzzling. Both Git and Mercurial support per-user configuration; such wide-reaching settings hardly belong to clonable defaults. Also, match literal dots in testname filters. Also, discover and report _some_ disused screendump files tracked under "dumps/". References: - https://git-scm.com/docs/gitignore - https://www.mercurial-scm.org/help/topics/config#ui closes: #16917 Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
82 lines
2.8 KiB
Makefile
82 lines
2.8 KiB
Makefile
# Portable Makefile for running syntax tests.
|
|
|
|
# To run the test manually:
|
|
# ../../src/vim -u 'testdir/runtest.vim' --cmd 'breakadd func RunTest'
|
|
|
|
# Override this if needed, the default assumes Vim was built in the src dir.
|
|
#VIMPROG = vim
|
|
VIMPROG = ../../src/vim
|
|
|
|
# "runtime" relative to "runtime/syntax/testdir"
|
|
VIMRUNTIME = ../..
|
|
|
|
# Uncomment this line to use valgrind for memory leaks and extra warnings.
|
|
# VALGRIND = valgrind --tool=memcheck --leak-check=yes --num-callers=45 --log-file=valgrind.$*
|
|
|
|
# Trace ruler liveness on demand.
|
|
# VIM_SYNTAX_TEST_LOG = `pwd`/testdir/failed/00-TRACE_LOG
|
|
|
|
# ENVVARS = LC_ALL=C VIM_SYNTAX_TEST_LOG="$(VIM_SYNTAX_TEST_LOG)"
|
|
# ENVVARS = LC_ALL=C LANG=C LANGUAGE=C
|
|
# Run the syntax tests with a C locale
|
|
ENVVARS = LC_ALL=C
|
|
|
|
RUN_VIMTEST = VIMRUNTIME=$(VIMRUNTIME) $(VALGRIND) $(ENVVARS) ../$(VIMPROG) -f $(GUI_FLAG)
|
|
|
|
# Uncomment this line for debugging
|
|
# DEBUGLOG = --log testlog
|
|
|
|
# All initial phony targets; these names may clash with file types.
|
|
phonies = clean test testclean
|
|
.PHONY: $(phonies)
|
|
|
|
# Run the tests that didn't run yet or failed previously.
|
|
# If a test succeeds a testdir/done/{name} file will be written.
|
|
# If a test fails a testdir/failed/{name}.dump file will be written.
|
|
# Progress and error messages can be found in "testdir/messages".
|
|
# Comment out the "> /dev/null" part to see the in-progress Vim behaviors.
|
|
test:
|
|
@# the "vimcmd" file is used by the screendump utils
|
|
@echo "../$(VIMPROG)" > testdir/vimcmd
|
|
@echo "$(RUN_VIMTEST)" >> testdir/vimcmd
|
|
@# Trace ruler liveness on demand.
|
|
@#mkdir -p testdir/failed
|
|
@#touch "$(VIM_SYNTAX_TEST_LOG)"
|
|
VIMRUNTIME=$(VIMRUNTIME) $(ENVVARS) $(VIMPROG) --clean --not-a-term $(DEBUGLOG) -u testdir/runtest.vim > /dev/null
|
|
@# FIXME: Temporarily show the whole file to find out what goes wrong
|
|
@#if [ -f testdir/messages ]; then tail -n 6 testdir/messages; fi
|
|
@if [ -f testdir/messages ]; then cat testdir/messages; fi
|
|
|
|
# add dependence on syntax files
|
|
testdir/testdeps.mk:
|
|
./testdir/tools/maketestdeps $(phonies) > $@
|
|
|
|
-include testdir/testdeps.mk
|
|
|
|
clean testclean:
|
|
rm -f testdir/failed/* testdir/done/* testdir/vimcmd testdir/messages testdir/Xtestscript testdir/Xfilter testdir/testdeps.mk
|
|
|
|
# Collect all input filenames and their file types.
|
|
testnames != set +f; \
|
|
awk 'BEGIN { \
|
|
for (i = 1; i < ARGC; i++) { \
|
|
split(ARGV[i], names, /\//); \
|
|
split(names[3], parts, /[._]/); \
|
|
types[parts[1]]; \
|
|
print names[3]; \
|
|
} \
|
|
delete types["vim9"]; \
|
|
split("$(phonies)", scratch); \
|
|
for (phony in scratch) \
|
|
phonies[scratch[phony]]; \
|
|
for (type in types) \
|
|
print type ((type in phonies) ? "_" : ""); \
|
|
}' testdir/input/*.*
|
|
|
|
.PHONY: self-testing $(testnames)
|
|
|
|
$(testnames)::
|
|
@echo $@ >> testdir/Xfilter
|
|
|
|
self-testing:: $(testnames)
|
|
@echo self-testing > testdir/Xfilter
|