# encoding: utf-8 from test.vim_test_case import VimTestCase as _VimTest from test.constant import * from test.util import running_on_windows # ShellCode Interpolation {{{# class TabStop_Shell_SimpleExample(_VimTest): skip_if = lambda self: running_on_windows() snippets = ("test", "hi `echo hallo` you!") keys = "test" + EX + "and more" wanted = "hi hallo you!and more" class TabStop_Shell_WithUmlauts(_VimTest): skip_if = lambda self: running_on_windows() snippets = ("test", "hi `echo höüäh` you!") keys = "test" + EX + "and more" wanted = "hi höüäh you!and more" class TabStop_Shell_TextInNextLine(_VimTest): skip_if = lambda self: running_on_windows() snippets = ("test", "hi `echo hallo`\nWeiter") keys = "test" + EX + "and more" wanted = "hi hallo\nWeiterand more" class TabStop_Shell_InDefValue_Leave(_VimTest): skip_if = lambda self: running_on_windows() snippets = ("test", "Hallo ${1:now `echo fromecho`} end") keys = "test" + EX + JF + "and more" wanted = "Hallo now fromecho endand more" class TabStop_Shell_InDefValue_Overwrite(_VimTest): skip_if = lambda self: running_on_windows() snippets = ("test", "Hallo ${1:now `echo fromecho`} end") keys = "test" + EX + "overwrite" + JF + "and more" wanted = "Hallo overwrite endand more" class TabStop_Shell_TestEscapedChars_Overwrite(_VimTest): skip_if = lambda self: running_on_windows() snippets = ("test", r"""`echo \`echo "\\$hi"\``""") keys = "test" + EX wanted = "$hi" class TabStop_Shell_TestEscapedCharsAndShellVars_Overwrite(_VimTest): skip_if = lambda self: running_on_windows() snippets = ("test", r"""`hi="blah"; echo \`echo "$hi"\``""") keys = "test" + EX wanted = "blah" class TabStop_Shell_ShebangPython(_VimTest): skip_if = lambda self: running_on_windows() snippets = ("test", """Hallo ${1:now `#!/usr/bin/env python print "Hallo Welt" `} end""") keys = "test" + EX + JF + "and more" wanted = "Hallo now Hallo Welt endand more" # End: ShellCode Interpolation #}}} # VimScript Interpolation {{{# class TabStop_VimScriptInterpolation_SimpleExample(_VimTest): snippets = ("test", """hi `!v indent(".")` End""") keys = " test" + EX wanted = " hi 4 End" # End: VimScript Interpolation #}}} # PythonCode Interpolation {{{# # Deprecated Implementation {{{# class PythonCodeOld_SimpleExample(_VimTest): snippets = ("test", """hi `!p res = "Hallo"` End""") keys = "test" + EX wanted = "hi Hallo End" class PythonCodeOld_ReferencePlaceholderAfter(_VimTest): snippets = ("test", """${1:hi} `!p res = t[1]+".blah"` End""") keys = "test" + EX + "ho" wanted = "ho ho.blah End" class PythonCodeOld_ReferencePlaceholderBefore(_VimTest): snippets = ("test", """`!p res = len(t[1])*"#"`\n${1:some text}""") keys = "test" + EX + "Hallo Welt" wanted = "##########\nHallo Welt" class PythonCodeOld_TransformedBeforeMultiLine(_VimTest): snippets = ("test", """${1/.+/egal/m} ${1:`!p res = "Hallo"`} End""") keys = "test" + EX wanted = "egal Hallo End" class PythonCodeOld_IndentedMultiline(_VimTest): snippets = ("test", """start `!p a = 1 b = 2 if b > a: res = "b isbigger a" else: res = "a isbigger b"` end""") keys = " test" + EX wanted = " start b isbigger a end" # End: Deprecated Implementation #}}} # New Implementation {{{# class PythonCode_UseNewOverOld(_VimTest): snippets = ("test", """hi `!p res = "Old" snip.rv = "New"` End""") keys = "test" + EX wanted = "hi New End" class PythonCode_SimpleExample(_VimTest): snippets = ("test", """hi `!p snip.rv = "Hallo"` End""") keys = "test" + EX wanted = "hi Hallo End" class PythonCode_SimpleExample_ReturnValueIsEmptyString(_VimTest): snippets = ("test", """hi`!p snip.rv = ""`End""") keys = "test" + EX wanted = "hiEnd" class PythonCode_ReferencePlaceholder(_VimTest): snippets = ("test", """${1:hi} `!p snip.rv = t[1]+".blah"` End""") keys = "test" + EX + "ho" wanted = "ho ho.blah End" class PythonCode_ReferencePlaceholderBefore(_VimTest): snippets = ("test", """`!p snip.rv = len(t[1])*"#"`\n${1:some text}""") keys = "test" + EX + "Hallo Welt" wanted = "##########\nHallo Welt" class PythonCode_TransformedBeforeMultiLine(_VimTest): snippets = ("test", """${1/.+/egal/m} ${1:`!p snip.rv = "Hallo"`} End""") keys = "test" + EX wanted = "egal Hallo End" class PythonCode_MultilineIndented(_VimTest): snippets = ("test", """start `!p a = 1 b = 2 if b > a: snip.rv = "b isbigger a" else: snip.rv = "a isbigger b"` end""") keys = " test" + EX wanted = " start b isbigger a end" class PythonCode_SimpleAppend(_VimTest): snippets = ("test", """hi `!p snip.rv = "Hallo1" snip += "Hallo2"` End""") keys = "test" + EX wanted = "hi Hallo1\nHallo2 End" class PythonCode_MultiAppend(_VimTest): snippets = ("test", """hi `!p snip.rv = "Hallo1" snip += "Hallo2" snip += "Hallo3"` End""") keys = "test" + EX wanted = "hi Hallo1\nHallo2\nHallo3 End" class PythonCode_MultiAppendSimpleIndent(_VimTest): snippets = ("test", """hi `!p snip.rv="Hallo1" snip += "Hallo2" snip += "Hallo3"` End""") keys = """ test""" + EX wanted = """ hi Hallo1 Hallo2 Hallo3 End""" class PythonCode_SimpleMkline(_VimTest): snippets = ("test", r"""hi `!p snip.rv="Hallo1\n" snip.rv += snip.mkline("Hallo2") + "\n" snip.rv += snip.mkline("Hallo3")` End""") keys = """ test""" + EX wanted = """ hi Hallo1 Hallo2 Hallo3 End""" class PythonCode_MultiAppendShift(_VimTest): snippets = ("test", r"""hi `!p snip.rv="i1" snip += "i1" snip >> 1 snip += "i2" snip << 2 snip += "i0" snip >> 3 snip += "i3"` End""") keys = """ test""" + EX wanted = """ hi i1 i1 i2 i0 i3 End""" class PythonCode_MultiAppendShiftMethods(_VimTest): snippets = ("test", r"""hi `!p snip.rv="i1\n" snip.rv += snip.mkline("i1\n") snip.shift(1) snip.rv += snip.mkline("i2\n") snip.unshift(2) snip.rv += snip.mkline("i0\n") snip.shift(3) snip.rv += snip.mkline("i3")` End""") keys = """ test""" + EX wanted = """ hi i1 i1 i2 i0 i3 End""" class PythonCode_ResetIndent(_VimTest): snippets = ("test", r"""hi `!p snip.rv="i1" snip >> 1 snip += "i2" snip.reset_indent() snip += "i1" snip << 1 snip += "i0" snip.reset_indent() snip += "i1"` End""") keys = """ test""" + EX wanted = """ hi i1 i2 i1 i0 i1 End""" class PythonCode_IndentEtSw(_VimTest): def _extra_options_pre_init(self, vim_config): vim_config.append("set sw=3") vim_config.append("set expandtab") snippets = ("test", r"""hi `!p snip.rv = "i1" snip >> 1 snip += "i2" snip << 2 snip += "i0" snip >> 1 snip += "i1" ` End""") keys = """ test""" + EX wanted = """ hi i1 i2 i0 i1 End""" class PythonCode_IndentEtSwOffset(_VimTest): def _extra_options_pre_init(self, vim_config): vim_config.append("set sw=3") vim_config.append("set expandtab") snippets = ("test", r"""hi `!p snip.rv = "i1" snip >> 1 snip += "i2" snip << 2 snip += "i0" snip >> 1 snip += "i1" ` End""") keys = """ test""" + EX wanted = """ hi i1 i2 i0 i1 End""" class PythonCode_IndentNoetSwTs(_VimTest): def _extra_options_pre_init(self, vim_config): vim_config.append("set sw=3") vim_config.append("set ts=4") snippets = ("test", r"""hi `!p snip.rv = "i1" snip >> 1 snip += "i2" snip << 2 snip += "i0" snip >> 1 snip += "i1" ` End""") keys = """ test""" + EX wanted = """ hi i1 \t i2 i0 i1 End""" # Test using 'opt' class PythonCode_OptExists(_VimTest): def _extra_options_pre_init(self, vim_config): vim_config.append('let g:UStest="yes"') snippets = ("test", r"""hi `!p snip.rv = snip.opt("g:UStest") or "no"` End""") keys = """test""" + EX wanted = """hi yes End""" class PythonCode_OptNoExists(_VimTest): snippets = ("test", r"""hi `!p snip.rv = snip.opt("g:UStest") or "no"` End""") keys = """test""" + EX wanted = """hi no End""" class PythonCode_IndentProblem(_VimTest): # A test case which is likely related to bug 719649 snippets = ("test", r"""hi `!p snip.rv = "World" ` End""") keys = " " * 8 + "test" + EX # < 8 works. wanted = """ hi World End""" class PythonCode_TrickyReferences(_VimTest): snippets = ("test", r"""${2:${1/.+/egal/}} ${1:$3} ${3:`!p snip.rv = "hi"`}""") keys = "ups test" + EX wanted = "ups egal hi hi" # locals class PythonCode_Locals(_VimTest): snippets = ("test", r"""hi `!p a = "test" snip.rv = "nothing"` `!p snip.rv = a ` End""") keys = """test""" + EX wanted = """hi nothing test End""" class PythonCode_LongerTextThanSource_Chars(_VimTest): snippets = ("test", r"""hi`!p snip.rv = "a" * 100`end""") keys = """test""" + EX + "ups" wanted = "hi" + 100*"a" + "endups" class PythonCode_LongerTextThanSource_MultiLine(_VimTest): snippets = ("test", r"""hi`!p snip.rv = "a" * 100 + '\n'*100 + "a"*100`end""") keys = """test""" + EX + "ups" wanted = "hi" + 100*"a" + 100*"\n" + 100*"a" + "endups" class PythonCode_AccessKilledTabstop_OverwriteSecond(_VimTest): snippets = ("test", r"`!p snip.rv = t[2].upper()`${1:h${2:welt}o}`!p snip.rv = t[2].upper()`") keys = "test" + EX + JF + "okay" wanted = "OKAYhokayoOKAY" class PythonCode_AccessKilledTabstop_OverwriteFirst(_VimTest): snippets = ("test", r"`!p snip.rv = t[2].upper()`${1:h${2:welt}o}`!p snip.rv = t[2].upper()`") keys = "test" + EX + "aaa" wanted = "aaa" class PythonVisual_NoVisualSelection_Ignore(_VimTest): snippets = ("test", "h`!p snip.rv = snip.v.mode + snip.v.text`b") keys = "test" + EX + "abc" wanted = "hbabc" class PythonVisual_SelectOneWord(_VimTest): snippets = ("test", "h`!p snip.rv = snip.v.mode + snip.v.text`b") keys = "blablub" + ESC + "0v6l" + EX + "test" + EX wanted = "hvblablubb" class PythonVisual_LineSelect_Simple(_VimTest): snippets = ("test", "h`!p snip.rv = snip.v.mode + snip.v.text`b") keys = "hello\nnice\nworld" + ESC + "Vkk" + EX + "test" + EX wanted = "hVhello\nnice\nworld\nb" # Tests for https://bugs.launchpad.net/bugs/1259349 class Python_WeirdScoping_Error(_VimTest): snippets = ("test", "h`!p import re; snip.rv = '%i' % len([re.search for i in 'aiiia'])`b") keys = "test" + EX wanted = "h5b" # End: New Implementation #}}} # End: PythonCode Interpolation #}}}