diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-08-16 21:51:49 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-08-16 21:51:49 +0200 |
commit | c0f8823ee4ca629db5446ba0a935f68d4a4fb193 (patch) | |
tree | b003fc895f3138da616ecccdbd77c27e352e611d | |
parent | 0aae4809fd52b445531766411a9c963dc6274a04 (diff) | |
download | vim-git-c0f8823ee4ca629db5446ba0a935f68d4a4fb193.tar.gz |
patch 8.2.1470: errors in spell file not testedv8.2.1470
Problem: Errors in spell file not tested.
Solution: Add test for spell file errors. (Yegappan Lakshmanan,
closes #6721)
-rw-r--r-- | src/testdir/test_spellfile.vim | 167 | ||||
-rw-r--r-- | src/version.c | 2 |
2 files changed, 168 insertions, 1 deletions
diff --git a/src/testdir/test_spellfile.vim b/src/testdir/test_spellfile.vim index 6e6a61351..fba8af8c7 100644 --- a/src/testdir/test_spellfile.vim +++ b/src/testdir/test_spellfile.vim @@ -167,8 +167,173 @@ func Test_spell_normal() call assert_equal([], glob('Xspellfile.add',0,1)) call assert_equal([], glob('Xspellfile2.add',0,1)) - set spellfile= + set spellfile= spell& spelllang& bw! endfunc +" Test for spell file format errors +func Test_spellfile_format_error() + let save_rtp = &rtp + call mkdir('Xtest/spell', 'p') + + " empty spell file + call writefile([], './Xtest/spell/Xtest.utf-8.spl') + set runtimepath=./Xtest + set spelllang=Xtest + call assert_fails('set spell', 'E757:') + set nospell spelllang& + + " invalid file ID + call writefile(['vim'], './Xtest/spell/Xtest.utf-8.spl') + set runtimepath=./Xtest + set spelllang=Xtest + call assert_fails('set spell', 'E757:') + set nospell spelllang& + + " missing version number + call writefile(['VIMspell'], './Xtest/spell/Xtest.utf-8.spl') + set runtimepath=./Xtest + set spelllang=Xtest + call assert_fails('set spell', 'E771:') + set nospell spelllang& + + " invalid version number + call writefile(['VIMspellz'], './Xtest/spell/Xtest.utf-8.spl') + set runtimepath=./Xtest + set spelllang=Xtest + call assert_fails('set spell', 'E772:') + set nospell spelllang& + + " no sections + call writefile(0z56494D7370656C6C32, './Xtest/spell/Xtest.utf-8.spl', 'b') + set runtimepath=./Xtest + set spelllang=Xtest + call assert_fails('set spell', 'E758:') + set nospell spelllang& + + " missing section length + call writefile(['VIMspell200'], './Xtest/spell/Xtest.utf-8.spl') + set runtimepath=./Xtest + set spelllang=Xtest + call assert_fails('set spell', 'E758:') + set nospell spelllang& + + " unsupported required section + call writefile(['VIMspell2z' .. nr2char(1) .. ' ' .. nr2char(4)], + \ './Xtest/spell/Xtest.utf-8.spl') + set runtimepath=./Xtest + set spelllang=Xtest + call assert_fails('set spell', 'E770:') + set nospell spelllang& + + " unsupported not-required section + call writefile(['VIMspell2z' .. nr2char(0) .. ' ' .. nr2char(4)], + \ './Xtest/spell/Xtest.utf-8.spl') + set runtimepath=./Xtest + set spelllang=Xtest + call assert_fails('set spell', 'E758:') + set nospell spelllang& + + " SN_REGION: invalid number of region names + call writefile(0z56494D7370656C6C320000000000FF, + \ './Xtest/spell/Xtest.utf-8.spl', 'b') + set runtimepath=./Xtest + set spelllang=Xtest + call assert_fails('set spell', 'E759:') + set nospell spelllang& + + " SN_CHARFLAGS: missing <charflagslen> length + call writefile(0z56494D7370656C6C32010000000004, + \ './Xtest/spell/Xtest.utf-8.spl', 'b') + set runtimepath=./Xtest + set spelllang=Xtest + call assert_fails('set spell', 'E758:') + set nospell spelllang& + + " SN_CHARFLAGS: invalid <charflagslen> length + call writefile(0z56494D7370656C6C320100000000010201, + \ './Xtest/spell/Xtest.utf-8.spl', 'b') + set runtimepath=./Xtest + set spelllang=Xtest + set spell + " FIXME: There are no error messages. How to check for the test result? + set nospell spelllang& + + " SN_CHARFLAGS: charflagslen == 0 and folcharslen != 0 + call writefile(0z56494D7370656C6C3201000000000400000101, + \ './Xtest/spell/Xtest.utf-8.spl', 'b') + set runtimepath=./Xtest + set spelllang=Xtest + call assert_fails('set spell', 'E759:') + set nospell spelllang& + + " SN_CHARFLAGS: missing <folcharslen> length + call writefile(0z56494D7370656C6C3201000000000100, + \ './Xtest/spell/Xtest.utf-8.spl', 'b') + set runtimepath=./Xtest + set spelllang=Xtest + call assert_fails('set spell', 'E758:') + set nospell spelllang& + + " SN_PREFCOND: invalid prefcondcnt + call writefile(0z56494D7370656C6C3203000000000100, + \ './Xtest/spell/Xtest.utf-8.spl', 'b') + set runtimepath=./Xtest + set spelllang=Xtest + call assert_fails('set spell', 'E759:') + set nospell spelllang& + + " SN_PREFCOND: invalid condlen + call writefile(0z56494D7370656C6C320300000000020001, + \ './Xtest/spell/Xtest.utf-8.spl', 'b') + set runtimepath=./Xtest + set spelllang=Xtest + call assert_fails('set spell', 'E759:') + set nospell spelllang& + + " SN_REP: invalid repcount + call writefile(0z56494D7370656C6C3204000000000100, + \ './Xtest/spell/Xtest.utf-8.spl', 'b') + set runtimepath=./Xtest + set spelllang=Xtest + call assert_fails('set spell', 'E758:') + set nospell spelllang& + + " SN_REP: missing rep + call writefile(0z56494D7370656C6C320400000000020004, + \ './Xtest/spell/Xtest.utf-8.spl', 'b') + set runtimepath=./Xtest + set spelllang=Xtest + call assert_fails('set spell', 'E758:') + set nospell spelllang& + + " SN_REP: zero repfromlen + call writefile(0z56494D7370656C6C32040000000003000100, + \ './Xtest/spell/Xtest.utf-8.spl', 'b') + set runtimepath=./Xtest + set spelllang=Xtest + call assert_fails('set spell', 'E759:') + set nospell spelllang& + + " SN_REP: invalid reptolen + call writefile(0z56494D7370656C6C320400000000050001014101, + \ './Xtest/spell/Xtest.utf-8.spl', 'b') + set runtimepath=./Xtest + set spelllang=Xtest + " FIXME: There are no error messages. How to check for the test result? + set spell + set nospell spelllang& + + " SN_REP: zero reptolen + call writefile(0z56494D7370656C6C320400000000050001014100, + \ './Xtest/spell/Xtest.utf-8.spl', 'b') + set runtimepath=./Xtest + set spelllang=Xtest + call assert_fails('set spell', 'E759:') + set nospell spelllang& + + let &rtp = save_rtp + call delete('Xtest', 'rf') +endfunc + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c index 10c659ebe..b96a49fff 100644 --- 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 */ /**/ + 1470, +/**/ 1469, /**/ 1468, |