From b96a32ef1a95dd4ebf9413d686bccb1b4645f74b Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Thu, 13 Aug 2020 18:59:55 +0200 Subject: patch 8.2.1439: tiny and small builds have no test coverage Problem: Tiny and small builds have no test coverage. Solution: Restore tests that do not depend on the +eval feature. (Ken Takata, closes #6696) --- .travis.yml | 6 +- Filelist | 6 +- Makefile | 2 +- runtime/doc/testing.txt | 6 ++ src/Make_mvc.mak | 18 ++++-- src/Makefile | 9 ++- src/testdir/Make_all.mak | 25 +++++++- src/testdir/Make_amiga.mak | 4 +- src/testdir/Make_dos.mak | 123 ++++++++++++++++++++---------------- src/testdir/Make_ming.mak | 147 +++++++++++++++++++++++++++---------------- src/testdir/Make_vms.mms | 6 +- src/testdir/Makefile | 65 ++++++++++--------- src/testdir/runtest.vim | 4 +- src/testdir/test1.in | 52 --------------- src/testdir/test1.ok | 1 - src/testdir/test20.in | 27 ++++++++ src/testdir/test20.ok | 10 +++ src/testdir/test21.in | 13 ++++ src/testdir/test21.ok | 4 ++ src/testdir/test22.in | 15 +++++ src/testdir/test22.ok | 2 + src/testdir/test23.in | Bin 0 -> 1301 bytes src/testdir/test23.ok | 32 ++++++++++ src/testdir/test24.in | Bin 0 -> 364 bytes src/testdir/test24.ok | 2 + src/testdir/test25.in | 108 +++++++++++++++++++++++++++++++ src/testdir/test25.ok | 99 +++++++++++++++++++++++++++++ src/testdir/test26.in | 24 +++++++ src/testdir/test26.ok | 3 + src/testdir/test27.in | Bin 0 -> 2368 bytes src/testdir/test27.ok | Bin 0 -> 409 bytes src/testdir/test_options.vim | 4 +- src/version.c | 2 + 33 files changed, 606 insertions(+), 213 deletions(-) delete mode 100644 src/testdir/test1.in delete mode 100644 src/testdir/test1.ok create mode 100644 src/testdir/test20.in create mode 100644 src/testdir/test20.ok create mode 100644 src/testdir/test21.in create mode 100644 src/testdir/test21.ok create mode 100644 src/testdir/test22.in create mode 100644 src/testdir/test22.ok create mode 100644 src/testdir/test23.in create mode 100644 src/testdir/test23.ok create mode 100644 src/testdir/test24.in create mode 100644 src/testdir/test24.ok create mode 100644 src/testdir/test25.in create mode 100644 src/testdir/test25.ok create mode 100644 src/testdir/test26.in create mode 100644 src/testdir/test26.ok create mode 100644 src/testdir/test27.in create mode 100644 src/testdir/test27.ok diff --git a/.travis.yml b/.travis.yml index a4c6287404..a8acd3ade6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,11 +7,11 @@ env: _anchors: envs: - &tiny-nogui - FEATURES=tiny CONFOPT="--disable-gui" + FEATURES=tiny TEST=testtiny CONFOPT="--disable-gui" - &tiny - FEATURES=tiny + FEATURES=tiny TEST=testtiny - &small - FEATURES=small + FEATURES=small TEST=testtiny - &normal FEATURES=normal - &linux-huge diff --git a/Filelist b/Filelist index fd8ff05e50..127e3e4932 100644 --- a/Filelist +++ b/Filelist @@ -158,9 +158,7 @@ SRC_ALL = \ src/testdir/gen_opt_test.vim \ src/testdir/README.txt \ src/testdir/Make_all.mak \ - src/testdir/dotest.in \ - src/testdir/test1.in \ - src/testdir/test77a.in \ + src/testdir/*.in \ src/testdir/*.py \ src/testdir/lsan-suppress.txt \ src/testdir/sautest/autoload/*.vim \ @@ -179,7 +177,7 @@ SRC_ALL = \ src/testdir/summarize.vim \ src/testdir/term_util.vim \ src/testdir/view_util.vim \ -- src/testdir/test1.ok \ + src/testdir/test[0-9]*.ok \ src/testdir/test77a.ok \ src/testdir/test83-tags? \ src/testdir/test77a.com \ diff --git a/Makefile b/Makefile index 7774b6ed12..35119ac1f6 100644 --- a/Makefile +++ b/Makefile @@ -32,7 +32,7 @@ first: # Some make programs use the last target for the $@ default; put the other # targets separately to always let $@ expand to "first" by default. -all install uninstall tools config configure reconfig proto depend lint tags types test scripttests test_libvterm unittests testclean clean distclean: +all install uninstall tools config configure reconfig proto depend lint tags types test scripttests testtiny test_libvterm unittests testclean clean distclean: @if test ! -f src/auto/config.mk; then \ cp src/config.mk.dist src/auto/config.mk; \ fi diff --git a/runtime/doc/testing.txt b/runtime/doc/testing.txt index 1147673d59..15c5498a51 100644 --- a/runtime/doc/testing.txt +++ b/runtime/doc/testing.txt @@ -20,11 +20,17 @@ and for testing plugins. Vim can be tested after building it, usually with "make test". The tests are located in the directory "src/testdir". +There are two types of tests added over time: + test20.in oldest, only for tiny and small builds + test_something.vim new style tests + *new-style-testing* New tests should be added as new style tests. The test scripts are named test_.vim (replace with the feature under test). These use functions such as |assert_equal()| to keep the test commands and the expected result in one place. + *old-style-testing* +These tests are used only for testing Vim without the |+eval| feature. Find more information in the file src/testdir/README.txt. diff --git a/src/Make_mvc.mak b/src/Make_mvc.mak index 8ac39e22b5..b6c2d464ac 100644 --- a/src/Make_mvc.mak +++ b/src/Make_mvc.mak @@ -1464,12 +1464,22 @@ cmdidxs: ex_cmds.h test: cd testdir - $(MAKE) /NOLOGO -f Make_dos.mak win32 + $(MAKE) /NOLOGO -f Make_dos.mak cd .. testgvim: cd testdir - $(MAKE) /NOLOGO -f Make_dos.mak VIMPROG=..\gvim win32 + $(MAKE) /NOLOGO -f Make_dos.mak VIMPROG=..\gvim + cd .. + +testtiny: + cd testdir + $(MAKE) /NOLOGO -f Make_dos.mak tiny + cd .. + +testgvimtiny: + cd testdir + $(MAKE) /NOLOGO -f Make_dos.mak tiny VIMPROG=..\gvim cd .. testclean: @@ -1477,9 +1487,9 @@ testclean: $(MAKE) /NOLOGO -f Make_dos.mak clean cd .. -# Run test1 to bootstrap tests +# Run individual OLD style test. # These do not depend on the executable, compile it when needed. -$(SCRIPTS_FIRST:.out=): +$(SCRIPTS_TINY): cd testdir - if exist $@.out del $@.out $(MAKE) /NOLOGO -f Make_dos.mak VIMPROG=..\$(VIMTESTTARGET) nolog diff --git a/src/Makefile b/src/Makefile index 35fe41e74c..b025a9486b 100644 --- a/src/Makefile +++ b/src/Makefile @@ -2258,6 +2258,9 @@ scripttests: testgui: cd testdir; $(MAKE) -f Makefile $(GUI_TESTTARGET) VIMPROG=../$(VIMTARGET) GUI_FLAG=-g $(GUI_TESTARG) SCRIPTSOURCE=../$(SCRIPTSOURCE) +testtiny: + cd testdir; $(MAKE) -f Makefile tiny VIMPROG=../$(VIMTARGET) SCRIPTSOURCE=../$(SCRIPTSOURCE) + benchmark: cd testdir; $(MAKE) -f Makefile benchmark VIMPROG=../$(VIMTARGET) SCRIPTSOURCE=../$(SCRIPTSOURCE) @@ -2291,9 +2294,9 @@ test_libvterm: CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)"; \ fi -# Run test1, used to bootstrap tests. -# This does not depend on the executable, compile first it when needed. -test1: +# Run individual OLD style test. +# These do not depend on the executable, compile it when needed. +$(SCRIPTS_TINY): cd testdir; rm -f $@.out; $(MAKE) -f Makefile $@.out VIMPROG=../$(VIMTESTTARGET) $(GUI_TESTARG) SCRIPTSOURCE=../$(SCRIPTSOURCE) # Run individual NEW style test. diff --git a/src/testdir/Make_all.mak b/src/testdir/Make_all.mak index 57ba651c65..e4ffb05e2c 100644 --- a/src/testdir/Make_all.mak +++ b/src/testdir/Make_all.mak @@ -7,8 +7,26 @@ NO_PLUGINS = --noplugin --not-a-term NO_INITS = -U NONE $(NO_PLUGINS) -# The first script creates small.vim. -SCRIPTS_FIRST = test1.out +# Tests for tiny and small builds. +SCRIPTS_TINY = \ + test20 \ + test21 \ + test22 \ + test23 \ + test24 \ + test25 \ + test26 \ + test27 + +SCRIPTS_TINY_OUT = \ + test20.out \ + test21.out \ + test22.out \ + test23.out \ + test24.out \ + test25.out \ + test26.out \ + test27.out # Tests for Vim9 script. TEST_VIM9 = \ @@ -25,6 +43,9 @@ TEST_VIM9_RES = \ test_vim9_func.res \ test_vim9_script.res +# Benchmark scripts. +SCRIPTS_BENCH = test_bench_regexp.res + # Individual tests, including the ones part of test_alot. # Please keep sorted up to test_alot. NEW_TESTS = \ diff --git a/src/testdir/Make_amiga.mak b/src/testdir/Make_amiga.mak index efd5808429..1e8df19372 100644 --- a/src/testdir/Make_amiga.mak +++ b/src/testdir/Make_amiga.mak @@ -9,9 +9,11 @@ default: nongui include Make_all.mak +SCRIPTS = $(SCRIPTS_TINY_OUT) + .SUFFIXES: .in .out .res .vim -nongui: /tmp $(SCRIPTS_FIRST) +nongui: /tmp $(SCRIPTS) csh -c echo ALL DONE clean: diff --git a/src/testdir/Make_dos.mak b/src/testdir/Make_dos.mak index 5931da25df..7ba6cf778e 100644 --- a/src/testdir/Make_dos.mak +++ b/src/testdir/Make_dos.mak @@ -9,56 +9,23 @@ default: nongui !include Make_all.mak -TEST_OUTFILES = $(SCRIPTS_FIRST) +# Explicit dependencies. +test_options.res test_alot.res: opt_test.vim + +TEST_OUTFILES = $(SCRIPTS_TINY_OUT) DOSTMP = dostmp DOSTMP_OUTFILES = $(TEST_OUTFILES:test=dostmp\test) DOSTMP_INFILES = $(DOSTMP_OUTFILES:.out=.in) .SUFFIXES: .in .out .res .vim -nongui: nolog $(SCRIPTS_FIRST) newtests report +nongui: nolog tinytests newtests report -small: nolog report +gui: nolog tinytests newtests report -gui: nolog $(SCRIPTS_FIRST) newtests report +tiny: nolog tinytests report -win32: nolog $(SCRIPTS_FIRST) newtests report - -# Copy the input files to dostmp, changing the fileformat to dos. -$(DOSTMP_INFILES): $(*B).in - if not exist $(DOSTMP)\NUL md $(DOSTMP) - if exist $@ del $@ - $(VIMPROG) -u dos.vim $(NO_INITS) "+set ff=dos|f $@|wq" $(*B).in - -# For each input file dostmp/test99.in run the tests. -# This moves test99.in to test99.in.bak temporarily. -$(TEST_OUTFILES): $(DOSTMP)\$(*B).in - -@if exist test.out DEL test.out - -@if exist $(DOSTMP)\$(*B).out DEL $(DOSTMP)\$(*B).out - move $(*B).in $(*B).in.bak > nul - copy $(DOSTMP)\$(*B).in $(*B).in > nul - copy $(*B).ok test.ok > nul - $(VIMPROG) -u dos.vim $(NO_INITS) -s dotest.in $(*B).in - -@if exist test.out MOVE /y test.out $(DOSTMP)\$(*B).out > nul - -@if exist $(*B).in.bak move /y $(*B).in.bak $(*B).in > nul - -@if exist test.ok del test.ok - -@if exist Xdir1 rd /s /q Xdir1 - -@if exist Xfind rd /s /q Xfind - -@if exist XfakeHOME rd /s /q XfakeHOME - -@del X* - -@if exist viminfo del viminfo - $(VIMPROG) -u dos.vim $(NO_INITS) "+set ff=unix|f test.out|wq" \ - $(DOSTMP)\$(*B).out - @diff test.out $*.ok & if errorlevel 1 \ - ( move /y test.out $*.failed > nul \ - & del $(DOSTMP)\$(*B).out \ - & echo $* FAILED >> test.log ) \ - else ( move /y test.out $*.out > nul ) - -# Must run test1 first to create small.vim. -# This rule must come after the one that copies the input files to dostmp to -# allow for running an individual test. -$(SCRIPTS) $(SCRIPTS_GUI) $(SCRIPTS_WIN32) $(NEW_TESTS_RES): $(SCRIPTS_FIRST) +benchmark: $(SCRIPTS_BENCH) report: @rem without the +eval feature test_result.log is a copy of test.log @@ -71,10 +38,24 @@ report: @if exist test.log ( echo TEST FAILURE & exit /b 1 ) \ else ( echo ALL DONE ) + +# Execute an individual new style test, e.g.: +# nmake -f Make_dos.mak test_largefile +$(NEW_TESTS): + -if exist $@.res del $@.res + -if exist test.log del test.log + -if exist messages del messages + @$(MAKE) -nologo -f Make_dos.mak $@.res VIMPROG=$(VIMPROG) + @type messages + @if exist test.log exit 1 + + +# Delete files that may interfere with running tests. This includes some files +# that may result from working on the tests, not only from running them. clean: - -del *.out - -del *.failed - -del *.res + -if exist *.out $(DEL) *.out + -if exist *.failed $(DEL) *.failed + -if exist *.res $(DEL) *.res -if exist $(DOSTMP) rd /s /q $(DOSTMP) -if exist test.in del test.in -if exist test.ok del test.ok @@ -85,8 +66,8 @@ clean: -if exist Xdir1 rd /s /q Xdir1 -if exist Xfind rd /s /q Xfind -if exist XfakeHOME rd /s /q XfakeHOME - -del X* - -for /d %i in (X*) do @rmdir /s/q %i + -if exist X* $(DEL) X* + -for /d %i in (X*) do @rd /s/q %i -if exist viminfo del viminfo -if exist test.log del test.log -if exist test_result.log del test_result.log @@ -99,14 +80,41 @@ nolog: -if exist test_result.log del test_result.log -if exist messages del messages -benchmark: test_bench_regexp.res -test_bench_regexp.res: test_bench_regexp.vim - -if exist benchmark.out del benchmark.out - @echo $(VIMPROG) > vimcmd - $(VIMPROG) -u NONE $(NO_INITS) -S runtest.vim $*.vim - @del vimcmd - @IF EXIST benchmark.out ( type benchmark.out ) +# Tiny tests. Works even without the +eval feature. +tinytests: $(SCRIPTS_TINY_OUT) + +# Copy the input files to dostmp, changing the fileformat to dos. +$(DOSTMP_INFILES): $(*B).in + if not exist $(DOSTMP)\NUL md $(DOSTMP) + if exist $@ del $@ + $(VIMPROG) -u dos.vim $(NO_INITS) "+set ff=dos|f $@|wq" $(*B).in + +# For each input file dostmp/test99.in run the tests. +# This moves test99.in to test99.in.bak temporarily. +$(TEST_OUTFILES): $(DOSTMP)\$(*B).in + -@if exist test.out DEL test.out + -@if exist $(DOSTMP)\$(*B).out DEL $(DOSTMP)\$(*B).out + move $(*B).in $(*B).in.bak > nul + copy $(DOSTMP)\$(*B).in $(*B).in > nul + copy $(*B).ok test.ok > nul + $(VIMPROG) -u dos.vim $(NO_INITS) -s dotest.in $(*B).in + -@if exist test.out MOVE /y test.out $(DOSTMP)\$(*B).out > nul + -@if exist $(*B).in.bak move /y $(*B).in.bak $(*B).in > nul + -@if exist test.ok del test.ok + -@if exist Xdir1 rd /s /q Xdir1 + -@if exist Xfind rd /s /q Xfind + -@if exist XfakeHOME rd /s /q XfakeHOME + -@del X* + -@if exist viminfo del viminfo + $(VIMPROG) -u dos.vim $(NO_INITS) "+set ff=unix|f test.out|wq" \ + $(DOSTMP)\$(*B).out + @diff test.out $*.ok & if errorlevel 1 \ + ( move /y test.out $*.failed > nul \ + & del $(DOSTMP)\$(*B).out \ + & echo $* FAILED >> test.log ) \ + else ( move /y test.out $*.out > nul ) + # New style of tests uses Vim script with assert calls. These are easier # to write and a lot easier to read and debug. @@ -132,7 +140,12 @@ test_gui_init.res: test_gui_init.vim $(VIMPROG) -u gui_preinit.vim -U gui_init.vim $(NO_PLUGINS) -S runtest.vim $*.vim @del vimcmd -test_options.res test_alot.res: opt_test.vim - opt_test.vim: ../optiondefs.h gen_opt_test.vim $(VIMPROG) -u NONE -S gen_opt_test.vim --noplugin --not-a-term ../optiondefs.h + +test_bench_regexp.res: test_bench_regexp.vim + -if exist benchmark.out del benchmark.out + @echo $(VIMPROG) > vimcmd + $(VIMPROG) -u NONE $(NO_INITS) -S runtest.vim $*.vim + @del vimcmd + @IF EXIST benchmark.out ( type benchmark.out ) diff --git a/src/testdir/Make_ming.mak b/src/testdir/Make_ming.mak index b34ae1d2c3..0f594c9e79 100644 --- a/src/testdir/Make_ming.mak +++ b/src/testdir/Make_ming.mak @@ -6,62 +6,69 @@ # # Requires a set of Unix tools: echo, diff, etc. -ifneq (sh.exe, $(SHELL)) -DEL = rm -f -DELDIR = rm -rf -MV = mv -CP = cp -CAT = cat -DIRSLASH = / -else +# Don't use unix-like shell. +SHELL = cmd.exe + DEL = del DELDIR = rd /s /q -MV = rename -CP = copy +MV = move /y +CP = copy /y CAT = type -DIRSLASH = \\ -endif -VIMPROG = ..$(DIRSLASH)vim +VIMPROG = ..\\vim -default: vimall +default: nongui include Make_all.mak -SCRIPTS_BENCH = test_bench_regexp.res +# Explicit dependencies. +test_options.res test_alot.res: opt_test.vim -# Must run test1 first to create small.vim. -$(NEW_TESTS_RES): $(SCRIPTS_FIRST) +TEST_OUTFILES = $(SCRIPTS_TINY_OUT) +DOSTMP = dostmp +# Keep $(DOSTMP)/*.in +.PRECIOUS: $(patsubst %.out, $(DOSTMP)/%.in, $(TEST_OUTFILES)) .SUFFIXES: .in .out .res .vim -vimall: fixff $(SCRIPTS_FIRST) newtests - @echo ALL DONE - -nongui: fixff nolog $(SCRIPTS_FIRST) newtests - @echo ALL DONE - -benchmark: $(SCRIPTS_BENCH) +nongui: nolog tinytests newtests report -small: nolog - @echo ALL DONE +gui: nolog tinytests newtests report -gui: fixff nolog $(SCRIPTS_FIRST) newtests - @echo ALL DONE +tiny: nolog tinytests report -win32: fixff nolog $(SCRIPTS_FIRST) newtests - @echo ALL DONE - -# TODO: find a way to avoid changing the distributed files. -fixff: - -$(VIMPROG) -u dos.vim $(NO_INITS) "+argdo set ff=dos|upd" +q *.in *.ok - -$(VIMPROG) -u dos.vim $(NO_INITS) "+argdo set ff=unix|upd" +q \ - dotest.in +benchmark: $(SCRIPTS_BENCH) +report: + @rem without the +eval feature test_result.log is a copy of test.log + @if exist test.log ( copy /y test.log test_result.log > nul ) \ + else ( echo No failures reported > test_result.log ) + $(VIMPROG) -u NONE $(NO_INITS) -S summarize.vim messages + @echo. + @echo Test results: + @cmd /c type test_result.log + @if exist test.log ( echo TEST FAILURE & exit /b 1 ) \ + else ( echo ALL DONE ) + + +# Execute an individual new style test, e.g.: +# mingw32-make -f Make_ming.mak test_largefile +$(NEW_TESTS): + -if exist $@.res del $@.res + -if exist test.log del test.log + -if exist messages del messages + @$(MAKE) -f Make_ming.mak $@.res VIMPROG=$(VIMPROG) --no-print-directory + @type messages + @if exist test.log exit 1 + + +# Delete files that may interfere with running tests. This includes some files +# that may result from working on the tests, not only from running them. clean: -@if exist *.out $(DEL) *.out -@if exist *.failed $(DEL) *.failed -@if exist *.res $(DEL) *.res + -@if exist $(DOSTMP) rd /s /q $(DOSTMP) -@if exist test.in $(DEL) test.in -@if exist test.ok $(DEL) test.ok -@if exist small.vim $(DEL) small.vim @@ -72,36 +79,63 @@ clean: -@if exist Xfind $(DELDIR) Xfind -@if exist XfakeHOME $(DELDIR) XfakeHOME -@if exist X* $(DEL) X* + -@for /d %%i in (X*) do @rd /s/q %%i -@if exist viminfo $(DEL) viminfo -@if exist test.log $(DEL) test.log + -@if exist test_result.log del test_result.log -@if exist messages $(DEL) messages + -@if exist benchmark.out del benchmark.out -@if exist opt_test.vim $(DEL) opt_test.vim -test1.out: test1.in - -@if exist wrongtermsize $(DEL) wrongtermsize - $(VIMPROG) -u dos.vim $(NO_INITS) -s dotest.in test1.in - -@if exist wrongtermsize ( \ - echo Vim window too small- must be 80x25 or larger && exit 1 \ - ) - -@if exist test.out $(DEL) test.out - -@if exist viminfo $(DEL) viminfo - nolog: -@if exist test.log $(DEL) test.log + -@if exist test_result.log del test_result.log -@if exist messages $(DEL) messages -test_bench_regexp.res: test_bench_regexp.vim - -$(DEL) benchmark.out - @echo $(VIMPROG) > vimcmd - $(VIMPROG) -u NONE $(NO_INITS) -S runtest.vim $*.vim - @$(DEL) vimcmd - $(CAT) benchmark.out + +# Tiny tests. Works even without the +eval feature. +tinytests: $(SCRIPTS_TINY_OUT) + +# Copy the input files to dostmp, changing the fileformat to dos. +$(DOSTMP)/%.in : %.in + if not exist $(DOSTMP)\nul mkdir $(DOSTMP) + if not exist $@ $(DEL) $@ + $(VIMPROG) -u dos.vim $(NO_INITS) "+set ff=dos|f $@|wq" $< + +# For each input file dostmp/test99.in run the tests. +# This moves test99.in to test99.in.bak temporarily. +%.out : $(DOSTMP)/%.in + -@if exist test.out $(DEL) test.out + -@if exist $(DOSTMP)\$@ $(DEL) $(DOSTMP)\$@ + $(MV) $(notdir $<) $(notdir $<).bak > NUL + $(CP) $(DOSTMP)\$(notdir $<) $(notdir $<) > NUL + $(CP) $(basename $@).ok test.ok > NUL + $(VIMPROG) -u dos.vim $(NO_INITS) -s dotest.in $(notdir $<) + -@if exist test.out $(MV) test.out $(DOSTMP)\$@ > NUL + -@if exist $(notdir $<).bak $(MV) $(notdir $<).bak $(notdir $<) > NUL + -@if exist test.ok $(DEL) test.ok + -@if exist Xdir1 $(DELDIR) /s /q Xdir1 + -@if exist Xfind $(DELDIR) Xfind + -@if exist XfakeHOME $(DELDIR) XfakeHOME + -@del X* + -@if exist viminfo del viminfo + $(VIMPROG) -u dos.vim $(NO_INITS) "+set ff=unix|f test.out|wq" \ + $(DOSTMP)\$@ + @diff test.out $(basename $@).ok & if errorlevel 1 \ + ( $(MV) test.out $(basename $@).failed > NUL \ + & del $(DOSTMP)\$@ \ + & echo $(basename $@) FAILED >> test.log ) \ + else ( $(MV) test.out $(basename $@).out > NUL ) + # New style of tests uses Vim script with assert calls. These are easier # to write and a lot easier to read and debug. # Limitation: Only works with the +eval feature. -newtests: $(NEW_TESTS_RES) +newtests: newtestssilent + @if exist messages (findstr "SKIPPED FAILED" messages > nul) && type messages + +newtestssilent: $(NEW_TESTS_RES) .vim.res: @echo $(VIMPROG) > vimcmd @@ -118,7 +152,12 @@ test_gui_init.res: test_gui_init.vim $(VIMPROG) -u gui_preinit.vim -U gui_init.vim $(NO_PLUGINS) -S runtest.vim $< @$(DEL) vimcmd -test_options.res test_alot.res: opt_test.vim - opt_test.vim: ../optiondefs.h gen_opt_test.vim $(VIMPROG) -u NONE -S gen_opt_test.vim --noplugin --not-a-term ../optiondefs.h + +test_bench_regexp.res: test_bench_regexp.vim + -$(DEL) benchmark.out + @echo $(VIMPROG) > vimcmd + $(VIMPROG) -u NONE $(NO_INITS) -S runtest.vim $*.vim + @$(DEL) vimcmd + $(CAT) benchmark.out diff --git a/src/testdir/Make_vms.mms b/src/testdir/Make_vms.mms index f36ae6edd8..2adc0f4395 100644 --- a/src/testdir/Make_vms.mms +++ b/src/testdir/Make_vms.mms @@ -4,7 +4,7 @@ # Authors: Zoltan Arpadffy, # Sandor Kopanyi, # -# Last change: 2020 Jul 03 +# Last change: 2020 Aug 13 # # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. # Edit the lines in the Configuration section below to select. @@ -37,7 +37,9 @@ VIMPROG = <->vim.exe .SUFFIXES : .out .in -SCRIPT = test1.out test77a.out +SCRIPT = test20.out test21.out test22.out test23.out test24.out \ + test25.out test26.out test27.out \ + test77a.out .IFDEF WANT_GUI GUI_OPTION = -g diff --git a/src/testdir/Makefile b/src/testdir/Makefile index 0d51fde3e1..42eb7f5569 100644 --- a/src/testdir/Makefile +++ b/src/testdir/Makefile @@ -12,7 +12,7 @@ SCRIPTSOURCE = ../../runtime # Comment out this line to see the verbose output of tests. # # Catches SwapExists to avoid hanging at the ATTENTION prompt. -REDIR_TEST_TO_NULL = --cmd 'au SwapExists * let v:swapchoice = "e"' > /dev/null +#REDIR_TEST_TO_NULL = --cmd 'au SwapExists * let v:swapchoice = "e"' > /dev/null # Uncomment this line to use valgrind for memory leaks and extra warnings. # The output goes into a file "valgrind.testN" @@ -23,19 +23,19 @@ REDIR_TEST_TO_NULL = --cmd 'au SwapExists * let v:swapchoice = "e"' > /dev/null default: nongui # The list of tests is common to all systems. -# This defines SCRIPTS_FIRST, NEW_TESTS and NEW_TESTS_RES +# This defines SCRIPTS_TINY_OUT, NEW_TESTS and NEW_TESTS_RES. include Make_all.mak # Explicit dependencies. test_options.res test_alot.res: opt_test.vim -SCRIPTS_BENCH = test_bench_regexp.res - .SUFFIXES: .in .out .res .vim -nongui: nolog $(SCRIPTS_FIRST) newtests report +nongui: nolog tinytests newtests report + +gui: nolog tinytests newtests report -gui: nolog $(SCRIPTS_FIRST) newtests report +tiny: nolog tinytests report benchmark: $(SCRIPTS_BENCH) @@ -54,10 +54,7 @@ report: else echo ALL DONE; \ fi" -$(SCRIPTS_FIRST) $(NEW_TESTS_RES): $(VIMPROG) - -# Must run test1 first to create small.vim. -$(NEW_TESTS_RES): $(SCRIPTS_FIRST) +$(SCRIPTS_TINY_OUT) $(NEW_TESTS_RES): $(VIMPROG) # Execute an individual new style test, e.g.: @@ -81,7 +78,7 @@ test_vim9: fi RM_ON_RUN = test.out X* viminfo -RM_ON_START = tiny.vim small.vim mbyte.vim mzscheme.vim test.ok benchmark.out +RM_ON_START = test.ok benchmark.out RUN_VIM = VIMRUNTIME=$(SCRIPTSOURCE) $(VALGRIND) $(VIMPROG) -f $(GUI_FLAG) -u unix.vim $(NO_INITS) -s dotest.in # Delete files that may interfere with running tests. This includes some files @@ -93,22 +90,34 @@ clean: -rm -f valgrind.* -rm -f asan.* -test1.out: test1.in - -rm -rf $*.failed $(RM_ON_RUN) $(RM_ON_START) wrongtermsize +nolog: + -rm -f test.log test_result.log messages + + +# Tiny tests. Works even without the +eval feature. +tinytests: $(SCRIPTS_TINY_OUT) + +.in.out: + -rm -rf $*.failed test.ok $(RM_ON_RUN) + cp $*.ok test.ok + @# Sleep a moment to avoid that the xterm title is messed up. + @# 200 msec is sufficient, but only modern sleep supports a fraction of + @# a second, fall back to a second if it fails. + @-/bin/sh -c "sleep .2 > /dev/null 2>&1 || sleep 1" $(RUN_VIM) $*.in $(REDIR_TEST_TO_NULL) - @/bin/sh -c "if test -f wrongtermsize; \ - then echo; \ - echo test1 FAILED - terminal size must be 80x24 or larger; \ - echo; exit 1; \ - elif diff test.out $*.ok; \ - then mv -f test.out $*.out; \ - else echo; \ - echo test1 FAILED - Something basic is wrong; \ - echo; exit 1; fi" - -rm -rf X* viminfo -nolog: - -rm -f test.log messages + @# Check if the test.out file matches test.ok. + @/bin/sh -c "if test -f test.out; then \ + if diff test.out $*.ok; \ + then mv -f test.out $*.out; \ + else echo $* FAILED >>test.log; mv -f test.out $*.failed; \ + fi \ + else echo $* NO OUTPUT >>test.log; \ + fi" + @/bin/sh -c "if test -f valgrind; then\ + mv -f valgrind valgrind.$*; \ + fi" + -rm -rf X* test.ok viminfo # New style of tests uses Vim script with assert calls. These are easier @@ -148,9 +157,9 @@ test_xxd.res: test_bench_regexp.res: test_bench_regexp.vim -rm -rf benchmark.out $(RM_ON_RUN) - # Sleep a moment to avoid that the xterm title is messed up. - # 200 msec is sufficient, but only modern sleep supports a fraction of - # a second, fall back to a second if it fails. + @# Sleep a moment to avoid that the xterm title is messed up. + @# 200 msec is sufficient, but only modern sleep supports a fraction of + @# a second, fall back to a second if it fails. @-/bin/sh -c "sleep .2 > /dev/null 2>&1 || sleep 1" $(RUN_VIMTEST) $(NO_INITS) -S runtest.vim $*.vim $(REDIR_TEST_TO_NULL) @/bin/sh -c "if test -f benchmark.out; then cat benchmark.out; fi" diff --git a/src/testdir/runtest.vim b/src/testdir/runtest.vim index f431748e1e..99854042b2 100644 --- a/src/testdir/runtest.vim +++ b/src/testdir/runtest.vim @@ -46,7 +46,9 @@ " Without the +eval feature we can't run these tests, bail out. -so small.vim +silent! while 0 + qa! +silent! endwhile " In the GUI we can always change the screen size. if has('gui_running') diff --git a/src/testdir/test1.in b/src/testdir/test1.in deleted file mode 100644 index 8c0219ea60..0000000000 --- a/src/testdir/test1.in +++ /dev/null @@ -1,52 +0,0 @@ - -First a simple test to check if the test script works. - -If Vim was not compiled with the +eval feature, the small.vim script will be -set to copy the test.ok file to test.out, so that it looks like the test -succeeded. Otherwise an empty small.vim is written. small.vim is sourced by -tests that require the +eval feature or other features that are missing in the -small version. - -If Vim was not compiled with the +windows feature, the tiny.vim script will be -set like small.vim above. tiny.vim is sourced by tests that require the -+windows feature or other features that are missing in the tiny version. - -If Vim was not compiled with the +multi_byte feature, the mbyte.vim script will -be set like small.vim above. mbyte.vim is sourced by tests that require the -+multi_byte feature. -Similar logic is applied to the +mzscheme feature, using mzscheme.vim. - -STARTTEST -:" If columns or lines are too small, create wrongtermsize. -:" (Some tests will fail. When columns and/or lines are small) -:if &lines < 24 || &columns < 80 | sp another | w! wrongtermsize | qa! | endif -:" -:" Write a single line to test.out to check if testing works at all. -:%d -athis is a test:w! test.out -:" Create small.vim and tiny.vim empty, create mbyte.vim to skip the test. -0D:w! small.vim -:w! tiny.vim -ae! test.ok -w! test.out -qa! -:w! mbyte.vim -:w! mzscheme.vim -:" -:" If +multi_byte feature supported, make mbyte.vim empty. -:if has("multi_byte") | sp another | w! mbyte.vim | q | endif -:" -:" If +mzscheme feature supported, make mzscheme.vim empty. -:if has("mzscheme") | sp another | w! mzscheme.vim | q | endif -:" -:" If +eval feature supported quit here, leaving tiny.vim and small.vim empty. -:" Otherwise write small.vim to skip the test. -:if 1 | q! | endif -:w! small.vim -:" If +windows feature not supported :sp will fail and tiny.vim will be -:" written to skip the test. -:sp another -:wq! tiny.vim -:qa! -ENDTEST - diff --git a/src/testdir/test1.ok b/src/testdir/test1.ok deleted file mode 100644 index 90bfcb5106..0000000000 --- a/src/testdir/test1.ok +++ /dev/null @@ -1 +0,0 @@ -this is a test diff --git a/src/testdir/test20.in b/src/testdir/test20.in new file mode 100644 index 0000000000..1ffbed530e --- /dev/null +++ b/src/testdir/test20.in @@ -0,0 +1,27 @@ +Tests Blockwise Visual when there are TABs before the text. +First test for undo working properly when executing commands from a register. +Also test this in an empty buffer. + +STARTTEST +G0"ay$k@au +:new +@auY:quit! +GP +/start here$ +"by$jjlld +/456$ +jj"bP +:/56$/,$-1w! test.out +:qa! +ENDTEST + +123456 +234567 +345678 + +test text test tex start here + some text + test text +test text + +OxjAykdd diff --git a/src/testdir/test20.ok b/src/testdir/test20.ok new file mode 100644 index 0000000000..7c50ea8db8 --- /dev/null +++ b/src/testdir/test20.ok @@ -0,0 +1,10 @@ +123start here56 +234start here67 +345start here78 + +test text test tex rt here + somext + tesext +test text + + diff --git a/src/testdir/test21.in b/src/testdir/test21.in new file mode 100644 index 0000000000..f5cc046c6a --- /dev/null +++ b/src/testdir/test21.in @@ -0,0 +1,13 @@ +Tests for file with some lines ending in CTRL-M, some not + +STARTTEST +:set ta tx +:e! +:$-3,$w! test.out +:qa! +ENDTEST + +this lines ends in a +this one doesn't +this one does +and the last one doesn't diff --git a/src/testdir/test21.ok b/src/testdir/test21.ok new file mode 100644 index 0000000000..38ff89eaf3 --- /dev/null +++ b/src/testdir/test21.ok @@ -0,0 +1,4 @@ +this lines ends in a +this one doesn't +this one does +and the last one doesn't diff --git a/src/testdir/test22.in b/src/testdir/test22.in new file mode 100644 index 0000000000..0e0e605531 --- /dev/null +++ b/src/testdir/test22.in @@ -0,0 +1,15 @@ +Tests for complicated + argument to :edit command + +STARTTEST +:$-1w! Xfile1 +:$w! Xfile2 +:edit +1|s/|/PIPE/|w Xfile1| e Xfile2|1 | s/\//SLASH/|w +:w! test.out +:e Xfile1 +:w >> test.out +:qa! +ENDTEST + +The result should be in Xfile1: "fooPIPEbar", in Xfile2: "fooSLASHbar" +foo|bar +foo/bar diff --git a/src/testdir/test22.ok b/src/testdir/test22.ok new file mode 100644 index 0000000000..f1930abad6 --- /dev/null +++ b/src/testdir/test22.ok @@ -0,0 +1,2 @@ +fooSLASHbar +fooPIPEbar diff --git a/src/testdir/test23.in b/src/testdir/test23.in new file mode 100644 index 0000000000..7dfc1afdc6 Binary files /dev/null and b/src/testdir/test23.in differ diff --git a/src/testdir/test23.ok b/src/testdir/test23.ok new file mode 100644 index 0000000000..cd61210968 --- /dev/null +++ b/src/testdir/test23.ok @@ -0,0 +1,32 @@ +start +test text test text +test text test text +test text test text +test text test text +test text test text +test text test text +test text test text x61 +test text test text x60-x64 +test text test text x78 5 +test text test text o143 +test text test text o140-o144 +test text test text o41 7 +test text test text \%x42 +test text test text \%o103 +test text test text [\x00] +test text test text [\x00-\x10] +test text test text [\x-z] +test text test text [\u-z] +xx xx a +xx aaaaa xx a +xx aaaaa xx a +xx Aaa xx +xx Aaaa xx +xx Aaa xx +xx foobar xA xx +xx an A xx +XX 9; +YY 77; + xyz + bcd + BB diff --git a/src/testdir/test24.in b/src/testdir/test24.in new file mode 100644 index 0000000000..5542c92666 Binary files /dev/null and b/src/testdir/test24.in differ diff --git a/src/testdir/test24.ok b/src/testdir/test24.ok new file mode 100644 index 0000000000..911d854655 --- /dev/null +++ b/src/testdir/test24.ok @@ -0,0 +1,2 @@ +sd +map __2 asdsecondsdsd0map __5 asd0fifth diff --git a/src/testdir/test25.in b/src/testdir/test25.in new file mode 100644 index 0000000000..5e8ce4484a --- /dev/null +++ b/src/testdir/test25.in @@ -0,0 +1,108 @@ +Test character classes in regexp using regexpengine 0, 1, 2. + +STARTTEST +/^start-here/+1 +Y:s/\%#=0\d//g +p:s/\%#=1\d//g +p:s/\%#=2\d//g +p:s/\%#=0[0-9]//g +p:s/\%#=1[0-9]//g +p:s/\%#=2[0-9]//g +p:s/\%#=0\D//g +p:s/\%#=1\D//g +p:s/\%#=2\D//g +p:s/\%#=0[^0-9]//g +p:s/\%#=1[^0-9]//g +p:s/\%#=2[^0-9]//g +p:s/\%#=0\o//g +p:s/\%#=1\o//g +p:s/\%#=2\o//g +p:s/\%#=0[0-7]//g +p:s/\%#=1[0-7]//g +p:s/\%#=2[0-7]//g +p:s/\%#=0\O//g +p:s/\%#=1\O//g +p:s/\%#=2\O//g +p:s/\%#=0[^0-7]//g +p:s/\%#=1[^0-7]//g +p:s/\%#=2[^0-7]//g +p:s/\%#=0\x//g +p:s/\%#=1\x//g +p:s/\%#=2\x//g +p:s/\%#=0[0-9A-Fa-f]//g +p:s/\%#=1[0-9A-Fa-f]//g +p:s/\%#=2[0-9A-Fa-f]//g +p:s/\%#=0\X//g +p:s/\%#=1\X//g +p:s/\%#=2\X//g +p:s/\%#=0[^0-9A-Fa-f]//g +p:s/\%#=1[^0-9A-Fa-f]//g +p:s/\%#=2[^0-9A-Fa-f]//g +p:s/\%#=0\w//g +p:s/\%#=1\w//g +p:s/\%#=2\w//g +p:s/\%#=0[0-9A-Za-z_]//g +p:s/\%#=1[0-9A-Za-z_]//g +p:s/\%#=2[0-9A-Za-z_]//g +p:s/\%#=0\W//g +p:s/\%#=1\W//g +p:s/\%#=2\W//g +p:s/\%#=0[^0-9A-Za-z_]//g +p:s/\%#=1[^0-9A-Za-z_]//g +p:s/\%#=2[^0-9A-Za-z_]//g +p:s/\%#=0\h//g +p:s/\%#=1\h//g +p:s/\%#=2\h//g +p:s/\%#=0[A-Za-z_]//g +p:s/\%#=1[A-Za-z_]//g +p:s/\%#=2[A-Za-z_]//g +p:s/\%#=0\H//g +p:s/\%#=1\H//g +p:s/\%#=2\H//g +p:s/\%#=0[^A-Za-z_]//g +p:s/\%#=1[^A-Za-z_]//g +p:s/\%#=2[^A-Za-z_]//g +p:s/\%#=0\a//g +p:s/\%#=1\a//g +p:s/\%#=2\a//g +p:s/\%#=0[A-Za-z]//g +p:s/\%#=1[A-Za-z]//g +p:s/\%#=2[A-Za-z]//g +p:s/\%#=0\A//g +p:s/\%#=1\A//g +p:s/\%#=2\A//g +p:s/\%#=0[^A-Za-z]//g +p:s/\%#=1[^A-Za-z]//g +p:s/\%#=2[^A-Za-z]//g +p:s/\%#=0\l//g +p:s/\%#=1\l//g +p:s/\%#=2\l//g +p:s/\%#=0[a-z]//g +p:s/\%#=1[a-z]//g +p:s/\%#=2[a-z]//g +p:s/\%#=0\L//g +p:s/\%#=1\L//g +p:s/\%#=2\L//g +p:s/\%#=0[^a-z]//g +p:s/\%#=1[^a-z]//g +p:s/\%#=2[^a-z]//g +p:s/\%#=0\u//g +p:s/\%#=1\u//g +p:s/\%#=2\u//g +p:s/\%#=0[A-Z]//g +p:s/\%#=1[A-Z]//g +p:s/\%#=2[A-Z]//g +p:s/\%#=0\U//g +p:s/\%#=1\U//g +p:s/\%#=2\U//g +p:s/\%#=0[^A-Z]//g +p:s/\%#=1[^A-Z]//g +p:s/\%#=2[^A-Z]//g +p:s/\%#=0\%204l^\t...//g +p:s/\%#=1\%205l^\t...//g +p:s/\%#=2\%206l^\t...//g +:/^start-here/+1,$wq! test.out +ENDTEST + +start-here + !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~ diff --git a/src/testdir/test25.ok b/src/testdir/test25.ok new file mode 100644 index 0000000000..df21ed1c5b --- /dev/null +++ b/src/testdir/test25.ok @@ -0,0 +1,99 @@ + !"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~ + !"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~ + !"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~ + !"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~ + !"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~ + !"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~ +0123456789 +0123456789 +0123456789 +0123456789 +0123456789 +0123456789 + !"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~ + !"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~ + !"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~ + !"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~ + !"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~ + !"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~ +01234567 +01234567 +01234567 +01234567 +01234567 +01234567 + !"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~ + !"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~ + !"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~ + !"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~ + !"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~ + !"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~ +0123456789ABCDEFabcdef +0123456789ABCDEFabcdef +0123456789ABCDEFabcdef +0123456789ABCDEFabcdef +0123456789ABCDEFabcdef +0123456789ABCDEFabcdef + !"#$%&'()#+'-./:;<=>?@[\]^`{|}~ + !"#$%&'()#+'-./:;<=>?@[\]^`{|}~ + !"#$%&'()#+'-./:;<=>?@[\]^`{|}~ + !"#$%&'()#+'-./:;<=>?@[\]^`{|}~ + !"#$%&'()#+'-./:;<=>?@[\]^`{|}~ + !"#$%&'()#+'-./:;<=>?@[\]^`{|}~ +0123456789ABCDEFGHIXYZ_abcdefghiwxyz +0123456789ABCDEFGHIXYZ_abcdefghiwxyz +0123456789ABCDEFGHIXYZ_abcdefghiwxyz +0123456789ABCDEFGHIXYZ_abcdefghiwxyz +0123456789ABCDEFGHIXYZ_abcdefghiwxyz +0123456789ABCDEFGHIXYZ_abcdefghiwxyz + !"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~ +ABCDEFGHIXYZ_abcdefghiwxyz +ABCDEFGHIXYZ_abcdefghiwxyz +ABCDEFGHIXYZ_abcdefghiwxyz +ABCDEFGHIXYZ_abcdefghiwxyz +ABCDEFGHIXYZ_abcdefghiwxyz +ABCDEFGHIXYZ_abcdefghiwxyz + !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~ +ABCDEFGHIXYZabcdefghiwxyz +ABCDEFGHIXYZabcdefghiwxyz +ABCDEFGHIXYZabcdefghiwxyz +ABCDEFGHIXYZabcdefghiwxyz +ABCDEFGHIXYZabcdefghiwxyz +ABCDEFGHIXYZabcdefghiwxyz + !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~ +abcdefghiwxyz +abcdefghiwxyz +abcdefghiwxyz +abcdefghiwxyz +abcdefghiwxyz +abcdefghiwxyz + !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~ +ABCDEFGHIXYZ +ABCDEFGHIXYZ +ABCDEFGHIXYZ +ABCDEFGHIXYZ +ABCDEFGHIXYZ +ABCDEFGHIXYZ +!"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~ +!"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~ +!"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~ diff --git a/src/testdir/test26.in b/src/testdir/test26.in new file mode 100644 index 0000000000..2d294cae09 --- /dev/null +++ b/src/testdir/test26.in @@ -0,0 +1,24 @@ +Test for writing and reading a file of over 100 Kbyte + +1 line: "This is the start" +3001 lines: "This is the leader" +1 line: "This is the middle" +3001 lines: "This is the trailer" +1 line: "This is the end" + +STARTTEST +:%d +aThis is the start +This is the leader +This is the middle +This is the trailer +This is the endkY3000p2GY3000p +:w! Xtest +:%d +:e! Xtest +:.w! test.out +3003G:.w >>test.out +6005G:.w >>test.out +:qa! +ENDTEST + diff --git a/src/testdir/test26.ok b/src/testdir/test26.ok new file mode 100644 index 0000000000..988e5f24b4 --- /dev/null +++ b/src/testdir/test26.ok @@ -0,0 +1,3 @@ +This is the start +This is the middle +This is the end diff --git a/src/testdir/test27.in b/src/testdir/test27.in new file mode 100644 index 0000000000..c35569a76c Binary files /dev/null and b/src/testdir/test27.in differ diff --git a/src/testdir/test27.ok b/src/testdir/test27.ok new file mode 100644 index 0000000000..183430d71c Binary files /dev/null and b/src/testdir/test27.ok differ diff --git a/src/testdir/test_options.vim b/src/testdir/test_options.vim index 5d7714e7ae..c5e5ab47c4 100644 --- a/src/testdir/test_options.vim +++ b/src/testdir/test_options.vim @@ -276,11 +276,11 @@ func Test_set_completion() " Expand directories. call feedkeys(":set cdpath=./\\\"\", 'tx') call assert_match(' ./samples/ ', @:) - call assert_notmatch(' ./small.vim ', @:) + call assert_notmatch(' ./summarize.vim ', @:) " Expand files and directories. call feedkeys(":set tags=./\\\"\", 'tx') - call assert_match(' ./samples/.* ./small.vim', @:) + call assert_match(' ./samples/.* ./summarize.vim', @:) call feedkeys(":set tags=./\\\\ dif\\\"\", 'tx') call assert_equal('"set tags=./\\ diff diffexpr diffopt', @:) diff --git a/src/version.c b/src/version.c index 73c965b80d..2955eb0e3b 100644 --- a/src/version.c +++ b/src/version.c @@ -754,6 +754,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1439, /**/ 1438, /**/ -- cgit v1.2.3