diff --git a/core/core-configuration-layer.el b/core/core-configuration-layer.el index 6a1bff09a..a61f078bd 100644 --- a/core/core-configuration-layer.el +++ b/core/core-configuration-layer.el @@ -85,7 +85,7 @@ LAYER has to be installed for this method to work properly." (delq nil (mapcar (lambda (x) (let ((pkg (object-assoc x :name configuration-layer--packages))) - (when (and pkg (eq (oref layer :name) (oref pkg :owner))) + (when (and pkg (eq (oref layer :name) (car (oref pkg :owners)))) pkg))) (oref layer :packages)))) @@ -97,10 +97,10 @@ LAYER has to be installed for this method to work properly." ((name :initarg :name :type symbol :documentation "Name of the package.") - (owner :initarg :owner - :initform nil - :type symbol - :documentation "The layer defining the init function.") + (owners :initarg :owners + :initform nil + :type list + :documentation "The layer defining the init function.") (pre-layers :initarg :pre-layers :initform '() :type list @@ -466,7 +466,8 @@ If TOGGLEP is non nil then `:toggle' parameter is ignored." configuration-layer--packages))))) (let* ((pkg (object-assoc pkg-symbol :name (or pkg-list configuration-layer--packages))) - (owner (oref pkg :owner))) + (owners (oref pkg :owners)) + (owner (car owners))) (with-help-window (help-buffer) ;; declaration location (princ pkg-symbol) @@ -656,14 +657,14 @@ If TOGGLEP is non nil then `:toggle' parameter is ignored." (when ownerp ;; last owner wins over the previous one, ;; still warn about mutliple owners - (when (and (oref obj :owner) - (not (eq layer-name (oref obj :owner)))) + (when (and (oref obj :owners) + (not (memq layer-name (oref obj :owners)))) (spacemacs-buffer/warning (format (concat "More than one init function found for " "package %S. Previous owner was %S, " "replacing it with layer %S.") - pkg-name (oref obj :owner) layer-name))) - (oset obj :owner layer-name)) + pkg-name (car (oref obj :owners)) layer-name))) + (push layer-name (oref obj :owners))) ;; if no function at all is found for the package, then check ;; again this layer later to resolve `package-usedp' usage in ;; `packages.el' files @@ -701,7 +702,7 @@ If TOGGLEP is non nil then `:toggle' parameter is ignored." (setq obj (configuration-layer/make-package pkg obj t)) (setq obj (configuration-layer/make-package pkg nil t)) (push obj configuration-layer--packages) - (oset obj :owner 'dotfile)))) + (push 'dotfile (oref obj :owners))))) (dolist (xpkg dotspacemacs-excluded-packages) (let ((obj (object-assoc xpkg :name configuration-layer--packages))) (unless obj @@ -731,12 +732,12 @@ If TOGGLEP is non nil then `:toggle' parameter is ignored." (let* ((layer (object-assoc layer-name :name configuration-layer--layers)) (packages (when layer (cfgl-layer-owned-packages layer)))) - ;; set lazy install flag for a layer if and only if all its owned - ;; distant packages are not already installed + ;; set lazy install flag for a layer if and only if its owned + ;; distant packages are all not already installed (let ((lazy (cl-reduce (lambda (x y) (and x y)) (mapcar (lambda (p) - (or (not (eq layer-name (oref p :owner))) + (or (not (eq layer-name (car (oref p :owners)))) (null (package-installed-p (oref p :name))))) (configuration-layer//get-distant-packages @@ -779,7 +780,7 @@ return both used and unused packages." (and (not (memq (oref x :location) '(built-in site local))) (not (stringp (oref x :location))) (or (null usedp) - (and (not (null (oref x :owner))) + (and (not (null (oref x :owners))) (cfgl-package-enabledp x) (not (oref x :excluded)))))))) @@ -984,7 +985,7 @@ path." "Return non-nil if NAME is the name of a used package." (let ((obj (object-assoc name :name configuration-layer--packages))) (when (and obj (not (oref obj :excluded))) - (not (null (oref obj :owner)))))) + (not (null (oref obj :owners)))))) (defun configuration-layer/package-lazy-installp (name) "Return non-nil if NAME is the name of a package to be lazily installed." @@ -1040,7 +1041,7 @@ path." (defun configuration-layer//install-package (pkg) "Unconditionally install the package PKG." - (let* ((layer (when pkg (oref pkg :owner))) + (let* ((layer (when pkg (car (oref pkg :owners)))) (location (when pkg (oref pkg :location)))) (spacemacs-buffer/replace-last-line (format "--> installing %s: %s%s... [%s/%s]" @@ -1156,7 +1157,7 @@ path." (defun configuration-layer//install-from-recipe (pkg) "Install PKG from a recipe." (let* ((pkg-name (oref pkg :name)) - (layer (oref pkg :owner)) + (layer (car (oref pkg :owners))) (recipe (cons pkg-name (cdr (oref pkg :location))))) (if recipe (quelpa recipe) @@ -1260,7 +1261,7 @@ path." (not (oref pkg :protected))) (spacemacs-buffer/message (format "%S ignored since it has been excluded." pkg-name))) - ((null (oref pkg :owner)) + ((null (oref pkg :owners)) (spacemacs-buffer/message (format "%S ignored since it has no owner layer." pkg-name))) ((not (cfgl-package-enabledp pkg)) @@ -1276,13 +1277,13 @@ path." "Location path for package %S does not exists (value: %s)." pkg location))) ((and (eq 'local location) - (eq 'dotfile (oref pkg :owner))) + (eq 'dotfile (car (oref pkg :owners)))) (push (file-name-as-directory (concat configuration-layer-private-directory "local/" (symbol-name (oref pkg :name)))) load-path)) ((eq 'local location) - (let* ((owner (object-assoc (oref pkg :owner) + (let* ((owner (object-assoc (car (oref pkg :owners)) :name configuration-layer--layers)) (dir (when owner (oref owner :dir)))) (push (format "%slocal/%S/" dir pkg-name) load-path))))) @@ -1290,7 +1291,7 @@ path." (unless (memq (oref pkg :location) '(local site built-in)) (configuration-layer//activate-package pkg-name)) (cond - ((eq 'dotfile (oref pkg :owner)) + ((eq 'dotfile (car (oref pkg :owners))) (spacemacs-buffer/message (format "%S is configured in the dotfile." pkg-name))) (t @@ -1299,7 +1300,7 @@ path." (defun configuration-layer//configure-package (pkg) "Configure PKG." (let* ((pkg-name (oref pkg :name)) - (owner (oref pkg :owner)) + (owner (car (oref pkg :owners))) (owner-layer (object-assoc owner :name configuration-layer--layers)) (disabled-for-layers (oref owner-layer :disabled-for))) (spacemacs-buffer/message (format "Configuring %S..." pkg-name)) diff --git a/tests/core/core-configuration-layer-utest.el b/tests/core/core-configuration-layer-utest.el index 647516efc..c19bedfc3 100644 --- a/tests/core/core-configuration-layer-utest.el +++ b/tests/core/core-configuration-layer-utest.el @@ -9,6 +9,7 @@ ;; ;;; License: GPLv3 (require 'mocker) +(require 'core-command-line) (require 'core-configuration-layer) ;; --------------------------------------------------------------------------- @@ -20,12 +21,12 @@ :name 'layer1 :packages '(pkg1 pkg2 pkg3 pkg4))) (configuration-layer--packages - (list (cfgl-package "pkg1" :name 'pkg1 :owner 'layer2) - (cfgl-package "pkg2" :name 'pkg2 :owner 'layer1) - (cfgl-package "pkg3" :name 'pkg3 :owner 'layer1) - (cfgl-package "pkg4" :name 'pkg4 :owner 'layer2)))) - (should (equal (list (cfgl-package "pkg2" :name 'pkg2 :owner 'layer1) - (cfgl-package "pkg3" :name 'pkg3 :owner 'layer1)) + (list (cfgl-package "pkg1" :name 'pkg1 :owners '(layer2)) + (cfgl-package "pkg2" :name 'pkg2 :owners '(layer1)) + (cfgl-package "pkg3" :name 'pkg3 :owners '(layer1)) + (cfgl-package "pkg4" :name 'pkg4 :owners '(layer2))))) + (should (equal (list (cfgl-package "pkg2" :name 'pkg2 :owners '(layer1)) + (cfgl-package "pkg3" :name 'pkg3 :owners '(layer1))) (cfgl-layer-owned-packages layer1))))) (ert-deftest test-cfgl-layer-owned-packages--nil-layer-returns-nil () @@ -243,7 +244,7 @@ (expected (cfgl-package "testpkg" :name 'testpkg :location 'elpa - :owner nil + :owners nil :pre-layers nil :post-layers nil :step nil @@ -255,7 +256,7 @@ (let* ((input '(testpkg :location local :step pre)) (expected (cfgl-package "testpkg" :name 'testpkg - :owner nil + :owners nil :location 'local :pre-layers nil :post-layers nil @@ -267,14 +268,14 @@ (ert-deftest test-make-package--copy-package-properties-to-passed-obj () (let* ((obj (cfgl-package "testpkg" :name 'testpkg - :owner nil + :owners nil :location 'elpa :step nil :excluded t)) (pkg '(testpkg :location local :step pre :excluded nil)) (expected (cfgl-package "testpkg" :name 'testpkg - :owner nil + :owners nil :location 'local :step 'pre :excluded nil)) @@ -286,49 +287,49 @@ ;; --------------------------------------------------------------------------- (defvar test-get-distant-packages--test-data - `(,(cfgl-package "pkg18" :name 'pkg18 :owner nil) - ,(cfgl-package "pkg17" :name 'pkg17 :owner nil :location 'elpa) - ,(cfgl-package "pkg16" :name 'pkg16 :owner nil :toggle nil) - ,(cfgl-package "pkg15" :name 'pkg15 :owner nil :toggle t) - ,(cfgl-package "pkg14" :name 'pkg14 :owner nil :location '(recipe)) - ,(cfgl-package "pkg13" :name 'pkg13 :owner nil :location 'built-in) - ,(cfgl-package "pkg12" :name 'pkg12 :owner nil :location 'local) - ,(cfgl-package "pkg11" :name 'pkg11 :owner nil :location 'site) - ,(cfgl-package "pkg10" :name 'pkg10 :owner nil :location "/path") - ,(cfgl-package "pkg9" :name 'pkg9 :owner 'layer) - ,(cfgl-package "pkg8" :name 'pkg8 :owner 'layer :location 'elpa) - ,(cfgl-package "pkg7" :name 'pkg7 :owner 'layer :toggle nil) - ,(cfgl-package "pkg6" :name 'pkg6 :owner 'layer :toggle t) - ,(cfgl-package "pkg5" :name 'pkg5 :owner 'layer :location '(recipe)) - ,(cfgl-package "pkg4" :name 'pkg4 :owner 'layer :location 'built-in) - ,(cfgl-package "pkg3" :name 'pkg3 :owner 'layer :location 'local) - ,(cfgl-package "pkg2" :name 'pkg2 :owner 'layer :location 'site) - ,(cfgl-package "pkg1" :name 'pkg1 :owner 'layer :location "/path"))) + `(,(cfgl-package "pkg18" :name 'pkg18 :owners nil) + ,(cfgl-package "pkg17" :name 'pkg17 :owners nil :location 'elpa) + ,(cfgl-package "pkg16" :name 'pkg16 :owners nil :toggle nil) + ,(cfgl-package "pkg15" :name 'pkg15 :owners nil :toggle t) + ,(cfgl-package "pkg14" :name 'pkg14 :owners nil :location '(recipe)) + ,(cfgl-package "pkg13" :name 'pkg13 :owners nil :location 'built-in) + ,(cfgl-package "pkg12" :name 'pkg12 :owners nil :location 'local) + ,(cfgl-package "pkg11" :name 'pkg11 :owners nil :location 'site) + ,(cfgl-package "pkg10" :name 'pkg10 :owners nil :location "/path") + ,(cfgl-package "pkg9" :name 'pkg9 :owners '(layer)) + ,(cfgl-package "pkg8" :name 'pkg8 :owners '(layer) :location 'elpa) + ,(cfgl-package "pkg7" :name 'pkg7 :owners '(layer) :toggle nil) + ,(cfgl-package "pkg6" :name 'pkg6 :owners '(layer) :toggle t) + ,(cfgl-package "pkg5" :name 'pkg5 :owners '(layer) :location '(recipe)) + ,(cfgl-package "pkg4" :name 'pkg4 :owners '(layer) :location 'built-in) + ,(cfgl-package "pkg3" :name 'pkg3 :owners '(layer) :location 'local) + ,(cfgl-package "pkg2" :name 'pkg2 :owners '(layer) :location 'site) + ,(cfgl-package "pkg1" :name 'pkg1 :owners '(layer) :location "/path"))) (ert-deftest test-get-distant-packages--return-only-used-packages () (let ((packages test-get-distant-packages--test-data)) (should (equal - `(,(cfgl-package "pkg9" :name 'pkg9 :owner 'layer) - ,(cfgl-package "pkg8" :name 'pkg8 :owner 'layer :location 'elpa) - ,(cfgl-package "pkg6" :name 'pkg6 :owner 'layer :toggle t) - ,(cfgl-package "pkg5" :name 'pkg5 :owner 'layer :location '(recipe))) + `(,(cfgl-package "pkg9" :name 'pkg9 :owners '(layer)) + ,(cfgl-package "pkg8" :name 'pkg8 :owners '(layer) :location 'elpa) + ,(cfgl-package "pkg6" :name 'pkg6 :owners '(layer) :toggle t) + ,(cfgl-package "pkg5" :name 'pkg5 :owners '(layer) :location '(recipe))) (configuration-layer//get-distant-packages packages t))))) (ert-deftest test-get-distant-packages--return-only-unused-packages () (let ((packages test-get-distant-packages--test-data)) (should (equal - `(,(cfgl-package "pkg18" :name 'pkg18 :owner nil) - ,(cfgl-package "pkg17" :name 'pkg17 :owner nil :location 'elpa) - ,(cfgl-package "pkg16" :name 'pkg16 :owner nil :toggle nil) - ,(cfgl-package "pkg15" :name 'pkg15 :owner nil :toggle t) - ,(cfgl-package "pkg14" :name 'pkg14 :owner nil :location '(recipe)) - ,(cfgl-package "pkg9" :name 'pkg9 :owner 'layer) - ,(cfgl-package "pkg8" :name 'pkg8 :owner 'layer :location 'elpa) - ,(cfgl-package "pkg7" :name 'pkg7 :owner 'layer :toggle nil) - ,(cfgl-package "pkg6" :name 'pkg6 :owner 'layer :toggle t) - ,(cfgl-package "pkg5" :name 'pkg5 :owner 'layer :location '(recipe))) + `(,(cfgl-package "pkg18" :name 'pkg18 :owners nil) + ,(cfgl-package "pkg17" :name 'pkg17 :owners nil :location 'elpa) + ,(cfgl-package "pkg16" :name 'pkg16 :owners nil :toggle nil) + ,(cfgl-package "pkg15" :name 'pkg15 :owners nil :toggle t) + ,(cfgl-package "pkg14" :name 'pkg14 :owners nil :location '(recipe)) + ,(cfgl-package "pkg9" :name 'pkg9 :owners '(layer)) + ,(cfgl-package "pkg8" :name 'pkg8 :owners '(layer) :location 'elpa) + ,(cfgl-package "pkg7" :name 'pkg7 :owners '(layer) :toggle nil) + ,(cfgl-package "pkg6" :name 'pkg6 :owners '(layer) :toggle t) + ,(cfgl-package "pkg5" :name 'pkg5 :owners '(layer) :location '(recipe))) (configuration-layer//get-distant-packages packages nil))))) ;; --------------------------------------------------------------------------- @@ -348,9 +349,9 @@ (load (f) ((:output nil :occur 1)))) (let (configuration-layer--packages) (configuration-layer/get-packages layers) - (should (equal (list (cfgl-package "pkg3" :name 'pkg3 :owner 'layer1) - (cfgl-package "pkg2" :name 'pkg2 :owner 'layer1) - (cfgl-package "pkg1" :name 'pkg1 :owner 'layer1)) + (should (equal (list (cfgl-package "pkg3" :name 'pkg3 :owners '(layer1)) + (cfgl-package "pkg2" :name 'pkg2 :owners '(layer1)) + (cfgl-package "pkg1" :name 'pkg1 :owners '(layer1))) configuration-layer--packages)))))) (ert-deftest test-get-packages--lists-only () @@ -368,9 +369,9 @@ (load (f) ((:output nil :occur 1)))) (let (configuration-layer--packages) (configuration-layer/get-packages layers) - (should (equal (list (cfgl-package "pkg3" :name 'pkg3 :owner 'layer1 :location 'local :step 'pre) - (cfgl-package "pkg2" :name 'pkg2 :owner 'layer1 :location '(recipe blahblah)) - (cfgl-package "pkg1" :name 'pkg1 :owner 'layer1 :excluded t)) + (should (equal (list (cfgl-package "pkg3" :name 'pkg3 :owners '(layer1) :location 'local :step 'pre) + (cfgl-package "pkg2" :name 'pkg2 :owners '(layer1) :location '(recipe blahblah)) + (cfgl-package "pkg1" :name 'pkg1 :owners '(layer1) :excluded t)) configuration-layer--packages)))))) (ert-deftest test-get-packages--symbols-and-lists () @@ -390,10 +391,10 @@ (load (f) ((:output nil :occur 1)))) (let (configuration-layer--packages) (configuration-layer/get-packages layers) - (should (equal (list (cfgl-package "pkg4" :name 'pkg4 :owner 'layer1) - (cfgl-package "pkg3" :name 'pkg3 :owner 'layer1 :location 'local :step 'pre) - (cfgl-package "pkg2" :name 'pkg2 :owner 'layer1 :location '(recipe blahblah)) - (cfgl-package "pkg1" :name 'pkg1 :owner 'layer1)) + (should (equal (list (cfgl-package "pkg4" :name 'pkg4 :owners '(layer1)) + (cfgl-package "pkg3" :name 'pkg3 :owners '(layer1) :location 'local :step 'pre) + (cfgl-package "pkg2" :name 'pkg2 :owners '(layer1) :location '(recipe blahblah)) + (cfgl-package "pkg1" :name 'pkg1 :owners '(layer1))) configuration-layer--packages)))))) (ert-deftest test-get-packages--pkg2-has-no-owner-because-no-init-function () @@ -405,12 +406,13 @@ (defun layer2/init-pkg3 nil) (mocker-let ((file-exists-p (f) ((:output t :occur 1))) + (spacemacs-buffer/warning (m) ((:output nil))) (load (f) ((:output nil :occur 1)))) (let (configuration-layer--packages) (configuration-layer/get-packages layers) - (should (equal (list (cfgl-package "pkg3" :name 'pkg3 :owner 'layer2) + (should (equal (list (cfgl-package "pkg3" :name 'pkg3 :owners '(layer2)) (cfgl-package "pkg2" :name 'pkg2) - (cfgl-package "pkg1" :name 'pkg1 :owner 'layer2)) + (cfgl-package "pkg1" :name 'pkg1 :owners '(layer2))) configuration-layer--packages)))))) (ert-deftest test-get-packages--pre-init-function () @@ -427,7 +429,7 @@ (load (f) ((:output nil :occur 2)))) (let (configuration-layer--packages) (configuration-layer/get-packages layers) - (should (equal (list (cfgl-package "pkg1" :name 'pkg1 :owner 'layer3 :pre-layers '(layer4))) + (should (equal (list (cfgl-package "pkg1" :name 'pkg1 :owners '(layer3) :pre-layers '(layer4))) configuration-layer--packages)))))) (ert-deftest test-get-packages--post-init-function () @@ -444,7 +446,7 @@ (load (f) ((:output nil :occur 2)))) (let (configuration-layer--packages) (configuration-layer/get-packages layers) - (should (equal (list (cfgl-package "pkg1" :name 'pkg1 :owner 'layer3 :post-layers '(layer5))) + (should (equal (list (cfgl-package "pkg1" :name 'pkg1 :owners '(layer3) :post-layers '(layer5))) configuration-layer--packages)))))) (ert-deftest test-get-packages--pre-and-post-init-functions () @@ -462,7 +464,7 @@ (load (f) ((:output nil :occur 2)))) (let (configuration-layer--packages) (configuration-layer/get-packages layers) - (should (equal (list (cfgl-package "pkg1" :name 'pkg1 :owner 'layer3 :pre-layers '(layer6) :post-layers '(layer6))) + (should (equal (list (cfgl-package "pkg1" :name 'pkg1 :owners '(layer3) :pre-layers '(layer6) :post-layers '(layer6))) configuration-layer--packages)))))) (ert-deftest test-get-packages--several-init-functions-last-one-is-the-owner () @@ -480,7 +482,9 @@ (spacemacs-buffer/warning (msg &rest args) ((:output nil :occur 1)))) (let (configuration-layer--packages) (configuration-layer/get-packages layers) - (should (equal (list (cfgl-package "pkg1" :name 'pkg1 :owner 'layer8)) + (should (equal (list (cfgl-package "pkg1" + :name 'pkg1 + :owners '(layer8 layer7))) configuration-layer--packages)))))) (ert-deftest test-get-packages--layer-10-excludes-pkg2-in-layer-9 () @@ -498,9 +502,9 @@ (load (f) ((:output nil :occur 2)))) (let (configuration-layer--packages) (configuration-layer/get-packages layers) - (should (equal (list (cfgl-package "pkg3" :name 'pkg3 :owner 'layer10) - (cfgl-package "pkg2" :name 'pkg2 :owner 'layer9 :excluded t) - (cfgl-package "pkg1" :name 'pkg1 :owner 'layer9)) + (should (equal (list (cfgl-package "pkg3" :name 'pkg3 :owners '(layer10)) + (cfgl-package "pkg2" :name 'pkg2 :owners '(layer9) :excluded t) + (cfgl-package "pkg1" :name 'pkg1 :owners '(layer9))) configuration-layer--packages)))))) (ert-deftest test-get-packages--dotfile-excludes-pkg2-in-layer-11 () @@ -517,9 +521,9 @@ (load (f) ((:output nil :occur 1)))) (let (configuration-layer--packages) (configuration-layer/get-packages layers t) - (should (equal (list (cfgl-package "pkg3" :name 'pkg3 :owner 'layer11) - (cfgl-package "pkg2" :name 'pkg2 :owner 'layer11 :excluded t) - (cfgl-package "pkg1" :name 'pkg1 :owner 'layer11)) + (should (equal (list (cfgl-package "pkg3" :name 'pkg3 :owners '(layer11)) + (cfgl-package "pkg2" :name 'pkg2 :owners '(layer11) :excluded t) + (cfgl-package "pkg1" :name 'pkg1 :owners '(layer11))) configuration-layer--packages)))))) (ert-deftest test-get-packages--dotfile-declares-and-owns-one-additional-package () @@ -535,9 +539,9 @@ (load (f) ((:output nil :occur 1)))) (let (configuration-layer--packages) (configuration-layer/get-packages layers t) - (should (equal (list (cfgl-package "pkg3" :name 'pkg3 :owner 'dotfile) - (cfgl-package "pkg2" :name 'pkg2 :owner 'layer12) - (cfgl-package "pkg1" :name 'pkg1 :owner 'layer12)) + (should (equal (list (cfgl-package "pkg3" :name 'pkg3 :owners '(dotfile)) + (cfgl-package "pkg2" :name 'pkg2 :owners '(layer12)) + (cfgl-package "pkg1" :name 'pkg1 :owners '(layer12))) configuration-layer--packages)))))) (ert-deftest test-get-packages--last-owner-can-overwrite-location () @@ -555,7 +559,10 @@ (spacemacs-buffer/warning (msg &rest args) ((:output nil :occur 1)))) (let (configuration-layer--packages) (configuration-layer/get-packages layers) - (should (equal (list (cfgl-package "pkg1" :name 'pkg1 :owner 'layer14 :location 'local)) + (should (equal (list (cfgl-package "pkg1" + :name 'pkg1 + :owners '(layer14 layer13) + :location 'local)) configuration-layer--packages)))))) (ert-deftest test-get-packages--last-owner-can-overwrite-step-nil-to-pre () @@ -573,7 +580,10 @@ (spacemacs-buffer/warning (msg &rest args) ((:output nil :occur 1)))) (let (configuration-layer--packages) (configuration-layer/get-packages layers) - (should (equal (list (cfgl-package "pkg1" :name 'pkg1 :owner 'layer16 :step 'pre)) + (should (equal (list (cfgl-package "pkg1" + :name 'pkg1 + :owners '(layer16 layer15) + :step 'pre)) configuration-layer--packages)))))) (ert-deftest test-get-packages--last-owner-cannot-overwrite-step-pre-to-nil () @@ -591,7 +601,10 @@ (spacemacs-buffer/warning (msg &rest args) ((:output nil :occur 1)))) (let (configuration-layer--packages) (configuration-layer/get-packages layers) - (should (equal (list (cfgl-package "pkg1" :name 'pkg1 :owner 'layer16 :step 'pre)) + (should (equal (list (cfgl-package "pkg1" + :name 'pkg1 + :owners '(layer16 layer15) + :step 'pre)) configuration-layer--packages)))))) (ert-deftest test-get-packages--last-owner-can-overwrite-exclude () @@ -609,7 +622,10 @@ (spacemacs-buffer/warning (msg &rest args) ((:output nil :occur 1)))) (let (configuration-layer--packages) (configuration-layer/get-packages layers) - (should (equal (list (cfgl-package "pkg1" :name 'pkg1 :owner 'layer18 :excluded t)) + (should (equal (list (cfgl-package "pkg1" + :name 'pkg1 + :owners '(layer18 layer17) + :excluded t)) configuration-layer--packages)))))) (ert-deftest test-get-packages--owner-layer-can-define-toggle () @@ -625,7 +641,7 @@ (configuration-layer/get-packages layers) (should (equal (list (cfgl-package "pkg1" :name 'pkg1 - :owner 'layer19 + :owners '(layer19) :toggle '(foo-toggle))) configuration-layer--packages)))))) @@ -646,7 +662,7 @@ (configuration-layer/get-packages layers) (should (equal (list (cfgl-package "pkg1" :name 'pkg1 - :owner 'layer20 + :owners '(layer20) :post-layers '(layer21) :toggle t)) configuration-layer--packages)))))) @@ -668,7 +684,7 @@ (configuration-layer/get-packages layers) (should (equal (list (cfgl-package "pkg1" :name 'pkg1 - :owner 'layer23 + :owners '(layer23 layer22) :toggle '(bar-toggle))) configuration-layer--packages)))))) @@ -688,9 +704,9 @@ (let (configuration-layer--packages) (configuration-layer/get-packages layers) (should (equal (list (cfgl-package "pkg1" - :name 'pkg1 - :owner 'layer23 - :toggle '(bar-toggle))) + :name 'pkg1 + :owners '(layer23 layer22) + :toggle '(bar-toggle))) configuration-layer--packages)))))) ;; --------------------------------------------------------------------------- @@ -724,15 +740,15 @@ (mocker-let ((file-exists-p (f) ((:output t))) (load (f) ((:output nil)))) - (should (equal (list (cfgl-package "pkg1" :name 'pkg1 :owner 'layerall1) - (cfgl-package "pkg6" :name 'pkg6 :owner 'layerall2) - (cfgl-package "pkg2" :name 'pkg2 :owner 'layerall2) - (cfgl-package "pkg3" :name 'pkg3 :owner 'layerall3) - (cfgl-package "pkg8" :name 'pkg8 :owner 'layerall4) - (cfgl-package "pkg7" :name 'pkg7 :owner 'layerall4) - (cfgl-package "pkg4" :name 'pkg4 :owner 'layerall4) - (cfgl-package "pkg9" :name 'pkg9 :owner 'layerall5) - (cfgl-package "pkg5" :name 'pkg5 :owner 'layerall5)) + (should (equal (list (cfgl-package "pkg1" :name 'pkg1 :owners '(layerall1)) + (cfgl-package "pkg6" :name 'pkg6 :owners '(layerall2)) + (cfgl-package "pkg2" :name 'pkg2 :owners '(layerall2)) + (cfgl-package "pkg3" :name 'pkg3 :owners '(layerall3)) + (cfgl-package "pkg8" :name 'pkg8 :owners '(layerall4)) + (cfgl-package "pkg7" :name 'pkg7 :owners '(layerall4)) + (cfgl-package "pkg4" :name 'pkg4 :owners '(layerall4)) + (cfgl-package "pkg9" :name 'pkg9 :owners '(layerall5)) + (cfgl-package "pkg5" :name 'pkg5 :owners '(layerall5))) (configuration-layer/get-all-packages)))))) ;; --------------------------------------------------------------------------- @@ -740,7 +756,7 @@ ;; --------------------------------------------------------------------------- (ert-deftest test-configure-package--init-is-evaluated () - (let ((pkg (cfgl-package "pkg" :name 'pkg :owner 'layer1)) + (let ((pkg (cfgl-package "pkg" :name 'pkg :owners '(layer1))) (configuration-layer--layers `(,(cfgl-layer "layer1" :name 'layer1))) (mocker-mock-default-record-cls 'mocker-stub-record)) (defun layer1/init-pkg nil) @@ -750,7 +766,7 @@ (configuration-layer//configure-package pkg)))) (ert-deftest test-configure-package--pre-init-is-evaluated () - (let ((pkg (cfgl-package "pkg" :name 'pkg :owner 'layer1 :pre-layers '(layer2))) + (let ((pkg (cfgl-package "pkg" :name 'pkg :owners '(layer1) :pre-layers '(layer2))) (configuration-layer--layers `(,(cfgl-layer "layer1" :name 'layer1) ,(cfgl-layer "layer2" :name 'layer2))) @@ -763,7 +779,7 @@ (configuration-layer//configure-package pkg)))) (ert-deftest test-configure-package--post-init-is-evaluated () - (let ((pkg (cfgl-package "pkg" :name 'pkg :owner 'layer1 :post-layers '(layer2))) + (let ((pkg (cfgl-package "pkg" :name 'pkg :owners '(layer1) :post-layers '(layer2))) (configuration-layer--layers `(,(cfgl-layer "layer1" :name 'layer1) ,(cfgl-layer "layer2" :name 'layer2))) @@ -776,7 +792,7 @@ (configuration-layer//configure-package pkg)))) (ert-deftest test-configure-package--pre-init-is-evaluated-before-init () - (let ((pkg (cfgl-package "pkg" :name 'pkg :owner 'layer1 :pre-layers '(layer2))) + (let ((pkg (cfgl-package "pkg" :name 'pkg :owners '(layer1) :pre-layers '(layer2))) (configuration-layer--layers `(,(cfgl-layer "layer1" :name 'layer1) ,(cfgl-layer "layer2" :name 'layer2))) @@ -790,7 +806,7 @@ (should (equal '(init pre-init) witness))))) (ert-deftest test-configure-package--post-init-is-evaluated-after-init () - (let ((pkg (cfgl-package "pkg" :name 'pkg :owner 'layer1 :post-layers '(layer2))) + (let ((pkg (cfgl-package "pkg" :name 'pkg :owners '(layer1) :post-layers '(layer2))) (configuration-layer--layers `(,(cfgl-layer "layer1" :name 'layer1) ,(cfgl-layer "layer2" :name 'layer2))) @@ -804,7 +820,7 @@ (should (equal '(post-init init) witness))))) (ert-deftest test-configure-package--disabled-for-does-not-call-pre-post-init () - (let ((pkg (cfgl-package "pkg" :name 'pkg :owner 'layer1 + (let ((pkg (cfgl-package "pkg" :name 'pkg :owners '(layer1) :pre-layers '(layer2) :post-layers '(layer3))) (configuration-layer--layers @@ -826,7 +842,7 @@ ;; --------------------------------------------------------------------------- (ert-deftest test-configure-packages-2--package-w/-layer-owner-is-configured() - (let ((pkg (cfgl-package "pkg" :name 'pkg :owner 'layer1)) + (let ((pkg (cfgl-package "pkg" :name 'pkg :owners '(layer1))) (mocker-mock-default-record-cls 'mocker-stub-record)) (mocker-let ((configuration-layer//configure-package (p) ((:occur 1))) @@ -834,7 +850,7 @@ (configuration-layer//configure-packages-2 `(,pkg))))) (ert-deftest test-configure-packages-2--site-package-is-configured() - (let ((pkg (cfgl-package "pkg" :name 'pkg :owner 'layer1 :location 'site)) + (let ((pkg (cfgl-package "pkg" :name 'pkg :owners '(layer1) :location 'site)) (mocker-mock-default-record-cls 'mocker-stub-record)) (mocker-let ((configuration-layer//configure-package (p) ((:occur 1))) @@ -842,7 +858,7 @@ (configuration-layer//configure-packages-2 `(,pkg))))) (ert-deftest test-configure-packages-2--toggle-t-is-configured () - (let ((pkg (cfgl-package "pkg" :name 'pkg :owner 'layer1 :toggle t)) + (let ((pkg (cfgl-package "pkg" :name 'pkg :owners '(layer1) :toggle t)) (mocker-mock-default-record-cls 'mocker-stub-record)) (mocker-let ((configuration-layer//configure-package (p) ((:occur 1))) @@ -850,7 +866,7 @@ (configuration-layer//configure-packages-2 `(,pkg))))) (ert-deftest test-configure-packages-2--toggle-nil-is-not-configured () - (let ((pkg (cfgl-package "pkg" :name 'pkg :owner 'layer1 :toggle nil)) + (let ((pkg (cfgl-package "pkg" :name 'pkg :owners '(layer1) :toggle nil)) (mocker-mock-default-record-cls 'mocker-stub-record)) (mocker-let ((configuration-layer//configure-package (p) nil) @@ -859,7 +875,7 @@ (configuration-layer//configure-packages-2 `(,pkg))))) (ert-deftest test-configure-packages-2--protected-package-is-configured() - (let ((pkg (cfgl-package "pkg" :name 'pkg :owner 'layer1 :protected t)) + (let ((pkg (cfgl-package "pkg" :name 'pkg :owners '(layer1) :protected t)) (mocker-mock-default-record-cls 'mocker-stub-record)) (mocker-let ((configuration-layer//configure-package (p) ((:occur 1))) @@ -867,7 +883,7 @@ (configuration-layer//configure-packages-2 `(,pkg))))) (ert-deftest test-configure-packages-2--protected-excluded-package-is-configured() - (let ((pkg (cfgl-package "pkg" :name 'pkg :owner 'layer1 :excluded t :protected t)) + (let ((pkg (cfgl-package "pkg" :name 'pkg :owners '(layer1) :excluded t :protected t)) (mocker-mock-default-record-cls 'mocker-stub-record)) (mocker-let ((configuration-layer//configure-package (p) ((:occur 1))) @@ -875,7 +891,7 @@ (configuration-layer//configure-packages-2 `(,pkg))))) (ert-deftest test-configure-packages-2--excluded-package-is-not-configured() - (let ((pkg (cfgl-package "pkg" :name 'pkg :owner 'layer1 :excluded t)) + (let ((pkg (cfgl-package "pkg" :name 'pkg :owners '(layer1) :excluded t)) (mocker-mock-default-record-cls 'mocker-stub-record)) (mocker-let ((configuration-layer//configure-package (p) nil) @@ -884,7 +900,7 @@ (configuration-layer//configure-packages-2 `(,pkg))))) (ert-deftest test-configure-packages-2--package-w/o-owner-is-not-configured() - (let ((pkg (cfgl-package "pkg" :name 'pkg :owner nil)) + (let ((pkg (cfgl-package "pkg" :name 'pkg :owners nil)) (mocker-mock-default-record-cls 'mocker-stub-record)) (mocker-let ((configuration-layer//configure-package (p) nil) @@ -894,7 +910,7 @@ (ert-deftest test-configure-packages-2--package-owned-by-dotfile-is-not-configured() - (let ((pkg (cfgl-package "pkg" :name 'pkg :owner 'dotfile)) + (let ((pkg (cfgl-package "pkg" :name 'pkg :owners '(dotfile))) (mocker-mock-default-record-cls 'mocker-stub-record)) (mocker-let ((configuration-layer//configure-package (p) nil) @@ -903,7 +919,7 @@ (configuration-layer//configure-packages-2 `(,pkg))))) (ert-deftest test-configure-packages-2--lazy-install-package-is-not-configured() - (let ((pkg (cfgl-package "pkg" :name 'pkg :owner 'layer :lazy-install t)) + (let ((pkg (cfgl-package "pkg" :name 'pkg :owners '(layer) :lazy-install t)) (mocker-mock-default-record-cls 'mocker-stub-record)) (mocker-let ((configuration-layer//configure-package (p) nil) @@ -913,7 +929,7 @@ (ert-deftest test-configure-packages-2--local-package-w/-layer-owner-update-load-path() - (let ((pkg (cfgl-package "pkg" :name 'pkg :owner 'layer1 :location 'local)) + (let ((pkg (cfgl-package "pkg" :name 'pkg :owners '(layer1) :location 'local)) (configuration-layer--layers `(,(cfgl-layer "layer1" :name 'layer1 :dir "/a/path/"))) @@ -928,7 +944,7 @@ (ert-deftest test-configure-packages-2--local-package-w/-dotfile-owner-update-load-path() - (let ((pkg (cfgl-package "pkg" :name 'pkg :owner 'dotfile :location 'local)) + (let ((pkg (cfgl-package "pkg" :name 'pkg :owners '(dotfile) :location 'local)) (expected-load-path load-path) (mocker-mock-default-record-cls 'mocker-stub-record)) (mocker-let @@ -941,7 +957,7 @@ (ert-deftest test-configure-packages-2--local-package-w/o-owner-doesnt-update-load-path() - (let ((pkg (cfgl-package "pkg" :name 'pkg :owner nil :location 'local)) + (let ((pkg (cfgl-package "pkg" :name 'pkg :owners nil :location 'local)) (old-load-path load-path) (mocker-mock-default-record-cls 'mocker-stub-record)) (mocker-let @@ -954,7 +970,7 @@ test-configure-packages-2--local-package-w/-string-location-update-load-path() (let ((pkg (cfgl-package "pkg" :name 'pkg - :owner 'dotfile + :owners '(dotfile) :location spacemacs-docs-directory)) (expected-load-path load-path) (mocker-mock-default-record-cls 'mocker-stub-record)) @@ -968,7 +984,7 @@ test-configure-packages-2--local-package-w/-bad-string-location-gives-warning() (let ((pkg (cfgl-package "pkg" :name 'pkg - :owner 'dotfile + :owners '(dotfile) :location "/this/directory/does/not/exist/")) (mocker-mock-default-record-cls 'mocker-stub-record)) (mocker-let @@ -1139,9 +1155,9 @@ (layer1-packages '(pkg1 pkg2 pkg3)) (mocker-mock-default-record-cls 'mocker-stub-record) (configuration-layer--packages - (list (cfgl-package "pkg3" :name 'pkg3 :owner 'layer1) - (cfgl-package "pkg2" :name 'pkg2 :owner 'layer1) - (cfgl-package "pkg1" :name 'pkg1 :owner 'layer1)))) + (list (cfgl-package "pkg3" :name 'pkg3 :owners '(layer1)) + (cfgl-package "pkg2" :name 'pkg2 :owners '(layer1)) + (cfgl-package "pkg1" :name 'pkg1 :owners '(layer1))))) (should (configuration-layer/package-usedp (nth (random 3) layer1-packages))))) @@ -1315,8 +1331,8 @@ (let ((configuration-layer--layers (list (cfgl-layer "layer" :name 'layer :packages '(pkg1 pkg2)))) (configuration-layer--packages - (list (cfgl-package "pkg1" :name 'pkg1 :owner 'layer) - (cfgl-package "pkg2" :name 'pkg2 :owner 'layer))) + (list (cfgl-package "pkg1" :name 'pkg1 :owners '(layer)) + (cfgl-package "pkg2" :name 'pkg2 :owners '(layer)))) (auto-mode-alist '(("\\.pkg1\\'" . pkg1) ("\\.pkg2\\'" . pkg2)))) (should (equal '((pkg2 . "\\(\\.pkg2\\'\\)") @@ -1327,7 +1343,7 @@ (let ((configuration-layer--layers (list (cfgl-layer "layer" :name 'layer :packages '(pkg1)))) (configuration-layer--packages - (list (cfgl-package "pkg1" :name 'pkg1 :owner 'other))) + (list (cfgl-package "pkg1" :name 'pkg1 :owners '(other)))) (auto-mode-alist '(("\\.pkg1\\'" . pkg1)))) (should (null (configuration-layer//lazy-install-extensions-for-layer 'layer)))))