aboutsummaryrefslogtreecommitdiff
path: root/tests/test-reconcile--should-skip-p.el
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-reconcile--should-skip-p.el')
-rw-r--r--tests/test-reconcile--should-skip-p.el110
1 files changed, 70 insertions, 40 deletions
diff --git a/tests/test-reconcile--should-skip-p.el b/tests/test-reconcile--should-skip-p.el
index 3e9c01775..8964fd3be 100644
--- a/tests/test-reconcile--should-skip-p.el
+++ b/tests/test-reconcile--should-skip-p.el
@@ -17,50 +17,58 @@
(reconcile-test-with-temp-dirs
("repo/.git/")
(let ((dir (expand-file-name "repo" test-root)))
- (reconcile-test-with-shell-mocks
- (lambda (_cmd) 0)
- (lambda (cmd)
- (if (string-match-p "remote.origin.url" cmd)
- "git@github.com:user/repo.git"
- ""))
- (should-not (cj/reconcile--should-skip-p dir))))))
+ (reconcile-test-with-git-mock
+ (lambda (args)
+ (if (equal args '("config" "--get" "remote.origin.url"))
+ '(:exit 0 :output "git@github.com:user/repo.git\n")
+ '(:exit 0 :output "")))
+ (should-not (cj/reconcile--should-skip-p dir))))))
(ert-deftest test-should-skip-p-normal-http-remote-skipped ()
"HTTP remote repo should be skipped (reference clone)."
(reconcile-test-with-temp-dirs
("repo/.git/")
(let ((dir (expand-file-name "repo" test-root)))
- (reconcile-test-with-shell-mocks
- (lambda (_cmd) 0)
- (lambda (cmd)
- (if (string-match-p "remote.origin.url" cmd)
- "http://github.com/user/repo.git"
- ""))
- (should (cj/reconcile--should-skip-p dir))))))
+ (reconcile-test-with-git-mock
+ (lambda (args)
+ (if (equal args '("config" "--get" "remote.origin.url"))
+ '(:exit 0 :output "http://github.com/user/repo.git\n")
+ '(:exit 0 :output "")))
+ (should (cj/reconcile--should-skip-p dir))))))
(ert-deftest test-should-skip-p-normal-https-remote-skipped ()
"HTTPS remote repo should be skipped (reference clone)."
(reconcile-test-with-temp-dirs
("repo/.git/")
(let ((dir (expand-file-name "repo" test-root)))
- (reconcile-test-with-shell-mocks
- (lambda (_cmd) 0)
- (lambda (cmd)
- (if (string-match-p "remote.origin.url" cmd)
- "https://github.com/user/repo.git"
- ""))
- (should (cj/reconcile--should-skip-p dir))))))
+ (reconcile-test-with-git-mock
+ (lambda (args)
+ (if (equal args '("config" "--get" "remote.origin.url"))
+ '(:exit 0 :output "https://github.com/user/repo.git\n")
+ '(:exit 0 :output "")))
+ (should (cj/reconcile--should-skip-p dir))))))
+
+(ert-deftest test-should-skip-p-normal-https-remote-not-skipped-when-policy-disabled ()
+ "HTTPS remote repos can be included by disabling the skip regexp."
+ (reconcile-test-with-temp-dirs
+ ("repo/.git/")
+ (let ((dir (expand-file-name "repo" test-root))
+ (cj/reconcile-skipped-remote-regexp nil))
+ (reconcile-test-with-git-mock
+ (lambda (args)
+ (if (equal args '("config" "--get" "remote.origin.url"))
+ '(:exit 0 :output "https://github.com/user/repo.git\n")
+ '(:exit 0 :output "")))
+ (should-not (cj/reconcile--should-skip-p dir))))))
(ert-deftest test-should-skip-p-normal-no-remote-skipped ()
"Local-only repo (no remote) should be skipped."
(reconcile-test-with-temp-dirs
("repo/.git/")
(let ((dir (expand-file-name "repo" test-root)))
- (reconcile-test-with-shell-mocks
- (lambda (_cmd) 0)
- (lambda (cmd)
- (if (string-match-p "remote.origin.url" cmd) "" ""))
- (should (cj/reconcile--should-skip-p dir))))))
+ (reconcile-test-with-git-mock
+ (lambda (_args) '(:exit 1 :output ""))
+ (should (cj/reconcile--should-skip-p dir))))))
;;; Boundary Cases
@@ -76,26 +84,48 @@
(reconcile-test-with-temp-dirs
("repo/.git/")
(let ((dir (expand-file-name "repo" test-root)))
- (reconcile-test-with-shell-mocks
- (lambda (_cmd) 0)
- (lambda (cmd)
- (if (string-match-p "remote.origin.url" cmd)
- "user@myserver.com:repos/project.git"
- ""))
- (should-not (cj/reconcile--should-skip-p dir))))))
+ (reconcile-test-with-git-mock
+ (lambda (args)
+ (if (equal args '("config" "--get" "remote.origin.url"))
+ '(:exit 0 :output "user@myserver.com:repos/project.git\n")
+ '(:exit 0 :output "")))
+ (should-not (cj/reconcile--should-skip-p dir))))))
(ert-deftest test-should-skip-p-boundary-ssh-protocol-url-not-skipped ()
"ssh:// protocol URL should NOT be skipped."
(reconcile-test-with-temp-dirs
("repo/.git/")
(let ((dir (expand-file-name "repo" test-root)))
- (reconcile-test-with-shell-mocks
- (lambda (_cmd) 0)
- (lambda (cmd)
- (if (string-match-p "remote.origin.url" cmd)
- "ssh://git@github.com/user/repo.git"
- ""))
- (should-not (cj/reconcile--should-skip-p dir))))))
+ (reconcile-test-with-git-mock
+ (lambda (args)
+ (if (equal args '("config" "--get" "remote.origin.url"))
+ '(:exit 0 :output "ssh://git@github.com/user/repo.git\n")
+ '(:exit 0 :output "")))
+ (should-not (cj/reconcile--should-skip-p dir))))))
+
+(ert-deftest test-should-skip-p-boundary-file-protocol-remote-not-skipped ()
+ "file:// remote repo should NOT be skipped by the default policy."
+ (reconcile-test-with-temp-dirs
+ ("repo/.git/")
+ (let ((dir (expand-file-name "repo" test-root)))
+ (reconcile-test-with-git-mock
+ (lambda (args)
+ (if (equal args '("config" "--get" "remote.origin.url"))
+ '(:exit 0 :output "file:///srv/git/repo.git\n")
+ '(:exit 0 :output "")))
+ (should-not (cj/reconcile--should-skip-p dir))))))
+
+(ert-deftest test-should-skip-p-boundary-local-path-remote-not-skipped ()
+ "Plain local path remote should NOT be skipped by the default policy."
+ (reconcile-test-with-temp-dirs
+ ("repo/.git/")
+ (let ((dir (expand-file-name "repo" test-root)))
+ (reconcile-test-with-git-mock
+ (lambda (args)
+ (if (equal args '("config" "--get" "remote.origin.url"))
+ '(:exit 0 :output "/srv/git/repo.git\n")
+ '(:exit 0 :output "")))
+ (should-not (cj/reconcile--should-skip-p dir))))))
(provide 'test-reconcile--should-skip-p)
;;; test-reconcile--should-skip-p.el ends here