core: change cfgl-package :owner slot to :owners

The car of :owners is the real owner.
Now we can easily gather the list of all owners of a package.

Also fix unit tests about missing spacemacs-insecure variable.
This commit is contained in:
syl20bnr 2016-06-10 21:37:32 -04:00
parent cb6754f231
commit b2d4adb14d
2 changed files with 153 additions and 136 deletions

View File

@ -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))

View File

@ -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)))))