tests: Upgrade vimrunner and drop the now unnecessary hacks

This makes the tests less brittle and potentially also faster.
This commit is contained in:
Tomas Janousek 2020-07-01 18:29:42 +02:00 committed by Tomas Babej
parent 4efe2c83d6
commit 14c0268438
8 changed files with 53 additions and 202 deletions

View file

@ -28,7 +28,10 @@ RUN cd /root/.vim/bundle; git clone https://github.com/vimwiki/vimwiki.git
RUN cd /root/.vim/bundle/vimwiki/; git checkout dev
# Setup taskwiki
RUN pip3 install nose pytest pytest-xdist coveralls coverage vimrunner
RUN pip3 install \
pytest pytest-xdist \
coveralls coverage \
https://github.com/liskin/vimrunner-python/archive/8c19ff88050c09236e7519425bfae33c687483df.zip
ADD requirements.txt requirements.txt
RUN pip3 install -r requirements.txt
RUN mkdir /root/.vim/bundle/taskwiki

View file

@ -32,15 +32,9 @@ class IntegrationTest(object):
assert result == u"0"
def read_buffer(self, start=0, end=1000):
# ensure that vim isn't stuck stuck showing an error message
# (read_buffer would ignore this and just return '')
buf = self.client.get_active_buffer()
assert buf
return self.client.read_buffer(
six.text_type(start+1),
six.text_type(end+1),
buf=buf
six.text_type(end+1)
).splitlines()
def generate_data(self):
@ -100,9 +94,8 @@ class IntegrationTest(object):
if not self.client:
return
self.client.normal(':qa!<Enter>') # unlike .quit() this also works in insert/visual
self.client.quit()
self.client = None
sleep(0.1) # quit/normal use --remote-send which doesn't wait
subprocess.call(['pkill', '-f', 'gvim.*--servername ' + server_name])
sleep(0.2) # Killing takes some time

View file

@ -1,6 +1,5 @@
# -*- coding: utf-8 -*-
from tests.base import IntegrationTest
from time import sleep
class TestChooseProject(IntegrationTest):
@ -22,15 +21,10 @@ class TestChooseProject(IntegrationTest):
def execute(self):
self.client.normal('2gg')
sleep(1)
self.command("TaskWikiChooseProject")
sleep(1)
self.client.normal('5gg')
sleep(0.5)
self.client.feedkeys("\\<CR>")
sleep(1)
self.client.eval('0') # wait for command completion
for task in self.tasks:
task.refresh()
@ -58,15 +52,10 @@ class TestChooseProjectUnset(IntegrationTest):
def execute(self):
self.client.normal('1gg')
sleep(0.5)
self.command("TaskWikiChooseProject")
sleep(0.5)
self.client.normal('4gg')
sleep(0.5)
self.client.feedkeys("\\<CR>")
sleep(0.5)
self.client.eval('0') # wait for command completion
for task in self.tasks:
task.refresh()
@ -94,15 +83,10 @@ class TestChooseProjectCanceled(IntegrationTest):
def execute(self):
self.client.normal('1gg')
sleep(0.5)
self.command("TaskWikiChooseProject")
sleep(0.5)
self.client.normal('4gg')
sleep(0.5)
self.client.feedkeys("q")
sleep(0.5)
self.client.eval('0') # wait for command completion
for task in self.tasks:
task.refresh()
@ -130,15 +114,10 @@ class TestChooseTag(IntegrationTest):
def execute(self):
self.client.normal('2gg')
sleep(1)
self.command("TaskWikiChooseTag")
sleep(1)
self.client.normal('4gg')
sleep(0.5)
self.client.feedkeys("\\<CR>")
sleep(1)
self.client.eval('0') # wait for command completion
for task in self.tasks:
task.refresh()
@ -166,15 +145,10 @@ class TestChooseTagCancelled(IntegrationTest):
def execute(self):
self.client.normal('1gg')
sleep(0.5)
self.command("TaskWikiChooseTag")
sleep(0.5)
self.client.normal('4gg')
sleep(0.5)
self.client.feedkeys("q")
sleep(0.5)
self.client.eval('0') # wait for command completion
for task in self.tasks:
task.refresh()
@ -202,16 +176,10 @@ class TestChooseTagNoSelected(IntegrationTest):
def execute(self):
self.client.normal('1gg')
sleep(0.5)
self.command("TaskWikiChooseTag")
sleep(0.5)
# No tak on the 5th row
self.client.normal('5gg')
sleep(0.5)
self.client.normal('5gg') # No task on the 5th row
self.client.feedkeys("\\<CR>")
sleep(0.5)
self.client.eval('0') # wait for command completion
for task in self.tasks:
task.refresh()
@ -239,15 +207,10 @@ class TestChooseProjectUnicode(IntegrationTest):
def execute(self):
self.client.normal('2gg')
sleep(1)
self.command("TaskWikiChooseProject")
sleep(1)
self.client.normal('5gg')
sleep(0.5)
self.client.feedkeys("\\<CR>")
sleep(1)
self.client.eval('0') # wait for command completion
for task in self.tasks:
task.refresh()
@ -275,15 +238,10 @@ class TestChooseTagUnicode(IntegrationTest):
def execute(self):
self.client.normal('2gg')
sleep(1)
self.command("TaskWikiChooseTag")
sleep(1)
self.client.normal('4gg')
sleep(0.5)
self.client.feedkeys("\\<CR>")
sleep(1)
self.client.eval('0') # wait for command completion
for task in self.tasks:
task.refresh()

View file

@ -1,5 +1,4 @@
from time import sleep
from tests.base import IntegrationTest, MultipleSourceTest
from tests.base import IntegrationTest
class TestSimpleColorAssigment(IntegrationTest):

View file

@ -1,6 +1,5 @@
# -*- coding: utf-8 -*-
from tests.base import IntegrationTest
from time import sleep
class TestDefaultMapping(IntegrationTest):
@ -22,19 +21,11 @@ class TestDefaultMapping(IntegrationTest):
def execute(self):
self.client.normal('1gg')
sleep(0.5)
self.client.feedkeys(r'\\td')
sleep(0.5)
self.client.normal('2gg')
sleep(0.5)
self.client.normal('V')
sleep(0.5)
self.client.feedkeys(r'\\td')
sleep(0.5)
self.client.eval('0') # wait for command completion
for task in self.tasks:
task.refresh()
@ -63,19 +54,11 @@ class TestSuppressedMapping(IntegrationTest):
def execute(self):
self.client.normal('1gg')
sleep(0.5)
self.client.feedkeys(r'\\td')
sleep(0.5)
self.client.normal('2gg')
sleep(0.5)
self.client.normal('V')
sleep(0.5)
self.client.feedkeys(r'\\td')
sleep(0.5)
self.client.eval('0') # wait for command completion
for task in self.tasks:
task.refresh()
@ -104,19 +87,11 @@ class TestCustomMapping(IntegrationTest):
def execute(self):
self.client.normal('1gg')
sleep(0.5)
self.client.feedkeys(',td')
sleep(0.5)
self.client.normal('2gg')
sleep(0.5)
self.client.normal('V')
sleep(0.5)
self.client.feedkeys(',td')
sleep(0.5)
self.client.eval('0') # wait for command completion
for task in self.tasks:
task.refresh()
@ -146,19 +121,11 @@ class TestColonRemap(IntegrationTest):
self.command('vnoremap : ;')
self.client.normal('1gg')
sleep(0.5)
self.client.feedkeys(r'\\td')
sleep(0.5)
self.client.normal('2gg')
sleep(0.5)
self.client.normal('V')
sleep(0.5)
self.client.feedkeys(r'\\td')
sleep(0.5)
self.client.eval('0') # wait for command completion
for task in self.tasks:
task.refresh()
@ -192,19 +159,11 @@ class TestColonRemapWithCustomMap(IntegrationTest):
self.command('vnoremap : ;')
self.client.normal('1gg')
sleep(0.5)
self.client.feedkeys(',td')
sleep(0.5)
self.client.normal('2gg')
sleep(0.5)
self.client.normal('V')
sleep(0.5)
self.client.feedkeys(',td')
sleep(0.5)
self.client.eval('0') # wait for command completion
for task in self.tasks:
task.refresh()

View file

@ -1,5 +1,4 @@
from tests.base import MultiSyntaxIntegrationTest
from time import sleep
class TestPresetDefaults(MultiSyntaxIntegrationTest):
@ -235,7 +234,6 @@ class TestPresetDefaultPreservesTags(MultiSyntaxIntegrationTest):
def execute(self):
self.command("w", regex="written$", lines=1)
sleep(0.5)
# Make sure both tags were preserved
task = self.tw.tasks.pending()[0]

View file

@ -3,7 +3,6 @@ import re
from datetime import datetime
from tasklib import local_zone
from tests.base import IntegrationTest
from time import sleep
class TestAnnotateAction(IntegrationTest):
@ -43,12 +42,9 @@ class TestAnnotateActionManually(IntegrationTest):
]
def execute(self):
self.client.feedkeys(":TaskWikiAnnotate")
self.client.type("<Enter>")
sleep(0.5)
self.client.feedkeys("This is typed annotation.")
self.client.type("<Enter>")
sleep(0.5)
self.client.feedkeys(":TaskWikiAnnotate\\<Enter>")
self.client.feedkeys("This is typed annotation.\\<Enter>")
self.client.eval('0') # wait for command completion
self.tasks[0].refresh()
annotation = self.tasks[0]['annotations']
@ -70,11 +66,9 @@ class TestAnnotateActionManuallyAbort(IntegrationTest):
def execute(self):
# Start entering the annotation but bail out
self.client.feedkeys(":TaskWikiAnnotate")
self.client.type("<Enter>")
sleep(0.5)
self.client.feedkeys(":TaskWikiAnnotate\\<Enter>")
self.client.type("<Esc>")
sleep(0.5)
self.client.eval('0') # wait for command completion
# Refresh and check no annotation has been added
self.tasks[0].refresh()
@ -124,10 +118,8 @@ class TestAnnotateActionRange(IntegrationTest):
def execute(self):
self.client.type('V2gg') # Go to the second line
self.client.feedkeys(":TaskWikiAnnotate This is annotation.")
self.client.type('<Enter>')
sleep(2)
self.client.feedkeys(":TaskWikiAnnotate This is annotation.\\<Enter>")
self.client.eval('0') # wait for command completion
for task in self.tasks:
task.refresh()
@ -222,7 +214,6 @@ class TestDeleteActionMoved(IntegrationTest):
"TaskWikiDelete",
regex="Task \"test task 2\" deleted.$",
lines=1)
sleep(1)
for task in self.tasks:
task.refresh()
@ -248,12 +239,9 @@ class TestDeleteActionRange(IntegrationTest):
def execute(self):
self.client.normal('1gg')
sleep(1)
self.client.normal('VG')
sleep(1)
self.client.feedkeys(":TaskWikiDelete")
self.client.type('<Enter>')
sleep(1)
self.client.feedkeys(":TaskWikiDelete\\<Enter>")
self.client.eval('0') # wait for command completion
for task in self.tasks:
task.refresh()
@ -341,7 +329,7 @@ class TestInfoActionTriggeredByEnter(IntegrationTest):
def execute(self):
self.client.type('1gg')
self.client.feedkeys("\\<CR>")
sleep(0.5)
self.client.eval('0') # wait for command completion
assert self.py("print(vim.current.buffer)", silent=False).startswith("<buffer info")
output = '\n'.join(self.read_buffer())
@ -371,7 +359,7 @@ class TestInfoActionNotTriggeredByEnterOnLink(IntegrationTest):
self.client.type('1gg')
self.client.type('10l')
self.client.feedkeys("\\<CR>")
sleep(0.5)
self.client.eval('0') # wait for command completion
# Make sure we have been sent to a new buffer
output = '\n'.join(self.read_buffer())
@ -422,10 +410,8 @@ class TestInfoActionRange(IntegrationTest):
def execute(self):
self.client.type('V2gg') # Go to the second line
self.client.feedkeys(":TaskWikiInfo")
self.client.type('<Enter>')
sleep(1)
self.client.feedkeys(":TaskWikiInfo\\<Enter>")
self.client.eval('0') # wait for command completion
assert self.py("print(vim.current.buffer)", silent=False).startswith("<buffer info")
output = '\n'.join(self.read_buffer())
@ -506,13 +492,11 @@ class TestLinkActionRange(IntegrationTest):
def execute(self):
self.client.type('V2gg') # Go to the second line
self.client.feedkeys(":TaskWikiLink")
self.client.type('<Enter>')
self.client.feedkeys(":TaskWikiLink\\<Enter>")
self.client.eval('0') # wait for command completion
backlink = "wiki: {0}".format(self.filepath)
sleep(2)
for task in self.tasks:
task.refresh()
@ -628,7 +612,6 @@ class TestStartActionMoved(IntegrationTest):
"TaskWikiStart",
regex="Task \"test task 2\" started.$",
lines=1)
sleep(1)
for task in self.tasks:
task.refresh()
@ -663,12 +646,9 @@ class TestStartActionRange(IntegrationTest):
def execute(self):
self.client.normal('1gg')
sleep(1)
self.client.normal('VG')
sleep(1)
self.client.feedkeys(":TaskWikiStart")
self.client.type('<Enter>')
sleep(1)
self.client.feedkeys(":TaskWikiStart\\<Enter>")
self.client.eval('0') # wait for command completion
for task in self.tasks:
task.refresh()
@ -793,7 +773,6 @@ class TestStopActionMoved(IntegrationTest):
"TaskWikiStop",
regex="Task \"test task 2\" stopped.$",
lines=1)
sleep(1)
for task in self.tasks:
task.refresh()
@ -828,12 +807,9 @@ class TestStopActionRange(IntegrationTest):
def execute(self):
self.client.normal('1gg')
sleep(1)
self.client.normal('VG')
sleep(1)
self.client.feedkeys(":TaskWikiStop")
self.client.type('<Enter>')
sleep(1)
self.client.feedkeys(":TaskWikiStop\\<Enter>")
self.client.eval('0') # wait for command completion
for task in self.tasks:
task.refresh()
@ -976,13 +952,9 @@ class TestModInteractiveAction(IntegrationTest):
]
def execute(self):
self.client.feedkeys(":TaskWikiMod")
sleep(1)
self.client.type('<Enter>')
sleep(1)
self.client.feedkeys("+work")
self.client.type('<Enter>')
sleep(1)
self.client.feedkeys(":TaskWikiMod\\<Enter>")
self.client.feedkeys("+work\\<Enter>")
self.client.eval('0') # wait for command completion
for task in self.tasks:
task.refresh()
@ -1009,13 +981,9 @@ class TestModInteractiveActionRedo(IntegrationTest):
]
def execute(self):
self.client.feedkeys(":TaskWikiMod")
sleep(1)
self.client.type('<Enter>')
sleep(1)
self.client.feedkeys("+work")
self.client.type('<Enter>')
sleep(1)
self.client.feedkeys(":TaskWikiMod\\<Enter>")
self.client.feedkeys("+work\\<Enter>")
self.client.eval('0') # wait for command completion
# Now also modify the second task
self.client.type('j')
@ -1087,8 +1055,6 @@ class TestModActionMoved(IntegrationTest):
regex="Modified 1 task.$",
lines=1)
sleep(1)
for task in self.tasks:
task.refresh()
@ -1115,12 +1081,9 @@ class TestModActionRange(IntegrationTest):
def execute(self):
self.client.normal('1gg')
sleep(1)
self.client.normal('VG')
sleep(1)
self.client.feedkeys(":TaskWikiMod project:Home")
self.client.type('<Enter>')
sleep(1)
self.client.feedkeys(":TaskWikiMod project:Home\\<Enter>")
self.client.eval('0') # wait for command completion
for task in self.tasks:
task.refresh()
@ -1221,7 +1184,6 @@ class TestDoneActionMoved(IntegrationTest):
"TaskWikiDone",
regex="Task \"test task 2\" completed.$",
lines=1)
sleep(1)
for task in self.tasks:
task.refresh()
@ -1256,12 +1218,9 @@ class TestDoneActionRange(IntegrationTest):
def execute(self):
self.client.normal('1gg')
sleep(1)
self.client.normal('VG')
sleep(1)
self.client.feedkeys(":TaskWikiDone")
self.client.type('<Enter>')
sleep(1)
self.client.feedkeys(":TaskWikiDone\\<Enter>")
self.client.eval('0') # wait for command completion
for task in self.tasks:
task.refresh()
@ -1344,12 +1303,8 @@ class TestSortManually(IntegrationTest):
def execute(self):
self.client.normal('1gg')
sleep(0.5)
self.client.normal('VG')
sleep(0.5)
self.client.feedkeys(":TaskWikiSort description-")
self.client.type("<Enter>")
sleep(0.5)
self.client.feedkeys(":TaskWikiSort description-\\<Enter>")
class TestSelectAfterBufferSwitch(IntegrationTest):
@ -1367,17 +1322,11 @@ class TestSelectAfterBufferSwitch(IntegrationTest):
def execute(self):
self.command('w', silent=False)
sleep(0.5)
self.command('split testwiki2.txt', silent=False)
sleep(0.5)
self.command('set filetype=vimwiki')
sleep(0.5)
self.command('q!')
sleep(0.5)
self.client.normal('1gg')
sleep(0.5)
self.command("TaskWikiMod project:Home", regex="Modified 1 task.")
sleep(0.5)
self.tasks[0].refresh()
assert self.tasks[0]['project'] == "Home"

View file

@ -1,7 +1,6 @@
# -*- coding: utf-8 -*-
from datetime import datetime
from tests.base import MultiSyntaxIntegrationTest
from time import sleep
class TestViewportsTaskGeneration(MultiSyntaxIntegrationTest):
@ -274,7 +273,7 @@ class TestViewportInspection(MultiSyntaxIntegrationTest):
self.command("w", regex="written$", lines=1)
self.client.feedkeys('1gg')
self.client.feedkeys(r'\<CR>')
sleep(0.5)
self.client.eval('0') # wait for command completion
assert self.py("print(vim.current.buffer)", regex="<buffer taskwiki.")
@ -308,11 +307,9 @@ class TestViewportInspectionWithVisibleTag(MultiSyntaxIntegrationTest):
def execute(self):
self.command("w", regex="written$", lines=1)
sleep(0.5)
self.client.feedkeys('1gg')
sleep(0.5)
self.client.feedkeys(r'\<CR>')
sleep(0.5)
self.client.eval('0') # wait for command completion
assert self.py("print(vim.current.buffer)", regex="<buffer taskwiki.")
@ -592,13 +589,9 @@ class TestViewportsPreserveHierarchyUponCompletion(MultiSyntaxIntegrationTest):
def execute(self):
self.command("w", regex="written$", lines=1)
sleep(0.5)
self.client.feedkeys('3gg')
sleep(0.5)
self.client.feedkeys(r'\\td')
sleep(0.5)
self.command("w", regex="written$", lines=1)
sleep(0.5)
class TestViewportDefaultPreservesTags(MultiSyntaxIntegrationTest):
@ -615,7 +608,6 @@ class TestViewportDefaultPreservesTags(MultiSyntaxIntegrationTest):
def execute(self):
self.command("w", regex="written$", lines=1)
sleep(0.5)
# Make sure both tags were preserved
task = self.tw.tasks.pending()[0]