aboutsummaryrefslogtreecommitdiff
path: root/tests/test-coverage-core--project-root.el
blob: 9d596217ae00d7f74f74bbaaa91f05aa1a42f781 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
;;; test-coverage-core--project-root.el --- Tests for cj/--coverage-project-root -*- lexical-binding: t -*-

;;; Commentary:
;; Tests for `cj/--coverage-project-root' in coverage-core.el — returns the
;; projectile project root when available, else `default-directory'.

;;; Code:

(require 'ert)
(require 'cl-lib)
(add-to-list 'load-path (expand-file-name "modules" user-emacs-directory))
(require 'coverage-core)

;;; Normal Cases

(ert-deftest test-coverage-project-root-uses-projectile-when-available ()
  "Normal: with projectile available and in a project, returns its root."
  (cl-letf (((symbol-function 'projectile-project-root)
             (lambda () "/home/u/proj/")))
    (should (equal (cj/--coverage-project-root) "/home/u/proj/"))))

;;; Boundary Cases

(ert-deftest test-coverage-project-root-falls-back-when-projectile-absent ()
  "Boundary: with no projectile function, falls back to default-directory."
  (cl-letf (((symbol-function 'projectile-project-root) nil))
    (let ((default-directory "/fallback/dir/"))
      (should (equal (cj/--coverage-project-root) "/fallback/dir/")))))

(ert-deftest test-coverage-project-root-falls-back-when-not-in-project ()
  "Boundary: projectile present but returns nil (not in a project) falls back."
  (cl-letf (((symbol-function 'projectile-project-root) (lambda () nil)))
    (let ((default-directory "/fallback/dir/"))
      (should (equal (cj/--coverage-project-root) "/fallback/dir/")))))

(provide 'test-coverage-core--project-root)
;;; test-coverage-core--project-root.el ends here