diff options
| author | ZyX <kp-pav@yandex.ru> | 2018-03-18 02:38:27 +0300 |
|---|---|---|
| committer | ZyX <kp-pav@yandex.ru> | 2018-03-18 23:51:43 +0300 |
| commit | 1c0a2a39b65ebf47b9d4997ce84f470c5d09d140 (patch) | |
| tree | eb97f33a43872a93088e9bba6bce68b2b9cbb576 /src/nvim/testdir/runnvim.vim | |
| parent | 4e02f1ab871f30d80250537877924d522497493b (diff) | |
| download | rneovim-1c0a2a39b65ebf47b9d4997ce84f470c5d09d140.tar.gz rneovim-1c0a2a39b65ebf47b9d4997ce84f470c5d09d140.tar.bz2 rneovim-1c0a2a39b65ebf47b9d4997ce84f470c5d09d140.zip | |
oldtests: Run old tests in :terminal
Reasoning:
- No need to check for terminal size.
- No need to mess with terminal title.
- Allows old tests to timeout with the rest of the build proceeding.
- Less and less messy output to travis log.
- Opens a path allowing old tests run in parallel. Though last bit needs test
refactoring.
Diffstat (limited to 'src/nvim/testdir/runnvim.vim')
| -rw-r--r-- | src/nvim/testdir/runnvim.vim | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/nvim/testdir/runnvim.vim b/src/nvim/testdir/runnvim.vim new file mode 100644 index 0000000000..396a3a6477 --- /dev/null +++ b/src/nvim/testdir/runnvim.vim @@ -0,0 +1,55 @@ +let s:logger = {'d_events': []} +function s:logger.on_stdout(id, data, event) + call add(self.d_events, [a:event, a:data]) +endfunction +let s:logger.on_stderr = s:logger.on_stdout +function s:logger.on_exit(id, data, event) + call add(self.d_events, [a:event, ['']]) +endfunction + +function Main() + let argc = +$NVIM_TEST_ARGC + let args = [] + for i in range(argc) + call add(args, eval("$NVIM_TEST_ARG" . i)) + endfor + set lines=25 + set columns=80 + enew + let job = termopen(args, s:logger) + let results = jobwait([job], 5 * 60 * 1000) + " TODO(ZyX-I): Get colors + let screen = getline(1, '$') + bwipeout! + let stringified_events = map(s:logger.d_events, + \'v:val[0] . ": " . ' . + \'join(map(v:val[1], '. + \ '''substitute(v:val, '. + \ '"\\v\\C(\\p@!.|\\<)", '. + \ '"\\=printf(\"<%x>\", '. + \ 'char2nr(submatch(0)))", '. + \ '"")''), '. + \ '''\n'')') + call setline(1, [ + \ 'Job exited with code ' . results[0], + \ printf('Screen (%u lines)', len(screen)), + \ repeat('=', 80), + \] + screen + [ + \ repeat('=', 80), + \ printf('Events (%u lines):', len(stringified_events)), + \ repeat('=', 80), + \] + stringified_events + [ + \ repeat('=', 80), + \]) + write + if results[0] != 0 + if results[0] != -1 + call jobstop(job) + endif + cquit + else + qall + endif +endfunction + +call Main() |