branch: externals/shell-command+
commit 7d818ba273273ec6ef126eab64e9f26faeb702f8
Author: Philip K <[email protected]>
Commit: Philip K <[email protected]>
Create shell-command+-tests.el
---
shell-command+-tests.el | 158 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 158 insertions(+)
diff --git a/shell-command+-tests.el b/shell-command+-tests.el
new file mode 100644
index 0000000..e4c54e2
--- /dev/null
+++ b/shell-command+-tests.el
@@ -0,0 +1,158 @@
+;;; shell-command+-tests.el --- Tests for shell-command+ -*- lexical-binding:
t; -*-
+
+;; Copyright (C) 2021 Philip Kaludercic
+
+;; Author: Philip Kaludercic <[email protected]>
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Code:
+
+(require 'ert)
+(require 'shell-command+)
+(require 'pcase)
+
+(ert-deftest sc+-basic ()
+ "Make sure a simple command is recognized."
+ (pcase-let* ((`(,path ,mode ,command ,rest)
+ (shell-command+-parse "command")))
+ (should (null path))
+ (should (null mode))
+ (should (string= command "command"))
+ (should (string= rest "command"))))
+
+(ert-deftest sc+-basic2 ()
+ "Make sure a simple command with an argument is recognized."
+ (pcase-let* ((`(,path ,mode ,command ,rest)
+ (shell-command+-parse "command arg")))
+ (should (null path))
+ (should (null mode))
+ (should (string= command "command"))
+ (should (string= rest "command arg"))))
+
+(ert-deftest sc+-basic3 ()
+ "Make sure a simple command with an argument is recognized."
+ (pcase-let* ((`(,path ,mode ,command ,rest)
+ (shell-command+-parse "command arg arg2")))
+ (should (null path))
+ (should (null mode))
+ (should (string= command "command"))
+ (should (string= rest "command arg arg2"))))
+
+(ert-deftest sc+-path ()
+ "Make sure a simple command with an argument is recognized."
+ (pcase-let* ((`(,path ,mode ,command ,rest)
+ (shell-command+-parse "... command arg arg2")))
+ (should (string= path "..."))
+ (should (null mode))
+ (should (string= command "command"))
+ (should (string= rest "command arg arg2"))))
+
+(ert-deftest sc+-path2 ()
+ "Make sure a simple command with an argument is recognized."
+ (pcase-let* ((`(,path ,mode ,command ,rest)
+ (shell-command+-parse ".../dir command arg arg2")))
+ (should (string= path ".../dir"))
+ (should (null mode))
+ (should (string= command "command"))
+ (should (string= rest "command arg arg2"))))
+
+(ert-deftest sc+-input ()
+ "Make sure input is recognized."
+ (pcase-let* ((`(,path ,mode ,command ,rest)
+ (shell-command+-parse "< command arg arg2")))
+ (should (null path))
+ (should (eq mode 'input))
+ (should (string= command "command"))
+ (should (string= rest "command arg arg2"))))
+
+(ert-deftest sc+-output ()
+ "Make sure output is recognized."
+ (pcase-let* ((`(,path ,mode ,command ,rest)
+ (shell-command+-parse "> command arg arg2")))
+ (should (null path))
+ (should (eq mode 'output))
+ (should (string= command "command"))
+ (should (string= rest "command arg arg2"))))
+
+(ert-deftest sc+-pipe ()
+ "Make sure pipe is recognized."
+ (pcase-let* ((`(,path ,mode ,command ,rest)
+ (shell-command+-parse "| command arg arg2")))
+ (should (null path))
+ (should (eq mode 'pipe))
+ (should (string= command "command"))
+ (should (string= rest "command arg arg2"))))
+
+(ert-deftest sc+-input-and-path ()
+ "Check if input and path conflict."
+ (pcase-let* ((`(,path ,mode ,command ,rest)
+ (shell-command+-parse "... < command arg arg2")))
+ (should (string= "..." path))
+ (should (eq mode 'input))
+ (should (string= command "command"))
+ (should (string= rest "command arg arg2"))))
+
+(ert-deftest sc+-output-and-path ()
+ "Check if output and path conflict."
+ (pcase-let* ((`(,path ,mode ,command ,rest)
+ (shell-command+-parse "... > command arg arg2")))
+ (should (string= "..." path))
+ (should (eq mode 'output))
+ (should (string= command "command"))
+ (should (string= rest "command arg arg2"))))
+
+(ert-deftest sc+-pipe-and-path ()
+ "Check if pipe and path conflict."
+ (pcase-let* ((`(,path ,mode ,command ,rest)
+ (shell-command+-parse "... | command arg arg2")))
+ (should (string= "..." path))
+ (should (eq mode 'pipe))
+ (should (string= command "command"))
+ (should (string= rest "command arg arg2"))))
+
+(ert-deftest sc+-file-replace ()
+ "Check if %'s are replaced."
+ (pcase-let* ((buffer-file-name "somefile")
+ (`(,path ,mode ,command ,rest)
+ (shell-command+-parse "command %")))
+ (should (null path))
+ (should (null mode))
+ (should (string= command "command"))
+ (should (string= rest (concat "command " buffer-file-name)))))
+
+(ert-deftest sc+-file-noreplace ()
+ "Check if %'s are replaced."
+ (pcase-let* ((`(,path ,mode ,command ,rest)
+ (shell-command+-parse "command \\%")))
+ (should (null path))
+ (should (null mode))
+ (should (string= command "command"))
+ (should (string= rest (concat "command \\%")))))
+
+(ert-deftest sc+-expand ()
+ "Test that `shell-command+-expand-path' works as expected"
+ (let ((default-directory "/some/path/to/dir"))
+ (pcase-dolist (`(,path . ,expand)
+ '(("." . "/some/path/to/dir")
+ (".." . "/some/path/to")
+ ("..." . "/some/path")
+ (".../dir" . "/some/path/dir")
+ (".../dir/..../else" . "/else")
+ ("....." . "/")))
+ (should (string= (shell-command+-expand-path path)
+ expand)))))
+
+(provide 'shell-command+-tests)
+;;; shell-command+-tests.el ends here