You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
4.2 KiB
86 lines
4.2 KiB
;;; dired-rsync-ert --- tests for dired-rsync
|
|
;;
|
|
;;; Commentary:
|
|
;;
|
|
;; Mostly this is for the internal functions as it is hard to test
|
|
;; remote SSH accessible resources in a test case.
|
|
;;
|
|
;;; Code:
|
|
|
|
(require 'ert)
|
|
|
|
(when (require 'undercover nil t)
|
|
(undercover "dired-rsync.el"))
|
|
|
|
(require 'dired-rsync)
|
|
|
|
(ert-deftest dired-rsync-test-extract-host ()
|
|
"Test the various extractions of host from sources."
|
|
(should (string-equal "host"
|
|
(dired-rsync--extract-host-from-tramp
|
|
"/ssh:host:/path/to/file.txt")))
|
|
(should (string-equal "user@host"
|
|
(dired-rsync--extract-host-from-tramp
|
|
"/ssh:user@host:/path/to/file.txt")))
|
|
(should (string-equal "host"
|
|
(dired-rsync--extract-host-from-tramp
|
|
"/ssh:user@host:/path/to/file.txt" t))))
|
|
|
|
(ert-deftest dired-rsync-test-extract-user ()
|
|
"Test the various extractions of user from paths."
|
|
(should (string-equal "user"
|
|
(dired-rsync--extract-user-from-tramp
|
|
"/ssh:user@host:/path/to/file.txt")))
|
|
(let ((tramp-default-user "wibble"))
|
|
(should (string-equal "wibble"
|
|
(dired-rsync--extract-user-from-tramp
|
|
"/ssh:host:/path/to/file.txt")))))
|
|
|
|
|
|
(ert-deftest dired-rsync-test-extract-path()
|
|
"Test the various extractions of the path."
|
|
(should (string-equal "/path/to/file.txt"
|
|
(car (dired-rsync--extract-paths-from-tramp
|
|
'("/ssh:host:/path/to/file.txt"
|
|
"/ssh:host:/path/to/file2.txt")))))
|
|
(should (string-equal "/path/to/file2.txt"
|
|
(nth 1 (dired-rsync--extract-paths-from-tramp
|
|
'("/ssh:host:/path/to/file.txt"
|
|
"/ssh:host:/path/to/file2.txt")))))
|
|
(should (string-equal "/path/to/file.txt"
|
|
(car (dired-rsync--extract-paths-from-tramp
|
|
'("/ssh:host:/path/to/file.txt")))))
|
|
(should (string-equal "/path/to/pluralised\\'s.txt"
|
|
(car (dired-rsync--extract-paths-from-tramp
|
|
'("/ssh:host:/path/to/pluralised's.txt")))))
|
|
(should (string-equal "/path/to/file.txt"
|
|
(car (dired-rsync--extract-paths-from-tramp
|
|
'("/ssh:servername|sudo:root@servername:/path/to/file.txt"))))))
|
|
|
|
(ert-deftest dired-rsync-test-quote-and-maybe-convert-from-tramp ()
|
|
"Test quote and maybe convert from tramp defun"
|
|
;; test against regression of issue #26: missing username in rsync command
|
|
(should (string-equal "username@192.168.1.1:\"/blat/blot/\""
|
|
(dired-rsync--quote-and-maybe-convert-from-tramp "/scp:username@192.168.1.1:/blat/blot/")))
|
|
(should (string-equal "192.168.1.1:\"/blat/blot/\""
|
|
(dired-rsync--quote-and-maybe-convert-from-tramp "/scp:192.168.1.1:/blat/blot/"))))
|
|
|
|
(ert-deftest dired-rsync-test-remote-port()
|
|
"Test the remote port handling."
|
|
(should (= 50000 (dired-rsync--get-remote-port)))
|
|
(cl-letf (((symbol-function 'dired-rsync--get-active-buffers) (lambda() '(1 2))))
|
|
(should (= 50002 (dired-rsync--get-remote-port)))))
|
|
|
|
(ert-deftest dired-rsync-test-remote-remote-cmd ()
|
|
"Test we generate a good remote to remote command."
|
|
(should (string-equal
|
|
"ssh -A -R localhost:50000:host:22 seed \"rsync -az --info=progress2 -e \\\"ssh -p 50000 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null\\\" a b c's user@localhost:/video\""
|
|
(dired-rsync--remote-to-remote-cmd "seed" '("a" "b" "c's") "user"
|
|
"host" "/video")))
|
|
(cl-letf (((symbol-function 'dired-rsync--get-active-buffers) (lambda() '(1 2))))
|
|
(should (string-equal
|
|
"ssh -A -R localhost:50002:host:22 seed \"rsync -az --info=progress2 -e \\\"ssh -p 50002 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null\\\" a b c's user@localhost:/video\""
|
|
(dired-rsync--remote-to-remote-cmd "seed" '("a" "b" "c's") "user"
|
|
"host" "/video")))))
|
|
|
|
;;; dired-rsync-ert.el ends here
|