306f0ace5f
- Remove support for python 3.2 to reduce number of test cases and because it actually fails with Neovim. It is not a supported version anyways. - Due to Neovim not handling fast typing through the console properly (https://github.com/neovim/neovim/issues/2454), the typing is actually simulated through the Python client. We need to differentiate now if a keystroke is meant for the terminal or for the Vim session. Using neovim.input() introduces additional chances for races since inputs are not buffered but processed right away. This results in more retries for some tests. - Neovim needs more parameters and configuration passed in through the test script. Added command line arguments for these. - Skip an extra test under Neovim due to https://github.com/neovim/python-client/issues/128.
171 lines
4.9 KiB
Python
171 lines
4.9 KiB
Python
# encoding: utf-8
|
||
from test.vim_test_case import VimTestCase as _VimTest
|
||
from test.constant import *
|
||
from test.util import running_on_windows
|
||
|
||
# AddSnippet Function {{{#
|
||
|
||
|
||
class _AddFuncBase(_VimTest):
|
||
args = ''
|
||
|
||
def _before_test(self):
|
||
self.vim.send_to_vim(':call UltiSnips#AddSnippetWithPriority(%s)\n' % self.args)
|
||
|
||
|
||
class AddFunc_Simple(_AddFuncBase):
|
||
args = '"test", "simple expand", "desc", "", "all", 0'
|
||
keys = 'abc test' + EX
|
||
wanted = 'abc simple expand'
|
||
|
||
|
||
class AddFunc_Opt(_AddFuncBase):
|
||
args = '".*test", "simple expand", "desc", "r", "all", 0'
|
||
keys = 'abc test' + EX
|
||
wanted = 'simple expand'
|
||
# End: AddSnippet Function #}}}
|
||
|
||
# Langmap Handling {{{#
|
||
# Test for bug 501727 #
|
||
|
||
|
||
class TestNonEmptyLangmap_ExpectCorrectResult(_VimTest):
|
||
snippets = ('testme',
|
||
"""my snipped ${1:some_default}
|
||
and a mirror: $1
|
||
$2...$3
|
||
$0""")
|
||
keys = 'testme' + EX + 'hi1' + JF + 'hi2' + JF + 'hi3' + JF + 'hi4'
|
||
wanted = """my snipped hi1
|
||
and a mirror: hi1
|
||
hi2...hi3
|
||
hi4"""
|
||
|
||
def _extra_vim_config(self, vim_config):
|
||
vim_config.append('set langmap=dj,rk,nl,ln,jd,kr,DJ,RK,NL,LN,JD,KR')
|
||
|
||
# Test for https://bugs.launchpad.net/bugs/501727 #
|
||
|
||
|
||
class TestNonEmptyLangmapWithSemi_ExpectCorrectResult(_VimTest):
|
||
snippets = ('testme',
|
||
"""my snipped ${1:some_default}
|
||
and a mirror: $1
|
||
$2...$3
|
||
$0""")
|
||
keys = 'testme' + EX + 'hi;' + JF + 'hi2' + \
|
||
JF + 'hi3' + JF + 'hi4' + ESC + ';Hello'
|
||
wanted = """my snipped hi;
|
||
and a mirror: hi;
|
||
hi2...hi3
|
||
hi4Hello"""
|
||
|
||
def _before_test(self):
|
||
self.vim.send_to_vim(':set langmap=\\\\;;A\n')
|
||
|
||
# Test for bug 871357 #
|
||
|
||
|
||
class TestLangmapWithUtf8_ExpectCorrectResult(_VimTest):
|
||
# SendKeys can't send UTF characters
|
||
skip_if = lambda self: running_on_windows()
|
||
snippets = ('testme',
|
||
"""my snipped ${1:some_default}
|
||
and a mirror: $1
|
||
$2...$3
|
||
$0""")
|
||
keys = 'testme' + EX + 'hi1' + JF + 'hi2' + JF + 'hi3' + JF + 'hi4'
|
||
wanted = """my snipped hi1
|
||
and a mirror: hi1
|
||
hi2...hi3
|
||
hi4"""
|
||
|
||
def _before_test(self):
|
||
self.vim.send_to_vim(
|
||
":set langmap=йq,цw,уe,кr,еt,нy,гu,шi,щo,зp,х[,ъ],фa,ыs,вd,аf,пg,рh,оj,лk,дl,ж\\;,э',яz,чx,сc,мv,иb,тn,ьm,ю.,ё',ЙQ,ЦW,УE,КR,ЕT,НY,ГU,ШI,ЩO,ЗP,Х\{,Ъ\},ФA,ЫS,ВD,АF,ПG,РH,ОJ,ЛK,ДL,Ж\:,Э\",ЯZ,ЧX,СC,МV,ИB,ТN,ЬM,Б\<,Ю\>\n")
|
||
|
||
# End: Langmap Handling #}}}
|
||
|
||
# SnippetsInCurrentScope {{{#
|
||
|
||
|
||
class VerifyVimDict1(_VimTest):
|
||
|
||
"""check:
|
||
correct type (4 means vim dictionary)
|
||
correct length of dictionary (in this case we have on element if the use same prefix, dictionary should have 1 element)
|
||
correct description (including the apostrophe)
|
||
if the prefix is mismatched no resulting dict should have 0 elements
|
||
"""
|
||
|
||
snippets = ('testâ', 'abc123ά', '123\'êabc')
|
||
keys = ('test=(type(UltiSnips#SnippetsInCurrentScope()) . len(UltiSnips#SnippetsInCurrentScope()) . ' +
|
||
'UltiSnips#SnippetsInCurrentScope()["testâ"]' + ')\n' +
|
||
'=len(UltiSnips#SnippetsInCurrentScope())\n')
|
||
|
||
wanted = 'test41123\'êabc0'
|
||
|
||
|
||
class VerifyVimDict2(_VimTest):
|
||
|
||
"""check:
|
||
can use " in trigger
|
||
"""
|
||
|
||
snippets = ('te"stâ', 'abc123ά', '123êabc')
|
||
akey = "'te{}stâ'".format('"')
|
||
keys = (
|
||
'te"=(UltiSnips#SnippetsInCurrentScope()[{}]'.format(akey) + ')\n')
|
||
wanted = 'te"123êabc'
|
||
|
||
|
||
class VerifyVimDict3(_VimTest):
|
||
|
||
"""check:
|
||
can use ' in trigger
|
||
"""
|
||
|
||
snippets = ("te'stâ", 'abc123ά', '123êabc')
|
||
akey = '"te{}stâ"'.format("'")
|
||
keys = (
|
||
"te'=(UltiSnips#SnippetsInCurrentScope()[{}]".format(akey) + ')\n')
|
||
wanted = "te'123êabc"
|
||
# End: SnippetsInCurrentScope #}}}
|
||
|
||
# Snippet Source {{{#
|
||
|
||
|
||
class AddNewSnippetSource(_VimTest):
|
||
keys = ('blumba' + EX + ESC +
|
||
':%(python)s UltiSnips_Manager.register_snippet_source(' +
|
||
"'temp', MySnippetSource())\n" +
|
||
'oblumba' + EX + ESC +
|
||
":%(python)s UltiSnips_Manager.unregister_snippet_source('temp')\n" +
|
||
'oblumba' + EX) % {'python': 'py3' if PYTHON3 else 'py'}
|
||
wanted = (
|
||
'blumba' + EX + '\n' +
|
||
'this is a dynamic snippet' + '\n' +
|
||
'blumba' + EX
|
||
)
|
||
|
||
def _extra_vim_config(self, vim_config):
|
||
self._create_file('snippet_source.py', """
|
||
from UltiSnips.snippet.source import SnippetSource
|
||
from UltiSnips.snippet.definition import UltiSnipsSnippetDefinition
|
||
|
||
class MySnippetSource(SnippetSource):
|
||
def get_snippets(self, filetypes, before, possible):
|
||
if before.endswith('blumba'):
|
||
return [
|
||
UltiSnipsSnippetDefinition(
|
||
-100, "blumba", "this is a dynamic snippet", "", "", {}, "blub",
|
||
None)
|
||
]
|
||
return []
|
||
""")
|
||
pyfile = 'py3file' if PYTHON3 else 'pyfile'
|
||
vim_config.append(
|
||
'%s %s' %
|
||
(pyfile, self.name_temp('snippet_source.py')))
|
||
# End: Snippet Source #}}}
|