patch 8.2.1297: when a test fails it's often not easy to see where

Problem:    When a test fails it's often not easy to see what the call stack
            is.
Solution:   Add more entries from the call stack in the exception message.
diff --git a/src/testdir/test_expand_func.vim b/src/testdir/test_expand_func.vim
index 18437b7..41673e5 100644
--- a/src/testdir/test_expand_func.vim
+++ b/src/testdir/test_expand_func.vim
@@ -16,17 +16,47 @@
   return str2nr(expand('<sflnum>'))  
 endfunc
 
-func Test_expand_sfile()
-  call assert_match('test_expand_func\.vim$', s:sfile)
-  call assert_match('^function .*\.\.Test_expand_sfile$', expand('<sfile>'))
+" This test depends on the location in the test file, put it first.
+func Test_expand_sflnum()
+  call assert_equal(5, s:sflnum)
+  call assert_equal(22, str2nr(expand('<sflnum>')))
+
+  " Line-continuation
+  call assert_equal(
+        \ 25,
+        \ str2nr(expand('<sflnum>')))
 
   " Call in script-local function
-  call assert_match('^function .*\.\.Test_expand_sfile\[5\]\.\.<SNR>\d\+_expand_sfile$', s:expand_sfile())
+  call assert_equal(16, s:expand_sflnum())
+
+  " Call in command
+  command Flnum echo expand('<sflnum>')
+  call assert_equal(34, str2nr(trim(execute('Flnum'))))
+  delcommand Flnum
+endfunc
+
+func Test_expand_sfile_and_stack()
+  call assert_match('test_expand_func\.vim$', s:sfile)
+  let expected = 'script .*testdir/runtest.vim\[\d\+\]\.\.function RunTheTest\[\d\+\]\.\.Test_expand_sfile_and_stack$'
+  call assert_match(expected , expand('<sfile>'))
+  call assert_match(expected , expand('<stack>'))
+
+  " Call in script-local function
+  call assert_match('script .*testdir/runtest.vim\[\d\+\]\.\.function RunTheTest\[\d\+\]\.\.Test_expand_sfile_and_stack\[7\]\.\.<SNR>\d\+_expand_sfile$', s:expand_sfile())
 
   " Call in command
   command Sfile echo expand('<sfile>')
-  call assert_match('^function .*\.\.Test_expand_sfile$', trim(execute('Sfile')))
+  call assert_match('script .*testdir/runtest.vim\[\d\+\]\.\.function RunTheTest\[\d\+\]\.\.Test_expand_sfile_and_stack$', trim(execute('Sfile')))
   delcommand Sfile
+
+  " Use <stack> from sourced script.
+  let lines =<< trim END
+    let g:stack_value = expand('<stack>')
+  END
+  call writefile(lines, 'Xstack')
+  source Xstack
+  call assert_match('\<Xstack$', g:stack_value)
+  call delete('Xstack')
 endfunc
 
 func Test_expand_slnum()
@@ -47,24 +77,6 @@
   delcommand Slnum
 endfunc
 
-func Test_expand_sflnum()
-  call assert_equal(5, s:sflnum)
-  call assert_equal(52, str2nr(expand('<sflnum>')))
-
-  " Line-continuation
-  call assert_equal(
-        \ 55,
-        \ str2nr(expand('<sflnum>')))
-
-  " Call in script-local function
-  call assert_equal(16, s:expand_sflnum())
-
-  " Call in command
-  command Flnum echo expand('<sflnum>')
-  call assert_equal(64, str2nr(trim(execute('Flnum'))))
-  delcommand Flnum
-endfunc
-
 func Test_expand()
   new
   call assert_equal("",  expand('%:S'))