patch 8.2.2366: when using ":sleep" the cursor is always displayed

Problem:    When using ":sleep" the cursor is always displayed.
Solution:   Do not display the cursor when using ":sleep!". (Jeremy Lerner,
            closes #7688)
diff --git a/src/testdir/Make_all.mak b/src/testdir/Make_all.mak
index 364221f..b769499 100644
--- a/src/testdir/Make_all.mak
+++ b/src/testdir/Make_all.mak
@@ -246,6 +246,7 @@
 	test_shortpathname \
 	test_signals \
 	test_signs \
+	test_sleep \
 	test_smartindent \
 	test_sort \
 	test_sound \
@@ -472,6 +473,7 @@
 	test_shortpathname.res \
 	test_signals.res \
 	test_signs.res \
+	test_sleep.res \
 	test_smartindent.res \
 	test_sort.res \
 	test_sound.res \
diff --git a/src/testdir/test_sleep.vim b/src/testdir/test_sleep.vim
new file mode 100644
index 0000000..f71855f
--- /dev/null
+++ b/src/testdir/test_sleep.vim
@@ -0,0 +1,26 @@
+" Test for sleep and sleep! commands
+
+func! s:get_time_ms()
+  let timestr = reltimestr(reltime())
+  let dotidx = stridx(timestr, '.')
+  let sec = str2nr(timestr[:dotidx])
+  let msec = str2nr(timestr[dotidx + 1:])
+  return (sec * 1000) + (msec / 1000)
+endfunc
+
+func! s:assert_takes_longer(cmd, time_ms)
+  let start = s:get_time_ms()
+  execute a:cmd
+  let end = s:get_time_ms()
+  call assert_true(end - start >=# a:time_ms)
+endfun
+
+func! Test_sleep_bang()
+  call s:assert_takes_longer('sleep 50m', 50)
+  call s:assert_takes_longer('sleep! 50m', 50)
+  call s:assert_takes_longer('sl 50m', 50)
+  call s:assert_takes_longer('sl! 50m', 50)
+  call s:assert_takes_longer('1sleep', 1000)
+endfunc
+
+" vim: shiftwidth=2 sts=2 expandtab