Skip to content

Commit 5f8889e

Browse files
committed
Fix a bug in combination of a single source directory and any plugin; add more tests.
1 parent 2aefc4d commit 5f8889e

File tree

9 files changed

+75
-2
lines changed

9 files changed

+75
-2
lines changed

eldev-plugins.el

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ Since 0.3."
6161
;; Autoloads.
6262

6363
(defun eldev--autoloads-source-dir ()
64-
(if eldev-project-source-dirs (file-name-as-directory (car eldev-project-source-dirs)) ""))
64+
(if eldev-project-source-dirs (file-name-as-directory (car (eldev-listify eldev-project-source-dirs))) ""))
6565

6666
(defvar eldev--collect-autoloads-from
6767
;; FIXME: Here we explicitly use only one (the first) source directory. Should that be

test/autoloads.el

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,28 @@
6464
(ert-deftest eldev-autoloads-6 ()
6565
;; This project has special source directories and activates `autoloads' plugin.
6666
(let ((eldev--test-project "project-l"))
67+
(eldev--test-delete-cache)
6768
(eldev--test-run nil ("eval" "--dont-require" `(project-l-hello))
6869
(should (string= stdout "\"Hello\"\n"))
6970
(should (= exit-code 0)))
7071
(eldev--test-run nil ("eval" "--dont-require" `(project-l-misc-hello))
7172
(should (string= stdout "\"Hello\"\n"))
73+
(should (= exit-code 0)))
74+
;; It's a dependency of the project, and also has autoloaded functions.
75+
(eldev--test-run nil ("eval" "--dont-require" `(dependency-d-autoloaded) `(dependency-d-stable))
76+
(should (string= stdout (eldev--test-lines "\"Loaded automatically\"" "t")))
77+
(should (= exit-code 0)))
78+
;; Make sure this works also with local dependencies.
79+
(eldev--test-run nil ("--setup" `(eldev-use-local-dependency "../dependency-d")
80+
"eval" "--dont-require" `(dependency-d-autoloaded) `(dependency-d-stable))
81+
(should (string= stdout (eldev--test-lines "\"Loaded automatically\"" "nil")))
82+
(should (= exit-code 0)))))
83+
84+
(ert-deftest eldev-autoloads-7 ()
85+
;; This dependency library has a special source directory and activates `autoloads' plugin.
86+
(let ((eldev--test-project "dependency-d"))
87+
(eldev--test-run nil ("eval" "--dont-require" `(dependency-d-autoloaded))
88+
(should (string= stdout "\"Loaded automatically\"\n"))
7289
(should (= exit-code 0)))))
7390

7491

test/dependency-d/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/lisp/dependency-d-autoloads.el

test/dependency-d/Eldev

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
(setf eldev-project-source-dirs "lisp")
2+
3+
(eldev-use-plugin 'autoloads)
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
;;; dependency-d.el --- Dependency test package D with a special source directory
2+
3+
;; Version: 1.0.99
4+
5+
(defun dependency-d-hello ()
6+
"Hello")
7+
8+
(defun dependency-d-stable ()
9+
nil)
10+
11+
;;;###autoload
12+
(defun dependency-d-autoloaded ()
13+
"Loaded automatically")
14+
15+
(provide 'dependency-d)
16+
17+
;;; dependency-d.el ends here

test/local-dependencies.el

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,23 @@
5050
(should (string= stdout (eldev--test-lines "t" "t" "(1 0)" "(1 0)")))
5151
(should (= exit-code 0)))))
5252

53+
(ert-deftest eldev-local-dependencies-3 ()
54+
(let ((eldev--test-project "project-l"))
55+
(eldev--test-delete-cache)
56+
;; `dependency-d' uses a source directory. Make sure it is handled correctly when it
57+
;; is loaded as a local. Explicitly requiring the dependency feature since the
58+
;; project doesn't do that for autoload testing.
59+
(eldev--test-run nil ("--quiet" "eval" `(progn (require 'dependency-d) (dependency-d-stable)) `(package-desc-version (eldev-find-package-descriptor 'dependency-d)))
60+
(should (string= stdout (eldev--test-lines "t" "(1 0)")))
61+
(should (= exit-code 0)))
62+
(eldev--test-run nil ("--setup" `(eldev-use-local-dependency "../dependency-d")
63+
"eval" `(progn (require 'dependency-d) (dependency-d-stable)) `(package-desc-version (eldev-find-package-descriptor 'dependency-d)))
64+
(should (string= stdout (eldev--test-lines "nil" "(1 0 99)")))
65+
(should (= exit-code 0)))
66+
(eldev--test-run nil ("--quiet" "eval" `(progn (require 'dependency-d) (dependency-d-stable)) `(package-desc-version (eldev-find-package-descriptor 'dependency-d)))
67+
(should (string= stdout (eldev--test-lines "t" "(1 0)")))
68+
(should (= exit-code 0)))))
69+
5370

5471
(ert-deftest eldev-local-dependency-fixes-missing-dependency-1 ()
5572
(eldev--test-run "dependency-a" ("clean")

test/package-archive-a/archive-contents

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
(1
22
(dependency-a . [(1 0) nil "Dependency test package A" single nil])
33
(dependency-b . [(1 0) ((dependency-a (0))) "Dependency test package B" single nil])
4+
(dependency-d . [(1 0) nil "Dependency test package D with a special source directory" single nil])
45
(dummy-lint . [(1 0) nil "Dummy linter" single nil])
56
(misc-a . [(1 0) nil "Miscellaneous package A" single nil])
67
(project-i . [(1 0) nil "Test project with autoload cookies in multiple files" tar nil])
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
;;; dependency-d.el --- Dependency test package D with a special source directory
2+
3+
;; Version: 1.0
4+
5+
(defun dependency-d-hello ()
6+
"Hello")
7+
8+
(defun dependency-d-stable ()
9+
t)
10+
11+
;;;###autoload
12+
(defun dependency-d-autoloaded ()
13+
"Loaded automatically")
14+
15+
(provide 'dependency-d)
16+
17+
;;; dependency-d.el ends here

test/project-l/src/project-l.el

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
;;; project-l.el --- Test project where source code is contained in a subdirectory of project root; and with autoloads
22

33
;; Version: 1.0
4-
;; Package-Requires: ((dependency-a "0.1"))
4+
;; Package-Requires: ((dependency-a "0.1") (dependency-d "1.0"))
55
;; Homepage: https://example.com/
66

77
;;; Commentary:

0 commit comments

Comments
 (0)