You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

172 lines
4.9 KiB
Python

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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, autotrigger_only,
visual_content):
if before.endswith('blumba') and autotrigger_only == False:
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 #}}}