patch 8.1.0485: term_start() does not check if directory is accessible
Problem: term_start() does not check if directory is accessible.
Solution: Add mch_access() call. (Jason Franklin)
diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim
index b82dae1..235cd31 100644
--- a/src/testdir/test_terminal.vim
+++ b/src/testdir/test_terminal.vim
@@ -478,6 +478,28 @@
call delete('Xdir', 'rf')
endfunc
+func Test_terminal_cwd_failure()
+ " Case 1: Provided directory is not actually a directory. Attempt to make
+ " the file executable as well.
+ call writefile([], 'Xfile')
+ call setfperm('Xfile', 'rwx------')
+ call assert_fails("call term_start(&shell, {'cwd': 'Xfile'})", 'E475:')
+ call delete('Xfile')
+
+ " Case 2: Directory does not exist.
+ call assert_fails("call term_start(&shell, {'cwd': 'Xdir'})", 'E475:')
+
+ " Case 3: Directory exists but is not accessible.
+ call mkdir('Xdir', '', '0600')
+ " return early if the directory permissions could not be set properly
+ if getfperm('Xdir')[2] == 'x'
+ call delete('Xdir', 'rf')
+ return
+ endif
+ call assert_fails("call term_start(&shell, {'cwd': 'Xdir'})", 'E475:')
+ call delete('Xdir', 'rf')
+endfunc
+
func Test_terminal_servername()
if !has('clientserver')
return