patch 8.1.1841: no test for Ex shift commands

Problem:    No test for Ex shift commands.
Solution:   Add a test. (Dominique Pelle, closes #4801)
diff --git a/src/testdir/Make_all.mak b/src/testdir/Make_all.mak
index 131ba01..80cf706 100644
--- a/src/testdir/Make_all.mak
+++ b/src/testdir/Make_all.mak
@@ -227,6 +227,7 @@
 	test_searchpos \
 	test_set \
 	test_sha256 \
+	test_shift \
 	test_shortpathname \
 	test_signals \
 	test_signs \
diff --git a/src/testdir/test_alot.vim b/src/testdir/test_alot.vim
index a7db66a..ab1dac4 100644
--- a/src/testdir/test_alot.vim
+++ b/src/testdir/test_alot.vim
@@ -52,6 +52,7 @@
 source test_scroll_opt.vim
 source test_searchpos.vim
 source test_set.vim
+source test_shift.vim
 source test_sort.vim
 source test_sha256.vim
 source test_statusline.vim
diff --git a/src/testdir/test_shift.vim b/src/testdir/test_shift.vim
new file mode 100644
index 0000000..4ff054f
--- /dev/null
+++ b/src/testdir/test_shift.vim
@@ -0,0 +1,113 @@
+" Test shifting lines with :> and :<
+
+source check.vim
+
+func Test_ex_shift_right()
+  set shiftwidth=2
+
+  " shift right current line.
+  call setline(1, range(1, 5))
+  2
+  >
+  3
+  >>
+  call assert_equal(['1',
+        \            '  2',
+        \            '    3',
+        \            '4',
+        \            '5'], getline(1, '$'))
+
+  " shift right with range.
+  call setline(1, range(1, 4))
+  2,3>>
+  call assert_equal(['1',
+        \            '    2',
+        \            '    3',
+        \            '4',
+        \            '5'], getline(1, '$'))
+
+  " shift right with range and count.
+  call setline(1, range(1, 4))
+  2>3
+  call assert_equal(['1',
+        \            '  2',
+        \            '  3',
+        \            '  4',
+        \            '5'], getline(1, '$'))
+
+  bw!
+  set shiftwidth&
+endfunc
+
+func Test_ex_shift_left()
+  set shiftwidth=2
+
+  call setline(1, range(1, 5))
+  %>>>
+
+  " left shift current line.
+  2<
+  3<<
+  4<<<<<
+  call assert_equal(['      1',
+        \            '    2',
+        \            '  3',
+        \            '4',
+        \            '      5'], getline(1, '$'))
+
+  " shift right with range.
+  call setline(1, range(1, 5))
+  %>>>
+  2,3<<
+  call assert_equal(['      1',
+        \            '  2',
+        \            '  3',
+        \            '      4',
+        \            '      5'], getline(1, '$'))
+
+  " shift right with range and count.
+  call setline(1, range(1, 5))
+  %>>>
+  2<<3
+  call assert_equal(['      1',
+     \               '  2',
+     \               '  3',
+     \               '  4',
+     \               '      5'], getline(1, '$'))
+
+  bw!
+  set shiftwidth&
+endfunc
+
+func Test_ex_shift_rightleft()
+  CheckFeature rightleft
+
+  set shiftwidth=2 rightleft
+
+  call setline(1, range(1, 4))
+  2,3<<
+  call assert_equal(['1',
+        \             '    2',
+        \             '    3',
+        \             '4'], getline(1, '$'))
+
+  3,4>
+  call assert_equal(['1',
+        \            '    2',
+        \            '  3',
+        \            '4'], getline(1, '$'))
+
+  bw!
+  set rightleft& shiftwidth&
+endfunc
+
+func Test_ex_shift_errors()
+  call assert_fails('><', 'E488:')
+  call assert_fails('<>', 'E488:')
+
+  call assert_fails('>!', 'E477:')
+  call assert_fails('<!', 'E477:')
+
+  call assert_fails('2,1>', 'E493:')
+  call assert_fails('2,1<', 'E493:')
+endfunc
diff --git a/src/version.c b/src/version.c
index 8e79926..5e40a1f 100644
--- a/src/version.c
+++ b/src/version.c
@@ -770,6 +770,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1841,
+/**/
     1840,
 /**/
     1839,