| 
									
										
										
										
											2023-06-11 19:04:18 +01:00
										 |  |  | # Portable Makefile for running syntax tests.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-28 21:24:25 +01:00
										 |  |  | # To run the test manually:
 | 
					
						
							|  |  |  | # ../../src/vim -u 'testdir/runtest.vim' --cmd 'breakadd func RunTest'
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-22 21:57:51 +01:00
										 |  |  | # Override this if needed, the default assumes Vim was build in the src dir.
 | 
					
						
							|  |  |  | #VIMPROG = vim
 | 
					
						
							|  |  |  | VIMPROG = ../../src/vim | 
					
						
							| 
									
										
										
										
											2023-06-11 19:04:18 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | # "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.$*
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # ENVVARS = LC_ALL=C LANG=C LANGUAGE=C
 | 
					
						
							| 
									
										
										
										
											2024-02-10 13:02:17 +01:00
										 |  |  | # Run the syntax tests with a C locale
 | 
					
						
							|  |  |  | ENVVARS = LC_ALL=C | 
					
						
							| 
									
										
										
										
											2023-06-11 19:04:18 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-13 22:44:57 +01:00
										 |  |  | RUN_VIMTEST = VIMRUNTIME=$(VIMRUNTIME) $(VALGRIND) $(ENVVARS) ../$(VIMPROG) -f $(GUI_FLAG) | 
					
						
							| 
									
										
										
										
											2023-06-11 19:04:18 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-22 21:57:51 +01:00
										 |  |  | # Uncomment this line for debugging
 | 
					
						
							|  |  |  | # DEBUGLOG = --log testlog
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-11 19:04:18 +01:00
										 |  |  | # 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.
 | 
					
						
							| 
									
										
										
										
											2023-06-22 21:57:51 +01:00
										 |  |  | # Progress and error messages can be found in "testdir/messages".
 | 
					
						
							| 
									
										
										
										
											2023-06-11 19:04:18 +01:00
										 |  |  | test: | 
					
						
							|  |  |  | 	@# the "vimcmd" file is used by the screendump utils | 
					
						
							| 
									
										
										
										
											2023-06-13 22:44:57 +01:00
										 |  |  | 	@echo "../$(VIMPROG)" > testdir/vimcmd | 
					
						
							| 
									
										
										
										
											2023-06-11 19:04:18 +01:00
										 |  |  | 	@echo "$(RUN_VIMTEST)" >> testdir/vimcmd | 
					
						
							| 
									
										
										
										
											2024-02-10 13:02:17 +01:00
										 |  |  | 	VIMRUNTIME=$(VIMRUNTIME) $(ENVVARS) $(VIMPROG) --clean --not-a-term $(DEBUGLOG) -u testdir/runtest.vim | 
					
						
							| 
									
										
										
										
											2024-10-06 16:57:33 +02:00
										 |  |  | 	@rm -f testdir/Xfilter | 
					
						
							| 
									
										
										
										
											2023-06-23 19:37:19 +01:00
										 |  |  | 	@# FIXME: Temporarily show the whole file to find out what goes wrong | 
					
						
							| 
									
										
										
										
											2023-09-24 16:09:31 +02:00
										 |  |  | 	@#if [ -f testdir/messages ]; then tail -n 6 testdir/messages; fi | 
					
						
							|  |  |  | 	@if [ -f testdir/messages ]; then cat testdir/messages; fi | 
					
						
							| 
									
										
										
										
											2023-06-11 19:04:18 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | clean testclean: | 
					
						
							| 
									
										
										
										
											2024-10-06 16:57:33 +02:00
										 |  |  | 	rm -f testdir/failed/* testdir/done/* testdir/vimcmd testdir/messages testdir/Xtestscript testdir/Xfilter | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # All initial phony targets; these names may clash with file extensions.
 | 
					
						
							|  |  |  | phonies = clean test testclean | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Collect all input filenames and their file extensions.
 | 
					
						
							|  |  |  | testnames != set +f; \
 | 
					
						
							|  |  |  | awk 'BEGIN { \ | 
					
						
							|  |  |  |     for (i = 1; i < ARGC; i++) { \
 | 
					
						
							|  |  |  |         split(ARGV[i], names, /\//); \
 | 
					
						
							|  |  |  |         split(names[3], parts, /\./); \
 | 
					
						
							|  |  |  |         exts[parts[2]]; \
 | 
					
						
							|  |  |  |         print names[3]; \
 | 
					
						
							|  |  |  |     } \
 | 
					
						
							|  |  |  |     split("$(phonies)", scratch); \
 | 
					
						
							|  |  |  |     for (phony in scratch) \
 | 
					
						
							|  |  |  |         phonies[scratch[phony]]; \
 | 
					
						
							|  |  |  |     for (ext in exts) \
 | 
					
						
							|  |  |  |         print ext ((ext in phonies) ? "_" : ""); \
 | 
					
						
							|  |  |  | }' testdir/input/*.* | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .PHONY: self-testing $(testnames) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | $(testnames):: | 
					
						
							|  |  |  | 	@echo $@ >> testdir/Xfilter | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | self-testing:: $(testnames) | 
					
						
							|  |  |  | 	@echo self-testing > testdir/Xfilter |