diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/test-duet-backend.el | 26 | ||||
| -rw-r--r-- | tests/test-duet-transfer.el | 8 |
2 files changed, 34 insertions, 0 deletions
diff --git a/tests/test-duet-backend.el b/tests/test-duet-backend.el index b1d9c34..f0a999c 100644 --- a/tests/test-duet-backend.el +++ b/tests/test-duet-backend.el @@ -211,6 +211,32 @@ value for a duplicated keyword." (list :shell-command "rm -rf /"))))) (should (duet-backend-check-minimum b)))) +(ert-deftest test-duet-backend-check-minimum-flags-nil-command-spec () + "A command builder returning nil fails the minimum tier (nil is a list)." + (let ((b (test-duet-backend--fake 'nilcmd 10 :command (lambda (_s _d _o) nil)))) + (should (duet-backend-check-minimum b)))) + +(ert-deftest test-duet-backend-check-minimum-flags-empty-argv-cli () + "A CLI backend with nil argv and no declared in-process mode fails." + (let ((b (test-duet-backend--fake + 'noargv 10 + :command (lambda (_s _d _o) (list :argv nil :default-directory "/"))))) + (should (duet-backend-check-minimum b)))) + +(ert-deftest test-duet-backend-check-minimum-accepts-in-process-spec () + "A backend declaring an in-process mode (:tramp) passes with a nil argv." + (let ((b (test-duet-backend--fake + 'inproc 10 + :command (lambda (_s _d _o) (list :argv nil :tramp t))))) + (should (null (duet-backend-check-minimum b))))) + +(ert-deftest test-duet-backend-check-minimum-flags-non-string-argv () + "An argv carrying non-string elements is not a runnable CLI command." + (let ((b (test-duet-backend--fake + 'bad 10 + :command (lambda (_s _d _o) (list :argv '("rsync" 42)))))) + (should (duet-backend-check-minimum b)))) + (ert-deftest test-duet-backend-check-publishable-flags-missing-cleanup () "The publishable tier additionally requires declared cleanup semantics." (let ((b (test-duet-backend--fake 'pub 10 diff --git a/tests/test-duet-transfer.el b/tests/test-duet-transfer.el index a5d0429..ebe5a2c 100644 --- a/tests/test-duet-transfer.el +++ b/tests/test-duet-transfer.el @@ -120,6 +120,14 @@ (should (eq 'rsync (plist-get spec :backend))) (should (eq :local-remote (plist-get spec :route)))))) +(ert-deftest test-duet-transfer-spec-preserves-tramp-marker () + "A spec routed through TRAMP carries the in-process marker, not just nil argv." + (test-duet-transfer--with-builtins + (let ((spec (duet--transfer-spec '("/tmp/a/file.txt") "/ftp:host:/b" nil))) + (should (eq 'tramp (plist-get spec :backend))) + (should (eq t (plist-get spec :tramp))) + (should (null (plist-get spec :argv)))))) + ;;; Conflict planning — pure, prompt-free (ert-deftest test-duet-plan-conflicts-no-collisions-all-copy () |
