diff --git a/src/testdir/README.txt b/src/testdir/README.txt
index 6cdf12f..7aa185f 100644
--- a/src/testdir/README.txt
+++ b/src/testdir/README.txt
@@ -35,6 +35,12 @@
 - See the start of runtest.vim for more help.
 
 
+TO ADD A SCREEN DUMP TEST:
+
+Mostly the same as writing a new style test.  Additonally, see help on
+"terminal-dumptest".  Put the reference dump in "dumps/Test_func_name.dump".
+
+
 TO ADD AN OLD STYLE TEST:
 
 1) Create test_<subject>.in and test_<subject>.ok files.
diff --git a/src/testdir/dumps/Test_syntax_c_01.dump b/src/testdir/dumps/Test_syntax_c_01.dump
new file mode 100644
index 0000000..8cb0439
--- /dev/null
+++ b/src/testdir/dumps/Test_syntax_c_01.dump
@@ -0,0 +1,20 @@
+|/+0#0000e05#ffffff16|*| |c|o|m@1|e|n|t| |l|i|n|e| |a|t| |t|h|e| |t|o|p| |*|/| +0#0000001&@45
+| @1|i+0#00e0003&|n|t| +0#0000001&@69
+|m|a|i|n|(|i+0#00e0003&|n|t| +0#0000001&|a|r|g|c|,| |c+0#00e0003&|h|a|r| +0#0000001&|*@1|a|r|g|v|)|/+0#0000e05&@1| |a|n|o|t|h|e|r| |c|o|m@1|e|n|t| +0#0000001&@29
+|{| @73
+|#+0#e000e06&|i|f| |0| +0#0000001&@69
+| +0#0000e05&@2|i|n|t| @2|n|o|t|_|u|s|e|d|;| +0#0000001&@56
+|#+0#e000e06&|e|l|s|e| +0#0000001&@69
+| @2|i+0#00e0003&|n|t| +0#0000001&@2|u|s|e|d|;| @60
+|#+0#e000e06&|e|n|d|i|f| +0#0000001&@68
+| @2|p|r|i|n|t|f|(|"+0#e000002&|J|u|s|t| |a|n| |e|x|a|m|p|l|e| |p|i|e|c|e| |o|f| |C| |c|o|d|e|\+0#e000e06&|n|"+0#e000002&|)+0#0000001&|;| @27
+| @2|r+0#af5f00255&|e|t|u|r|n| +0#0000001&|0+0#e000002&|x|0|f@1|;+0#0000001&| @58
+|}| @73
+| @2|s+0#00e0003&|t|a|t|i|c| +0#0000001&|v+0#00e0003&|o|i|d| +0#0000001&@60
+|m|y|F|u|n|c|t|i|o|n|(|c+0#00e0003&|o|n|s|t| +0#0000001&|d+0#00e0003&|o|u|b|l|e| +0#0000001&|c|o|u|n|t|,| |s+0#00e0003&|t|r|u|c|t| +0#0000001&|n|o|t|h|i|n|g|,| |l+0#00e0003&|o|n|g| +0#0000001&|t|h|e|r|e|)| |{| @14
+| @1|/+0#0000e05&@1| |1+0#e000002&|2|3|:+0#0000e05&| |n|o|t|h|i|n|g| |t|o| |r|e|a|d| |h|e|r|e| +0#0000001&@44
+| @1|f+0#af5f00255&|o|r| +0#0000001&|(|i+0#00e0003&|n|t| +0#0000001&|i| |=| |0+0#e000002&|;+0#0000001&| |i| |<| |c|o|u|n|t|;| |+@1|i|)| |{| @39
+| @3|b+0#af5f00255&|r|e|a|k|;+0#0000001&| @64
+| @1|}| @71
+|}| @73
+|"|X|t|e|s|t|.|c|"| |1|9|L|,| |3|6|4|C| @37|1|,|1| @10|A|l@1| 
diff --git a/src/testdir/screendump.vim b/src/testdir/screendump.vim
new file mode 100644
index 0000000..5131b93
--- /dev/null
+++ b/src/testdir/screendump.vim
@@ -0,0 +1,65 @@
+" Functions shared by tests making screen dumps.
+
+" Only load this script once.
+if exists('*RunVimInTerminal')
+  finish
+endif
+
+source shared.vim
+
+" Run Vim with "arguments" in a new terminal window.
+" By default uses a size of 20 lines and 75 columns.
+" Returns the buffer number of the terminal.
+"
+" Options is a dictionary (not used yet).
+func RunVimInTerminal(arguments, options)
+  " Make a horizontal and vertical split, so that we can get exactly the right
+  " size terminal window.  Works only when we currently have one window.
+  call assert_equal(1, winnr('$'))
+  split
+  vsplit
+
+  " Always doo this with 256 colors and a light background.
+  set t_Co=256
+  hi Normal ctermfg=0 ctermbg=15
+
+  let cmd = GetVimCommandClean()
+  let cmd .= ' ' . a:arguments
+  let buf = term_start(cmd, {'curwin': 1, 'term_rows': 20, 'term_cols': 75})
+  call assert_equal([20, 75], term_getsize(buf))
+
+  return buf
+endfunc
+
+" Stop a Vim running in terminal buffer "buf".
+func StopVimInTerminal(buf)
+  call assert_equal("running", term_getstatus(a:buf))
+  call term_sendkeys(a:buf, ":qa!\<cr>")
+  call WaitFor('term_getstatus(' . a:buf . ') == "finished"')
+  only!
+endfunc
+
+" Verify that Vim running in terminal buffer "buf" matches the screen dump.
+" The file name used is "dumps/{filename}.dump".
+" Will wait for up to a second for the screen dump to match.
+func VerifyScreenDump(buf, filename)
+  let reference = 'dumps/' . a:filename . '.dump'
+  let testfile = a:filename . '.dump.failed'
+
+  let i = 0
+  while 1
+    call delete(testfile)
+    call term_dumpwrite(a:buf, testfile)
+    if readfile(reference) == readfile(testfile)
+      call delete(testfile)
+      break
+    endif
+    if i == 100
+      " Leave the test file around for inspection.
+      call assert_report('See dump file difference: call term_dumpdiff("' . testfile . '", "' . reference . '")')
+      break
+    endif
+    sleep 10m
+    let i += 1
+  endwhile
+endfunc
diff --git a/src/testdir/shared.vim b/src/testdir/shared.vim
index 8042428..b16fdce 100644
--- a/src/testdir/shared.vim
+++ b/src/testdir/shared.vim
@@ -178,17 +178,20 @@
 " The Makefile writes it as the first line in the "vimcmd" file.
 func GetVimProg()
   if !filereadable('vimcmd')
-    return ''
+    " Assume the script was sourced instead of running "make".
+    return '../vim'
   endif
   return readfile('vimcmd')[0]
 endfunc
 
 " Get the command to run Vim, with -u NONE and --not-a-term arguments.
 " If there is an argument use it instead of "NONE".
-" Returns an empty string on error.
 func GetVimCommand(...)
   if !filereadable('vimcmd')
-    return ''
+    echo 'Cannot read the "vimcmd" file, falling back to ../vim.'
+    let lines = ['../vim']
+  else
+    let lines = readfile('vimcmd')
   endif
   if a:0 == 0
     let name = 'NONE'
@@ -199,7 +202,6 @@
   " "vimcmd" file, including environment options.
   " Other Makefiles just write the executable in the first line, so fall back
   " to that if there is no second line.
-  let lines = readfile('vimcmd')
   let cmd = get(lines, 1, lines[0])
   let cmd = substitute(cmd, '-u \f\+', '-u ' . name, '')
   if cmd !~ '-u '. name
@@ -210,6 +212,14 @@
   return cmd
 endfunc
 
+" Get the command to run Vim, with --clean.
+func GetVimCommandClean()
+  let cmd = GetVimCommand()
+  let cmd = substitute(cmd, '-u NONE', '--clean', '')
+  let cmd = substitute(cmd, '--not-a-term', '', '')
+  return cmd
+endfunc
+
 " Run Vim, using the "vimcmd" file and "-u NORC".
 " "before" is a list of Vim commands to be executed before loading plugins.
 " "after" is a list of Vim commands to be executed after loading plugins.
diff --git a/src/testdir/test_syntax.vim b/src/testdir/test_syntax.vim
index 33d7203..e60bb52 100644
--- a/src/testdir/test_syntax.vim
+++ b/src/testdir/test_syntax.vim
@@ -5,6 +5,9 @@
 endif
 
 source view_util.vim
+if has('terminal')
+  source screendump.vim
+endif
 
 func GetSyntaxItem(pat)
   let c = ''
@@ -497,7 +500,7 @@
   bw!
 endfunc
 
-fun Test_synstack_synIDtrans()
+func Test_synstack_synIDtrans()
   new
   setfiletype c
   syntax on
@@ -520,3 +523,36 @@
   syn clear
   bw!
 endfunc
+
+" Check highlighting for a small piece of C code with a screen dump.
+func Test_syntax_c()
+  if !has('terminal')
+    return
+  endif
+  call writefile([
+	\ '/* comment line at the top */',
+	\ '  int',
+	\ 'main(int argc, char **argv)// another comment',
+	\ '{',
+	\ '#if 0',
+	\ '   int   not_used;',
+	\ '#else',
+	\ '   int   used;',
+	\ '#endif',
+	\ '   printf("Just an example piece of C code\n");',
+	\ '   return 0x0ff;',
+	\ '}',
+	\ '   static void',
+	\ 'myFunction(const double count, struct nothing, long there) {',
+	\ '  // 123: nothing to read here',
+	\ '  for (int i = 0; i < count; ++i) {',
+	\ '    break;',
+	\ '  }',
+	\ '}',
+	\ ], 'Xtest.c')
+  let buf = RunVimInTerminal('Xtest.c', {})
+  call VerifyScreenDump(buf, 'Test_syntax_c_01')
+  call StopVimInTerminal(buf)
+
+  call delete('Xtest.c')
+endfun
