# HG changeset patch # User Bram Moolenaar # Date 1595761205 -7200 # Node ID c9a1b3b66fb72801a45603e51809256c237db1de # Parent d1d66e29c0e9cb6fd4bc089d9252ec32b0f8016f patch 8.2.1295: tests 44 and 99 are old style Commit: https://github.com/vim/vim/commit/7d40b8a532fa2ce768f200ab118870d17875a7fe Author: Bram Moolenaar Date: Sun Jul 26 12:52:59 2020 +0200 patch 8.2.1295: tests 44 and 99 are old style Problem: Tests 44 and 99 are old style. Solution: Convert to new style tests. (Yegappan Lakshmanan, closes https://github.com/vim/vim/issues/6536) diff --git a/src/Makefile b/src/Makefile --- a/src/Makefile +++ b/src/Makefile @@ -2311,10 +2311,9 @@ test_libvterm: # Run individual OLD style test. # These do not depend on the executable, compile it when needed. test1 \ - test42 test44 test49 \ + test42 test49 \ test52 test59 \ - test70 \ - test99: + test70: 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 --- a/src/testdir/Make_all.mak +++ b/src/testdir/Make_all.mak @@ -14,9 +14,7 @@ SCRIPTS_FIRST = \ # Tests that run on all systems. SCRIPTS_ALL = \ test42.out \ - test44.out \ - test70.out \ - test99.out + test70.out # Tests that run on most systems, but not on Amiga. SCRIPTS_MORE1 = \ diff --git a/src/testdir/Make_vms.mms b/src/testdir/Make_vms.mms --- a/src/testdir/Make_vms.mms +++ b/src/testdir/Make_vms.mms @@ -74,7 +74,7 @@ VIMPROG = <->vim.exe .SUFFIXES : .out .in SCRIPT = test1.out \ - test42.out test44.out test49.out test77a.out test99.out + test42.out test49.out test77a.out # Known problems: # diff --git a/src/testdir/test44.in b/src/testdir/test44.in deleted file mode 100644 --- a/src/testdir/test44.in +++ /dev/null @@ -1,81 +0,0 @@ -Tests for regexp with multi-byte encoding and various magic settings. -Test matchstr() with a count and multi-byte chars. -See test99 for exactly the same test with re=2. - -STARTTEST -:so mbyte.vim -:set nocompatible encoding=utf-8 termencoding=latin1 viminfo+=nviminfo -:set re=1 -/^1 -/a*b\{2}c\+/e -x/\Md\*e\{2}f\+/e -x:set nomagic -/g\*h\{2}i\+/e -x/\mj*k\{2}l\+/e -x/\vm*n{2}o+/e -x/\V^aa$ -x:set magic -/\v(a)(b)\2\1\1/e -x/\V[ab]\(\[xy]\)\1 -x:" Now search for multi-byte without composing char -/ม -x:" Now search for multi-byte with composing char -/ม่ -x:" find word by change of word class -/ち\<カヨ\>は -x:" Test \%u, [\u] and friends -:" c -/\%u20ac -x:" d -/[\u4f7f\u5929]\+ -x:" e -/\%U12345678 -x:" f -/[\U1234abcd\u1234\uabcd] -x:" g -/\%d21879b -x:" j Test backwards search from a multi-byte char -/x -x?. -x:" k -:let @w=':%s#comb[i]nations#œ̄ṣ́m̥̄ᾱ̆́#g' -:@w -:" -:" l Test what 7.3.192 fixed -/^l -:s/ \?/ /g -:?^1?,$w! test.out -:e! test.out -G:put =matchstr(\"אבגד\", \".\", 0, 2) " ב -:put =matchstr(\"אבגד\", \"..\", 0, 2) " בג -:put =matchstr(\"אבגד\", \".\", 0, 0) " א -:put =matchstr(\"אבגד\", \".\", 4, -1) " ג -:new -:$put =['dog(a', 'cat('] -/(/e+ -"ayn:bd! -:$put ='' -G"ap -:w! -:qa! -ENDTEST - -1 a aa abb abbccc -2 d dd dee deefff -3 g gg ghh ghhiii -4 j jj jkk jkklll -5 m mm mnn mnnooo -6 x ^aa$ x -7 (a)(b) abbaa -8 axx [ab]xx -9 หม่x อมx -a อมx หม่x -b ちカヨは -c x ¬€x -d 天使x -e y -f z -g a啷bb -j 0123❤x -k combinations -l äö üᾱ̆́ diff --git a/src/testdir/test44.ok b/src/testdir/test44.ok deleted file mode 100644 --- a/src/testdir/test44.ok +++ /dev/null @@ -1,25 +0,0 @@ -1 a aa abb abbcc -2 d dd dee deeff -3 g gg ghh ghhii -4 j jj jkk jkkll -5 m mm mnn mnnoo -6 x aa$ x -7 (a)(b) abba -8 axx ab]xx -9 หม่x อx -a อมx หx -b カヨは -c x ¬x -d 使x -e y -f z -g abb -j 012❤ -k œ̄ṣ́m̥̄ᾱ̆́ - l ä ö ü ᾱ̆́ -ב -בג -א -ג -a -cat( diff --git a/src/testdir/test99.in b/src/testdir/test99.in deleted file mode 100644 --- a/src/testdir/test99.in +++ /dev/null @@ -1,69 +0,0 @@ -Tests for regexp with multi-byte encoding and various magic settings. -Test matchstr() with a count and multi-byte chars. -See test44 for exactly the same test with re=1. - -STARTTEST -:so mbyte.vim -:set nocompatible encoding=utf-8 termencoding=latin1 viminfo+=nviminfo -:set re=2 -/^1 -/a*b\{2}c\+/e -x/\Md\*e\{2}f\+/e -x:set nomagic -/g\*h\{2}i\+/e -x/\mj*k\{2}l\+/e -x/\vm*n{2}o+/e -x/\V^aa$ -x:set magic -/\v(a)(b)\2\1\1/e -x/\V[ab]\(\[xy]\)\1 -x:" Now search for multi-byte without composing char -/ม -x:" Now search for multi-byte with composing char -/ม่ -x:" find word by change of word class -/ち\<カヨ\>は -x:" Test \%u, [\u] and friends -/\%u20ac -x/[\u4f7f\u5929]\+ -x/\%U12345678 -x/[\U1234abcd\u1234\uabcd] -x/\%d21879b -x:" Test backwards search from a multi-byte char -/x -x?. -x:let @w=':%s#comb[i]nations#œ̄ṣ́m̥̄ᾱ̆́#g' -:@w -:" -:" l Test what 7.3.192 fixed -/^l -:s/ \?/ /g -:?^1?,$w! test.out -:e! test.out -G:put =matchstr(\"אבגד\", \".\", 0, 2) " ב -:put =matchstr(\"אבגד\", \"..\", 0, 2) " בג -:put =matchstr(\"אבגד\", \".\", 0, 0) " א -:put =matchstr(\"אבגד\", \".\", 4, -1) " ג -:w! -:qa! -ENDTEST - -1 a aa abb abbccc -2 d dd dee deefff -3 g gg ghh ghhiii -4 j jj jkk jkklll -5 m mm mnn mnnooo -6 x ^aa$ x -7 (a)(b) abbaa -8 axx [ab]xx -9 หม่x อมx -a อมx หม่x -b ちカヨは -c x ¬€x -d 天使x -e y -f z -g a啷bb -j 0123❤x -k combinations -l äö üᾱ̆́ diff --git a/src/testdir/test99.ok b/src/testdir/test99.ok deleted file mode 100644 --- a/src/testdir/test99.ok +++ /dev/null @@ -1,23 +0,0 @@ -1 a aa abb abbcc -2 d dd dee deeff -3 g gg ghh ghhii -4 j jj jkk jkkll -5 m mm mnn mnnoo -6 x aa$ x -7 (a)(b) abba -8 axx ab]xx -9 หม่x อx -a อมx หx -b カヨは -c x ¬x -d 使x -e y -f z -g abb -j 012❤ -k œ̄ṣ́m̥̄ᾱ̆́ - l ä ö ü ᾱ̆́ -ב -בג -א -ג diff --git a/src/testdir/test_regexp_utf8.vim b/src/testdir/test_regexp_utf8.vim --- a/src/testdir/test_regexp_utf8.vim +++ b/src/testdir/test_regexp_utf8.vim @@ -377,4 +377,128 @@ func Test_regexp_ignore_case() set regexpengine& endfunc +" Tests for regexp with multi-byte encoding and various magic settings +func Run_regexp_multibyte_magic() + let text =<< trim END + 1 a aa abb abbccc + 2 d dd dee deefff + 3 g gg ghh ghhiii + 4 j jj jkk jkklll + 5 m mm mnn mnnooo + 6 x ^aa$ x + 7 (a)(b) abbaa + 8 axx [ab]xx + 9 หม่x อมx + a อมx หม่x + b ちカヨは + c x ¬€x + d 天使x + e y + f z + g a啷bb + j 0123❤x + k combinations + l äö üᾱ̆́ + END + + new + call setline(1, text) + exe 'normal /a*b\{2}c\+/e' .. "\x" + call assert_equal('1 a aa abb abbcc', getline('.')) + exe 'normal /\Md\*e\{2}f\+/e' .. "\x" + call assert_equal('2 d dd dee deeff', getline('.')) + set nomagic + exe 'normal /g\*h\{2}i\+/e' .. "\x" + call assert_equal('3 g gg ghh ghhii', getline('.')) + exe 'normal /\mj*k\{2}l\+/e' .. "\x" + call assert_equal('4 j jj jkk jkkll', getline('.')) + exe 'normal /\vm*n{2}o+/e' .. "\x" + call assert_equal('5 m mm mnn mnnoo', getline('.')) + exe 'normal /\V^aa$/' .. "\x" + call assert_equal('6 x aa$ x', getline('.')) + set magic + exe 'normal /\v(a)(b)\2\1\1/e' .. "\x" + call assert_equal('7 (a)(b) abba', getline('.')) + exe 'normal /\V[ab]\(\[xy]\)\1' .. "\x" + call assert_equal('8 axx ab]xx', getline('.')) + + " search for multi-byte without composing char + exe 'normal /ม' .. "\x" + call assert_equal('9 หม่x อx', getline('.')) + + " search for multi-byte with composing char + exe 'normal /ม่' .. "\x" + call assert_equal('a อมx หx', getline('.')) + + " find word by change of word class + exe 'normal /ち\<カヨ\>は' .. "\x" + call assert_equal('b カヨは', getline('.')) + + " Test \%u, [\u] and friends + " c + exe 'normal /\%u20ac' .. "\x" + call assert_equal('c x ¬x', getline('.')) + " d + exe 'normal /[\u4f7f\u5929]\+' .. "\x" + call assert_equal('d 使x', getline('.')) + " e + exe 'normal /\%U12345678' .. "\x" + call assert_equal('e y', getline('.')) + " f + exe 'normal /[\U1234abcd\u1234\uabcd]' .. "\x" + call assert_equal('f z', getline('.')) + " g + exe 'normal /\%d21879b' .. "\x" + call assert_equal('g abb', getline('.')) + + " j Test backwards search from a multi-byte char + exe "normal /x\x?.\x" + call assert_equal('j 012❤', getline('.')) + " k + let @w=':%s#comb[i]nations#œ̄ṣ́m̥̄ᾱ̆́#g' + @w + call assert_equal('k œ̄ṣ́m̥̄ᾱ̆́', getline(18)) + + close! +endfunc + +func Test_regexp_multibyte_magic() + set regexpengine=1 + call Run_regexp_multibyte_magic() + set regexpengine=2 + call Run_regexp_multibyte_magic() + set regexpengine& +endfunc + +" Test for 7.3.192 +" command ":s/ \?/ /g" splits multi-byte characters into bytes +func Test_split_multibyte_to_bytes() + new + call setline(1, 'l äö üᾱ̆́') + s/ \?/ /g + call assert_equal(' l ä ö ü ᾱ̆́', getline(1)) + close! +endfunc + +" Test for matchstr() with multibyte characters +func Test_matchstr_multibyte() + new + call assert_equal('ב', matchstr("אבגד", ".", 0, 2)) + call assert_equal('בג', matchstr("אבגד", "..", 0, 2)) + call assert_equal('א', matchstr("אבגד", ".", 0, 0)) + call assert_equal('ג', matchstr("אבגד", ".", 4, -1)) + close! +endfunc + +" Test for 7.4.636 +" A search with end offset gets stuck at end of file. +func Test_search_with_end_offset() + new + call setline(1, ['', 'dog(a', 'cat(']) + exe "normal /(/e+" .. "\" + normal "ayn + call assert_equal("a\ncat(", @a) + close! +endfunc + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1295, +/**/ 1294, /**/ 1293,