summaryrefslogtreecommitdiff
path: root/mnv/runtime/syntax/Makefile
diff options
context:
space:
mode:
authorMehmet Samet Duman <yongdohyun@projecttick.org>2026-04-04 12:41:27 +0300
committerMehmet Samet Duman <yongdohyun@projecttick.org>2026-04-04 12:41:27 +0300
commit4f2d36194b4f299aa7509d815c07121039ea833b (patch)
treef3ded014bad3a4c76ff6a22b8726ebaab68c3d13 /mnv/runtime/syntax/Makefile
parent5b578e70c314723a3cde5c9bfc2be0bf1dadc93b (diff)
downloadProject-Tick-4f2d36194b4f299aa7509d815c07121039ea833b.tar.gz
Project-Tick-4f2d36194b4f299aa7509d815c07121039ea833b.zip
NOISSUE change uvim folder name to mnv
Signed-off-by: Mehmet Samet Duman <yongdohyun@projecttick.org>
Diffstat (limited to 'mnv/runtime/syntax/Makefile')
-rw-r--r--mnv/runtime/syntax/Makefile85
1 files changed, 85 insertions, 0 deletions
diff --git a/mnv/runtime/syntax/Makefile b/mnv/runtime/syntax/Makefile
new file mode 100644
index 0000000000..c2239bf943
--- /dev/null
+++ b/mnv/runtime/syntax/Makefile
@@ -0,0 +1,85 @@
+# Portable Makefile for running syntax tests.
+
+# To run the test manually:
+# ../../src/mnv -u 'testdir/runtest.mnv' --cmd 'breakadd func RunTest'
+
+# Override this if needed, the default assumes MNV was built in the src dir.
+#MNVPROG = mnv
+MNVPROG = ../../src/mnv
+
+# "runtime" relative to "runtime/syntax/testdir"
+MNVRUNTIME = ../..
+
+# 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.
+# MNV_SYNTAX_TEST_LOG = `pwd`/testdir/failed/00-TRACE_LOG
+
+# ENVVARS = LC_ALL=C MNV_SYNTAX_TEST_LOG="$(MNV_SYNTAX_TEST_LOG)"
+# ENVVARS = LC_ALL=C LANG=C LANGUAGE=C
+# Run the syntax tests with a C locale
+ENVVARS = LC_ALL=C
+
+RUN_MNVTEST = MNVRUNTIME=$(MNVRUNTIME) $(VALGRIND) $(ENVVARS) ../$(MNVPROG) -f $(GUI_FLAG)
+
+# Uncomment this line for debugging
+# DEBUGLOG = --log testlog
+
+# All initial phony targets; these names may clash with file types.
+phonies = clean executables 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 MNV behaviors.
+test:
+ @# the "mnvcmd" file is used by the screendump utils
+ @echo "../$(MNVPROG)" > testdir/mnvcmd
+ @echo "$(RUN_MNVTEST)" >> testdir/mnvcmd
+ @# Trace ruler liveness on demand.
+ @#mkdir -p testdir/failed
+ @#touch "$(MNV_SYNTAX_TEST_LOG)"
+ MNVRUNTIME=$(MNVRUNTIME) $(ENVVARS) $(MNVPROG) --clean --not-a-term $(DEBUGLOG) -u testdir/runtest.mnv > /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
+
+executables:
+ @! find testdir/input -type f -perm /a+x -exec echo Executable syntax test found: \{\} \; | grep :
+
+clean testclean:
+ rm -f testdir/failed/* testdir/done/* testdir/mnvcmd 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["mnv9"]; \
+ 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