mirror of
https://github.com/vim/vim.git
synced 2025-07-25 10:54:51 -04:00
test(runtime/syntax): improve syntax tests
When a syntax file is changed, timestamps of the corresponding files are updated. NOTE: At the moment this script does not strictly track dependency, like cpp on c. Also update ignore files closes #16548 Co-authored-by: Aliaksei Budavei <0x000c70@gmail.com> Signed-off-by: Eisuke Kawashima <e-kwsm@users.noreply.github.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
parent
273926e5c0
commit
2e18facede
7
.gitignore
vendored
7
.gitignore
vendored
@ -96,6 +96,13 @@ src/json_test
|
|||||||
src/message_test
|
src/message_test
|
||||||
src/kword_test
|
src/kword_test
|
||||||
|
|
||||||
|
runtime/syntax/testdir/Xfilter
|
||||||
|
runtime/syntax/testdir/done/
|
||||||
|
runtime/syntax/testdir/failed/
|
||||||
|
runtime/syntax/testdir/messages
|
||||||
|
runtime/syntax/testdir/testdeps.mk
|
||||||
|
runtime/syntax/testdir/vimcmd
|
||||||
|
|
||||||
# Generated by "make install"
|
# Generated by "make install"
|
||||||
runtime/doc/doctags
|
runtime/doc/doctags
|
||||||
runtime/doc/tags-*
|
runtime/doc/tags-*
|
||||||
|
20
.hgignore
20
.hgignore
@ -98,21 +98,35 @@ src/json_test
|
|||||||
src/message_test
|
src/message_test
|
||||||
src/kword_test
|
src/kword_test
|
||||||
|
|
||||||
|
runtime/syntax/testdir/Xfilter
|
||||||
|
runtime/syntax/testdir/done/
|
||||||
|
runtime/syntax/testdir/failed/
|
||||||
|
runtime/syntax/testdir/messages
|
||||||
|
runtime/syntax/testdir/testdeps.mk
|
||||||
|
runtime/syntax/testdir/vimcmd
|
||||||
|
|
||||||
# Generated by "make install"
|
# Generated by "make install"
|
||||||
runtime/doc/doctags
|
runtime/doc/doctags
|
||||||
runtime/doc/tags-*
|
runtime/doc/tags-*
|
||||||
|
|
||||||
|
# Temporarily generated by "runtime/syntax/generator/make"
|
||||||
|
runtime/syntax/generator/generator.err
|
||||||
|
runtime/syntax/generator/sanity_check.err
|
||||||
|
runtime/syntax/generator/vim.vim.rc
|
||||||
|
|
||||||
# Generated by "make shadow". The directory names could be anything but we
|
# Generated by "make shadow". The directory names could be anything but we
|
||||||
# restrict them to shadow (the default) or shadow-*
|
# restrict them to shadow (the default) or shadow-*
|
||||||
src/shadow
|
src/shadow
|
||||||
src/shadow-*
|
src/shadow-*
|
||||||
src/runtime
|
src/runtime
|
||||||
src/pixmaps
|
src/pixmaps
|
||||||
|
src/LICENSE
|
||||||
|
src/README.txt
|
||||||
|
|
||||||
# other files possibly created by tools
|
# other files possibly created by tools
|
||||||
src/cscope.out
|
src/cscope.out
|
||||||
|
|
||||||
# Linter/language server files
|
# Linter/language server files
|
||||||
/.cache/clangd/
|
.cache/clangd/
|
||||||
/.ccls-cache/
|
.ccls-cache/
|
||||||
/compile_commands.json
|
compile_commands.json
|
||||||
|
@ -38,33 +38,42 @@ test:
|
|||||||
@# Trace ruler liveness on demand.
|
@# Trace ruler liveness on demand.
|
||||||
@#mkdir -p testdir/failed
|
@#mkdir -p testdir/failed
|
||||||
@#touch "$(VIM_SYNTAX_TEST_LOG)"
|
@#touch "$(VIM_SYNTAX_TEST_LOG)"
|
||||||
VIMRUNTIME=$(VIMRUNTIME) $(ENVVARS) $(VIMPROG) --clean --not-a-term $(DEBUGLOG) -u testdir/runtest.vim > /dev/null
|
VIMRUNTIME=$(VIMRUNTIME) $(ENVVARS) $(VIMPROG) --clean --not-a-term $(DEBUGLOG) -u testdir/runtest.vim > /dev/null
|
||||||
@rm -f testdir/Xfilter
|
@rm -f testdir/Xfilter
|
||||||
@# FIXME: Temporarily show the whole file to find out what goes wrong
|
@# 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 tail -n 6 testdir/messages; fi
|
||||||
@if [ -f testdir/messages ]; then cat testdir/messages; fi
|
@if [ -f testdir/messages ]; then cat testdir/messages; fi
|
||||||
|
|
||||||
|
# add dependence on syntax files
|
||||||
|
testdir/testdeps.mk:
|
||||||
|
./testdir/tools/maketestdeps > $@
|
||||||
|
|
||||||
|
-include testdir/testdeps.mk
|
||||||
|
|
||||||
clean testclean:
|
clean testclean:
|
||||||
rm -f testdir/failed/* testdir/done/* testdir/vimcmd testdir/messages testdir/Xtestscript testdir/Xfilter
|
rm -f testdir/failed/* testdir/done/* testdir/vimcmd testdir/messages testdir/Xtestscript testdir/Xfilter testdir/testdeps.mk
|
||||||
|
|
||||||
# All initial phony targets; these names may clash with file extensions.
|
# All initial phony targets; these names may clash with file extensions.
|
||||||
phonies = clean test testclean
|
phonies = clean test testclean
|
||||||
|
.PHONY: $(phonies)
|
||||||
|
|
||||||
# Collect all input filenames and their file extensions.
|
# Collect all input filenames and their file types.
|
||||||
testnames != set +f; \
|
testnames != set +f; \
|
||||||
awk 'BEGIN { \
|
awk 'BEGIN { \
|
||||||
for (i = 1; i < ARGC; i++) { \
|
for (i = 1; i < ARGC; i++) { \
|
||||||
split(ARGV[i], names, /\//); \
|
name = ARGV[i]; \
|
||||||
split(names[3], parts, /\./); \
|
sub(/.+\//, "", name); \
|
||||||
exts[parts[2]]; \
|
print name; \
|
||||||
print names[3]; \
|
if (name ~ /.+_.+/) { \
|
||||||
} \
|
sub(/_.+/, "", name); \
|
||||||
split("$(phonies)", scratch); \
|
} else { \
|
||||||
for (phony in scratch) \
|
sub(/.+\./, "", name) \
|
||||||
phonies[scratch[phony]]; \
|
} \
|
||||||
for (ext in exts) \
|
if (name == "vim9") name = "vim"; \
|
||||||
print ext ((ext in phonies) ? "_" : ""); \
|
exts[name]; \
|
||||||
|
} \
|
||||||
|
for (ext in exts) \
|
||||||
|
print ext; \
|
||||||
}' testdir/input/*.*
|
}' testdir/input/*.*
|
||||||
|
|
||||||
.PHONY: self-testing $(testnames)
|
.PHONY: self-testing $(testnames)
|
||||||
|
@ -67,8 +67,8 @@ If there is no further setup required, you can now run all tests:
|
|||||||
|
|
||||||
make test
|
make test
|
||||||
|
|
||||||
Or you can run the tests for a filetype only by passing its file extension as
|
Or you can run the tests for a filetype only by passing its name as another
|
||||||
another target, e.g. "java", before "test":
|
target, e.g. "java", before "test":
|
||||||
|
|
||||||
make java test
|
make java test
|
||||||
|
|
||||||
|
38
runtime/syntax/testdir/tools/maketestdeps
Executable file
38
runtime/syntax/testdir/tools/maketestdeps
Executable file
@ -0,0 +1,38 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# This script generates auxiliary recipes for 'make test': e.g. in the case of JAVA,
|
||||||
|
# - a phony target 'java' depends on all of the testdir/input/java*.java
|
||||||
|
# - when the syntax file is changed, timestamps of the JAVA files are updated so that the tests will
|
||||||
|
# be rerun against updated syntax
|
||||||
|
# - when a vim setup file for test, e.g. testdir/input/setup/java_module_info.vim, is changed,
|
||||||
|
# timestamp of the corresponding input, testdir/input/java_module_info.java, is updated
|
||||||
|
#
|
||||||
|
# NOTE: At the moment this script DOES NOT strictly track dependency, like cpp on c, so run
|
||||||
|
# `make clean test` before deployment
|
||||||
|
|
||||||
|
set -eu +f -o pipefail
|
||||||
|
|
||||||
|
cd "$(dirname "$0")"/../..
|
||||||
|
for input in testdir/input/*.*; do
|
||||||
|
dirname=$(dirname "$input")
|
||||||
|
basename=$(basename "$input")
|
||||||
|
|
||||||
|
case "$basename" in
|
||||||
|
vim9_*.*) ft=vim;;
|
||||||
|
*_*.*) ft=${basename%%_*};;
|
||||||
|
*.*) ft=${basename%%.*};;
|
||||||
|
*) exit 1
|
||||||
|
esac
|
||||||
|
|
||||||
|
vimsetup=$dirname/setup/${basename%.*}.vim
|
||||||
|
if [ ! -r "$vimsetup" ]; then
|
||||||
|
vimsetup=
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat << EOF
|
||||||
|
$input: $ft.vim $vimsetup
|
||||||
|
touch -c \$@
|
||||||
|
$basename:: $input
|
||||||
|
$ft:: $basename
|
||||||
|
|
||||||
|
EOF
|
||||||
|
done
|
Loading…
x
Reference in New Issue
Block a user