summaryrefslogtreecommitdiff
path: root/src/testdir/test_terminal_fail.vim
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-09-09 18:16:43 +0200
committerBram Moolenaar <Bram@vim.org>2017-09-09 18:16:43 +0200
commit5b5adf5b9cd226d775643872e65c62674d6ada95 (patch)
tree4b06972c0929cd46fd955b5a25e872727ffe450d /src/testdir/test_terminal_fail.vim
parent9d18961323a2a5c3b609c98ce0d78613c71f3532 (diff)
downloadvim-git-5b5adf5b9cd226d775643872e65c62674d6ada95.tar.gz
patch 8.0.1083: leaking memory in input part of channelv8.0.1083
Problem: Leaking memory in input part of channel. Solution: Clear the input part of channel. Free the entry. Move failing command test to a separate file to avoid bogus leak reports clouding tests that should not leak.
Diffstat (limited to 'src/testdir/test_terminal_fail.vim')
-rw-r--r--src/testdir/test_terminal_fail.vim21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/testdir/test_terminal_fail.vim b/src/testdir/test_terminal_fail.vim
new file mode 100644
index 000000000..aad4b98cb
--- /dev/null
+++ b/src/testdir/test_terminal_fail.vim
@@ -0,0 +1,21 @@
+" This test is in a separate file, because it usually causes reports for memory
+" leaks under valgrind. That is because when fork/exec fails memory is not
+" freed. Since the process exists right away it's not a real leak.
+
+if !has('terminal')
+ finish
+endif
+
+source shared.vim
+
+func Test_terminal_redir_fails()
+ if has('unix')
+ let buf = term_start('xyzabc', {'err_io': 'file', 'err_name': 'Xfile'})
+ call term_wait(buf)
+ call WaitFor('len(readfile("Xfile")) > 0')
+ call assert_match('executing job failed', readfile('Xfile')[0])
+ call WaitFor('!&modified')
+ call delete('Xfile')
+ bwipe
+ endif
+endfunc