diff --git a/src/testdir/test_restricted.vim b/src/testdir/test_restricted.vim
index a29f7c3..46f5e76 100644
--- a/src/testdir/test_restricted.vim
+++ b/src/testdir/test_restricted.vim
@@ -7,97 +7,103 @@
 "  finish
 "endif
 
-func Test_restricted()
-  call Run_restricted_test('!ls', 'E145:')
-endfunc
+func Test_restricted_mode()
+  let lines =<< trim END
+    if has('lua')
+      call assert_fails('lua print("Hello, Vim!")', 'E981:')
+      call assert_fails('luado return "hello"', 'E981:')
+      call assert_fails('luafile somefile', 'E981:')
+      call assert_fails('call luaeval("expression")', 'E145:')
+    endif
 
-func Run_restricted_test(ex_cmd, error)
-  let cmd = GetVimCommand('Xrestricted')
-  if cmd == ''
-    return
+    if has('mzscheme')
+      call assert_fails('mzscheme statement', 'E981:')
+      call assert_fails('mzfile somefile', 'E981:')
+      call assert_fails('call mzeval("expression")', 'E145:')
+    endif
+
+    if has('perl')
+      " TODO: how to make Safe mode fail?
+      " call assert_fails('perl system("ls")', 'E981:')
+      " call assert_fails('perldo system("hello")', 'E981:')
+      " call assert_fails('perlfile somefile', 'E981:')
+      " call assert_fails('call perleval("system(\"ls\")")', 'E145:')
+    endif
+
+    if has('python')
+      call assert_fails('python print "hello"', 'E981:')
+      call assert_fails('pydo return "hello"', 'E981:')
+      call assert_fails('pyfile somefile', 'E981:')
+      call assert_fails('call pyeval("expression")', 'E145:')
+    endif
+
+    if has('python3')
+      call assert_fails('py3 print "hello"', 'E981:')
+      call assert_fails('py3do return "hello"', 'E981:')
+      call assert_fails('py3file somefile', 'E981:')
+      call assert_fails('call py3eval("expression")', 'E145:')
+    endif
+
+    if has('ruby')
+      call assert_fails('ruby print "Hello"', 'E981:')
+      call assert_fails('rubydo print "Hello"', 'E981:')
+      call assert_fails('rubyfile somefile', 'E981:')
+    endif
+
+    if has('tcl')
+      call assert_fails('tcl puts "Hello"', 'E981:')
+      call assert_fails('tcldo puts "Hello"', 'E981:')
+      call assert_fails('tclfile somefile', 'E981:')
+    endif
+
+    if has('clientserver')
+      call assert_fails('let s=remote_peek(10)', 'E145:')
+      call assert_fails('let s=remote_read(10)', 'E145:')
+      call assert_fails('let s=remote_send("vim", "abc")', 'E145:')
+      call assert_fails('let s=server2client(10, "abc")', 'E145:')
+    endif
+
+    if has('terminal')
+      call assert_fails('terminal', 'E145:')
+      call assert_fails('call term_start("vim")', 'E145:')
+      call assert_fails('call term_dumpwrite(1, "Xfile")', 'E145:')
+    endif
+
+    if has('channel')
+      call assert_fails("call ch_logfile('Xlog')", 'E145:')
+      call assert_fails("call ch_open('localhost:8765')", 'E145:')
+    endif
+
+    if has('job')
+      call assert_fails("call job_start('vim')", 'E145:')
+    endif
+
+    if has('libcall')
+      call assert_fails("echo libcall('libc.so', 'getenv', 'HOME')", 'E145:')
+    endif
+    call assert_fails("call rename('a', 'b')", 'E145:')
+    call assert_fails("call delete('Xfile')", 'E145:')
+    call assert_fails("call mkdir('Xdir')", 'E145:')
+    call assert_fails('!ls', 'E145:')
+    call assert_fails('shell', 'E145:')
+    call assert_fails('stop', 'E145:')
+    call assert_fails('suspend', 'E145:')
+    call assert_fails('call system("vim")', 'E145:')
+    call assert_fails('call systemlist("vim")', 'E145:')
+    if has('unix')
+      call assert_fails('cd `pwd`', 'E145:')
+    endif
+
+    call writefile(v:errors, 'Xresult')
+    qa!
+  END
+  call writefile(lines, 'Xrestricted')
+  if RunVim([], [], '-Z --clean -S Xrestricted')
+    call assert_equal([], readfile('Xresult'))
   endif
 
-  " Use a VimEnter autocommand to avoid that the error message is displayed in
-  " a dialog with an OK button.
-  call writefile([
-	\ "func Init()",
-	\ "  silent! " . a:ex_cmd,
-	\ "  call writefile([v:errmsg], 'Xrestrout')",
-	\ "  qa!",
-	\ "endfunc",
-	\ "au VimEnter * call Init()",
-	\ ], 'Xrestricted')
-  call system(cmd . ' -Z')
-  call assert_match(a:error, join(readfile('Xrestrout')))
-
   call delete('Xrestricted')
-  call delete('Xrestrout')
+  call delete('Xresult')
 endfunc
 
-func Test_restricted_lua()
-  if !has('lua')
-    throw 'Skipped: Lua is not supported'
-  endif
-  call Run_restricted_test('lua print("Hello, Vim!")', 'E981:')
-  call Run_restricted_test('luado return "hello"', 'E981:')
-  call Run_restricted_test('luafile somefile', 'E981:')
-  call Run_restricted_test('call luaeval("expression")', 'E145:')
-endfunc
-
-func Test_restricted_mzscheme()
-  if !has('mzscheme')
-    throw 'Skipped: MzScheme is not supported'
-  endif
-  call Run_restricted_test('mzscheme statement', 'E981:')
-  call Run_restricted_test('mzfile somefile', 'E981:')
-  call Run_restricted_test('call mzeval("expression")', 'E145:')
-endfunc
-
-func Test_restricted_perl()
-  if !has('perl')
-    throw 'Skipped: Perl is not supported'
-  endif
-  " TODO: how to make Safe mode fail?
-  " call Run_restricted_test('perl system("ls")', 'E981:')
-  " call Run_restricted_test('perldo system("hello")', 'E981:')
-  " call Run_restricted_test('perlfile somefile', 'E981:')
-  " call Run_restricted_test('call perleval("system(\"ls\")")', 'E145:')
-endfunc
-
-func Test_restricted_python()
-  if !has('python')
-    throw 'Skipped: Python is not supported'
-  endif
-  call Run_restricted_test('python print "hello"', 'E981:')
-  call Run_restricted_test('pydo return "hello"', 'E981:')
-  call Run_restricted_test('pyfile somefile', 'E981:')
-  call Run_restricted_test('call pyeval("expression")', 'E145:')
-endfunc
-
-func Test_restricted_python3()
-  if !has('python3')
-    throw 'Skipped: Python3 is not supported'
-  endif
-  call Run_restricted_test('py3 print "hello"', 'E981:')
-  call Run_restricted_test('py3do return "hello"', 'E981:')
-  call Run_restricted_test('py3file somefile', 'E981:')
-  call Run_restricted_test('call py3eval("expression")', 'E145:')
-endfunc
-
-func Test_restricted_ruby()
-  if !has('ruby')
-    throw 'Skipped: Ruby is not supported'
-  endif
-  call Run_restricted_test('ruby print "Hello"', 'E981:')
-  call Run_restricted_test('rubydo print "Hello"', 'E981:')
-  call Run_restricted_test('rubyfile somefile', 'E981:')
-endfunc
-
-func Test_restricted_tcl()
-  if !has('tcl')
-    throw 'Skipped: Tcl is not supported'
-  endif
-  call Run_restricted_test('tcl puts "Hello"', 'E981:')
-  call Run_restricted_test('tcldo puts "Hello"', 'E981:')
-  call Run_restricted_test('tclfile somefile', 'E981:')
-endfunc
+" vim: shiftwidth=2 sts=2 expandtab
