patch 8.0.1595: no autocommand triggered before exiting

Problem:    No autocommand triggered before exiting.
Solution:   Add the ExitPre autocommand event.
diff --git a/src/testdir/test_exit.vim b/src/testdir/test_exit.vim
new file mode 100644
index 0000000..8f02fd2
--- /dev/null
+++ b/src/testdir/test_exit.vim
@@ -0,0 +1,57 @@
+" Tests for exiting Vim.
+
+source shared.vim
+
+func Test_exiting()
+  let after = [
+	\ 'au QuitPre * call writefile(["QuitPre"], "Xtestout")',
+	\ 'au ExitPre * call writefile(["ExitPre"], "Xtestout", "a")',
+	\ 'quit',
+	\ ]
+  if RunVim([], after, '')
+    call assert_equal(['QuitPre', 'ExitPre'], readfile('Xtestout'))
+  endif
+  call delete('Xtestout')
+
+  let after = [
+	\ 'au QuitPre * call writefile(["QuitPre"], "Xtestout")',
+	\ 'au ExitPre * call writefile(["ExitPre"], "Xtestout", "a")',
+	\ 'help',
+	\ 'wincmd w',
+	\ 'quit',
+	\ ]
+  if RunVim([], after, '')
+    call assert_equal(['QuitPre', 'ExitPre'], readfile('Xtestout'))
+  endif
+  call delete('Xtestout')
+
+  let after = [
+	\ 'au QuitPre * call writefile(["QuitPre"], "Xtestout")',
+	\ 'au ExitPre * call writefile(["ExitPre"], "Xtestout", "a")',
+	\ 'split',
+	\ 'new',
+	\ 'qall',
+	\ ]
+  if RunVim([], after, '')
+    call assert_equal(['QuitPre', 'ExitPre'], readfile('Xtestout'))
+  endif
+  call delete('Xtestout')
+
+  let after = [
+	\ 'au QuitPre * call writefile(["QuitPre"], "Xtestout", "a")',
+	\ 'au ExitPre * call writefile(["ExitPre"], "Xtestout", "a")',
+	\ 'augroup nasty',
+	\ '  au ExitPre * split',
+	\ 'augroup END',
+	\ 'quit',
+	\ 'augroup nasty',
+	\ '  au! ExitPre',
+	\ 'augroup END',
+	\ 'quit',
+	\ ]
+  if RunVim([], after, '')
+    call assert_equal(['QuitPre', 'ExitPre', 'QuitPre', 'ExitPre'],
+	  \ readfile('Xtestout'))
+  endif
+  call delete('Xtestout')
+endfunc