aboutsummaryrefslogtreecommitdiff
path: root/evil-tests.el
diff options
context:
space:
mode:
authorJakub Kadlcik <frostyx@email.cz>2023-12-09 13:21:33 +0100
committerTom Dalziel <33435574+tomdl89@users.noreply.github.com>2023-12-18 10:20:46 +0100
commitfc6bd006503258e5cc09c92de8882f4496992946 (patch)
tree6c6643c5e42d13999a6c83d8308fa5f33f050978 /evil-tests.el
parenteced3088ce860431b6d0e0af2409c56d754ffab2 (diff)
Add :retab command
See "Changing tabs" section in the Vim manual https://vimhelp.org/change.txt.html#change.txt
Diffstat (limited to 'evil-tests.el')
-rw-r--r--evil-tests.el43
1 files changed, 43 insertions, 0 deletions
diff --git a/evil-tests.el b/evil-tests.el
index e7bf080..f3c8505 100644
--- a/evil-tests.el
+++ b/evil-tests.el
@@ -9809,6 +9809,49 @@ main(argc, argv) char **argv; {
(should (equal evil-input-method "german-prefix"))))
(remove-hook 'text-mode-hook #'use-german-input-method))))
+(ert-deftest evil-retab ()
+ "Test the :retab command"
+ :tags '(evil)
+ (ert-info ("From tabs to spaces")
+ (evil-test-buffer
+ "def foo():\n\twhile True:\n\t\treturn\n"
+ (setq indent-tabs-mode nil)
+ (setq tab-width 4)
+ (":retab" [return])
+ "def foo():\n while True:\n return\n"))
+ (ert-info ("From spaces to tabs")
+ (evil-test-buffer
+ "def foo():\n while True:\n return\n"
+ (setq indent-tabs-mode t)
+ (setq tab-width 4)
+ (":retab" [return])
+ "def foo():\n\twhile True:\n\t\treturn\n"))
+ (ert-info ("Specify tab width as an argument")
+ (evil-test-buffer
+ "def foo():\n\twhile True:\n\t\treturn\n"
+ (setq indent-tabs-mode nil)
+ (setq tab-width 4)
+ (":retab 2" [return])
+ "def foo():\n while True:\n return\n"))
+ (ert-info ("Invalid argument")
+ (evil-test-buffer
+ "def foo():\n\twhile True:\n\t\treturn\n"
+ (should-error (execute-kbd-macro ":retab foo" [return])))))
+
+(ert-deftest evil-retab-visual ()
+ "Test the :retab command on visual line selection.
+This test fails in the batch mode (and therefore in the GitHub CI)
+but it works fine in `M-x ert-run-tests-interactively'."
+ :tags '(evil visual)
+ (skip-unless (not noninteractive))
+ (ert-info ("Retab only selected lines")
+ (evil-test-buffer
+ "def foo():\n\twhile True:\n\t\treturn\n"
+ (setq indent-tabs-mode nil)
+ (setq tab-width 4)
+ ("Vj" ":retab" [return])
+ "def foo():\n while True:\n\t\treturn\n")))
+
(provide 'evil-tests)
;;; evil-tests.el ends here