core: package-list-v2 fix layer variables

This commit is contained in:
syl20bnr 2015-08-07 22:35:28 -04:00
parent f484c2594a
commit e145f73b8b
2 changed files with 226 additions and 226 deletions

View File

@ -456,7 +456,7 @@ LAYERS is a list of layer symbols."
(let ((var (pop variables)))
(if (consp variables)
(condition-case err
(set-default var (symbol-value (pop variables)))
(set-default var (eval (pop variables)))
('error
(configuration-layer//set-error)
(spacemacs-buffer/append

View File

@ -12,146 +12,146 @@
(require 'mocker)
(require 'core-configuration-layer)
;; ;; ---------------------------------------------------------------------------
;; ;; configuration-layer//declare-layers
;; ;; ---------------------------------------------------------------------------
;; ---------------------------------------------------------------------------
;; configuration-layer//declare-layers
;; ---------------------------------------------------------------------------
;; (ert-deftest test-declare-layers--result-order-is-not-reversed ()
;; (mocker-let ((configuration-layer/make-layer
;; (x)
;; ((:input '(layer3) :output 'layer3)
;; (:input '(layer2) :output 'layer2)
;; (:input '(layer1) :output 'layer1))))
;; (let* ((input '(layer1 layer2 layer3))
;; (result (configuration-layer//declare-layers input)))
;; (should (equal result input)))))
(ert-deftest test-declare-layers--result-order-is-not-reversed ()
(mocker-let ((configuration-layer/make-layer
(x)
((:input '(layer3) :output 'layer3)
(:input '(layer2) :output 'layer2)
(:input '(layer1) :output 'layer1))))
(let* ((input '(layer1 layer2 layer3))
(result (configuration-layer//declare-layers input)))
(should (equal result input)))))
;; (ert-deftest test-declare-layers--ignore-not-found-layer ()
;; (mocker-let ((configuration-layer/make-layer
;; (x)
;; ((:input '(layer3) :output 'layer3)
;; (:input '(layer2-not-found) :output nil)
;; (:input '(layer1) :output 'layer1))))
;; (let* ((input '(layer1 layer2-not-found layer3))
;; (expected '(layer1 layer3))
;; (result (configuration-layer//declare-layers input)))
;; (should (equal result expected)))))
(ert-deftest test-declare-layers--ignore-not-found-layer ()
(mocker-let ((configuration-layer/make-layer
(x)
((:input '(layer3) :output 'layer3)
(:input '(layer2-not-found) :output nil)
(:input '(layer1) :output 'layer1))))
(let* ((input '(layer1 layer2-not-found layer3))
(expected '(layer1 layer3))
(result (configuration-layer//declare-layers input)))
(should (equal result expected)))))
;; ;; ---------------------------------------------------------------------------
;; ;; configuration-layer/make-layer
;; ;; ---------------------------------------------------------------------------
;; ---------------------------------------------------------------------------
;; configuration-layer/make-layer
;; ---------------------------------------------------------------------------
;; (ert-deftest test-make-layer--input-is-a-symbol ()
;; (let ((input 'layer)
;; (expected (cfgl-layer "layer"
;; :name 'layer
;; :dir "/a/dummy/path/layer/"
;; :ext-dir "/a/dummy/path/layer/extensions/")))
;; (mocker-let ((configuration-layer/get-layer-path
;; (x)
;; ((:input `(,input) :output "/a/dummy/path/"))))
;; (let ((result (configuration-layer/make-layer input)))
;; (should (equal result expected))))))
(ert-deftest test-make-layer--input-is-a-symbol ()
(let ((input 'layer)
(expected (cfgl-layer "layer"
:name 'layer
:dir "/a/dummy/path/layer/"
:ext-dir "/a/dummy/path/layer/extensions/")))
(mocker-let ((configuration-layer/get-layer-path
(x)
((:input `(,input) :output "/a/dummy/path/"))))
(let ((result (configuration-layer/make-layer input)))
(should (equal result expected))))))
;; (ert-deftest test-make-layer--input-is-a-list ()
;; (let ((input '(layer :variables var1 t var2 nil))
;; (expected (cfgl-layer "layer"
;; :name 'layer
;; :dir "/a/dummy/path/layer/"
;; :ext-dir "/a/dummy/path/layer/extensions/"
;; :variables '(var1 t var2 nil))))
;; (mocker-let ((configuration-layer/get-layer-path
;; (x)
;; ((:input `(,(car input)) :output "/a/dummy/path/"))))
;; (let ((result (configuration-layer/make-layer input)))
;; (should (equal result expected))))))
(ert-deftest test-make-layer--input-is-a-list ()
(let ((input '(layer :variables var1 t var2 nil))
(expected (cfgl-layer "layer"
:name 'layer
:dir "/a/dummy/path/layer/"
:ext-dir "/a/dummy/path/layer/extensions/"
:variables '(var1 t var2 nil))))
(mocker-let ((configuration-layer/get-layer-path
(x)
((:input `(,(car input)) :output "/a/dummy/path/"))))
(let ((result (configuration-layer/make-layer input)))
(should (equal result expected))))))
;; ;; ---------------------------------------------------------------------------
;; ;; configuration-layer//set-layers-variables
;; ;; ---------------------------------------------------------------------------
;; ---------------------------------------------------------------------------
;; configuration-layer//set-layers-variables
;; ---------------------------------------------------------------------------
;; (ert-deftest test-set-layers-variables--none ()
;; (let ((input `(,(cfgl-layer "layer"
;; :name 'layer
;; :dir "/a/path/"
;; :ext-dir "/a/path/extensions/")))
;; (var 'foo))
;; (configuration-layer//set-layers-variables input)
;; (should (eq var 'foo))))
(ert-deftest test-set-layers-variables--none ()
(let ((input `(,(cfgl-layer "layer"
:name 'layer
:dir "/a/path/"
:ext-dir "/a/path/extensions/")))
(var 'foo))
(configuration-layer//set-layers-variables input)
(should (eq var 'foo))))
;; (ert-deftest test-set-layers-variables--one-value ()
;; (let ((input `(,(cfgl-layer "layer"
;; :name 'layer
;; :dir "/a/path/"
;; :ext-dir "/a/path/extensions/"
;; :variables '(var1 'bar)))))
;; (setq var1 'foo)
;; (configuration-layer//set-layers-variables input)
;; (should (eq var1 'bar))))
(ert-deftest test-set-layers-variables--one-value ()
(let ((input `(,(cfgl-layer "layer"
:name 'layer
:dir "/a/path/"
:ext-dir "/a/path/extensions/"
:variables '(var1 'bar)))))
(setq var1 'foo)
(configuration-layer//set-layers-variables input)
(should (eq var1 'bar))))
;; (ert-deftest test-set-layers-variables--multiple-values ()
;; (let ((input `(,(cfgl-layer "layer"
;; :name 'layer
;; :dir "/a/path/"
;; :ext-dir "/a/path/extensions/"
;; :variables '(var1 'bar1 var2 'bar2 var3 'bar3)))))
;; (setq var1 'foo)
;; (setq var2 'foo)
;; (setq var3 'foo)
;; (configuration-layer//set-layers-variables input)
;; (should (eq var1 'bar1))
;; (should (eq var2 'bar2))
;; (should (eq var3 'bar3))))
(ert-deftest test-set-layers-variables--multiple-values ()
(let ((input `(,(cfgl-layer "layer"
:name 'layer
:dir "/a/path/"
:ext-dir "/a/path/extensions/"
:variables '(var1 'bar1 var2 'bar2 var3 'bar3)))))
(setq var1 'foo)
(setq var2 'foo)
(setq var3 'foo)
(configuration-layer//set-layers-variables input)
(should (eq var1 'bar1))
(should (eq var2 'bar2))
(should (eq var3 'bar3))))
;; (ert-deftest test-set-layers-variables--odd-number-of-values ()
;; (let ((input `(,(cfgl-layer "layer"
;; :name 'layer
;; :dir "/a/path/"
;; :ext-dir "/a/path/extensions/"
;; :variables '(var1 'bar var2)))))
;; (mocker-let
;; ((spacemacs-buffer/warning
;; (msg &rest args)
;; ((:record-cls 'mocker-stub-record :output nil :occur 1))))
;; (setq var1 'foo)
;; (setq var2 'foo)
;; (configuration-layer//set-layers-variables input)
;; (should (eq var1 'bar))
;; (should (eq var2 'foo)))))
(ert-deftest test-set-layers-variables--odd-number-of-values ()
(let ((input `(,(cfgl-layer "layer"
:name 'layer
:dir "/a/path/"
:ext-dir "/a/path/extensions/"
:variables '(var1 'bar var2)))))
(mocker-let
((spacemacs-buffer/warning
(msg &rest args)
((:record-cls 'mocker-stub-record :output nil :occur 1))))
(setq var1 'foo)
(setq var2 'foo)
(configuration-layer//set-layers-variables input)
(should (eq var1 'bar))
(should (eq var2 'foo)))))
;; ;; ---------------------------------------------------------------------------
;; ;; configuration-layer/make-package
;; ;; ---------------------------------------------------------------------------
;; ---------------------------------------------------------------------------
;; configuration-layer/make-package
;; ---------------------------------------------------------------------------
;; (ert-deftest test-make-package--input-is-a-symbol ()
;; (let* ((input 'testpkg)
;; (expected (cfgl-package "testpkg"
;; :name 'testpkg
;; :location 'elpa
;; :owner nil
;; :pre-layers nil
;; :post-layers nil
;; :step nil
;; :excluded nil))
;; (result (configuration-layer/make-package input)))
;; (should (equal result expected))))
(ert-deftest test-make-package--input-is-a-symbol ()
(let* ((input 'testpkg)
(expected (cfgl-package "testpkg"
:name 'testpkg
:location 'elpa
:owner nil
:pre-layers nil
:post-layers nil
:step nil
:excluded nil))
(result (configuration-layer/make-package input)))
(should (equal result expected))))
;; (ert-deftest test-make-package--input-is-a-list ()
;; (let* ((input '(testpkg :location local :step pre))
;; (expected (cfgl-package "testpkg"
;; :name 'testpkg
;; :owner nil
;; :location 'local
;; :pre-layers nil
;; :post-layers nil
;; :step 'pre
;; :excluded nil))
;; (result (configuration-layer/make-package input)))
;; (should (equal result expected))))
(ert-deftest test-make-package--input-is-a-list ()
(let* ((input '(testpkg :location local :step pre))
(expected (cfgl-package "testpkg"
:name 'testpkg
:owner nil
:location 'local
:pre-layers nil
:post-layers nil
:step 'pre
:excluded nil))
(result (configuration-layer/make-package input)))
(should (equal result expected))))
;; ;; ---------------------------------------------------------------------------
;; ;; configuration-layer/get-packages
;; ;; ---------------------------------------------------------------------------
;; ---------------------------------------------------------------------------
;; configuration-layer/get-packages
;; ---------------------------------------------------------------------------
(ert-deftest test-get-packages--symbols-only ()
(let* ((layer1 (cfgl-layer "layer1" :name 'layer1 :dir "/path"))
@ -409,115 +409,115 @@
[object cfgl-package "pkg1" pkg1 layer1 nil nil elpa nil nil])
(configuration-layer/get-packages layers))))))
;; ;; ---------------------------------------------------------------------------
;; ;; configuration-layer//directory-type
;; ;; ---------------------------------------------------------------------------
;; ---------------------------------------------------------------------------
;; configuration-layer//directory-type
;; ---------------------------------------------------------------------------
;; (ert-deftest test-directory-type--input-is-a-file ()
;; (let ((input "/a/path/to/a/layer/file"))
;; (mocker-let
;; ((file-directory-p (f)
;; ((:record-cls 'mocker-stub-record :output nil :occur 1))))
;; (should (null (configuration-layer//directory-type input))))))
(ert-deftest test-directory-type--input-is-a-file ()
(let ((input "/a/path/to/a/layer/file"))
(mocker-let
((file-directory-p (f)
((:record-cls 'mocker-stub-record :output nil :occur 1))))
(should (null (configuration-layer//directory-type input))))))
;; (ert-deftest test-directory-type--category ()
;; (let ((input (concat configuration-layer-contrib-directory "!vim/")))
;; (mocker-let
;; ((file-directory-p (f)
;; ((:record-cls 'mocker-stub-record :output t :occur 1))))
;; (should (eq 'category (configuration-layer//directory-type input))))))
(ert-deftest test-directory-type--category ()
(let ((input (concat configuration-layer-contrib-directory "!vim/")))
(mocker-let
((file-directory-p (f)
((:record-cls 'mocker-stub-record :output t :occur 1))))
(should (eq 'category (configuration-layer//directory-type input))))))
;; (ert-deftest test-directory-type--input-is-an-empty-directory ()
;; (let ((input "/a/path/to/a/layer/"))
;; (mocker-let
;; ((file-directory-p (f)
;; ((:record-cls 'mocker-stub-record :output t :occur 1)))
;; (directory-files
;; (directory &optional full match nosort)
;; ((:record-cls 'mocker-stub-record :output nil :occur 1))))
;; (should (null (configuration-layer//directory-type input))))))
(ert-deftest test-directory-type--input-is-an-empty-directory ()
(let ((input "/a/path/to/a/layer/"))
(mocker-let
((file-directory-p (f)
((:record-cls 'mocker-stub-record :output t :occur 1)))
(directory-files
(directory &optional full match nosort)
((:record-cls 'mocker-stub-record :output nil :occur 1))))
(should (null (configuration-layer//directory-type input))))))
;; (ert-deftest test-directory-type--input-is-directory-and-not-a-layer ()
;; (let ((input "/a/path/to/a/layer/"))
;; (mocker-let
;; ((file-directory-p (f)
;; ((:record-cls 'mocker-stub-record :output t :occur 1)))
;; (directory-files
;; (directory &optional full match nosort)
;; ((:record-cls 'mocker-stub-record :output '("toto.el" "tata.el") :occur 1))))
;; (should (null (configuration-layer//directory-type input))))))
(ert-deftest test-directory-type--input-is-directory-and-not-a-layer ()
(let ((input "/a/path/to/a/layer/"))
(mocker-let
((file-directory-p (f)
((:record-cls 'mocker-stub-record :output t :occur 1)))
(directory-files
(directory &optional full match nosort)
((:record-cls 'mocker-stub-record :output '("toto.el" "tata.el") :occur 1))))
(should (null (configuration-layer//directory-type input))))))
;; (ert-deftest test-directory-type--layer-with-packages.el ()
;; (let ((input "/a/path/to/a/layer/"))
;; (mocker-let
;; ((file-directory-p (f)
;; ((:record-cls 'mocker-stub-record :output t :occur 1)))
;; (directory-files
;; (directory &optional full match nosort)
;; ((:record-cls 'mocker-stub-record :output '("packages.el") :occur 1))))
;; (should (eq 'layer (configuration-layer//directory-type input))))))
(ert-deftest test-directory-type--layer-with-packages.el ()
(let ((input "/a/path/to/a/layer/"))
(mocker-let
((file-directory-p (f)
((:record-cls 'mocker-stub-record :output t :occur 1)))
(directory-files
(directory &optional full match nosort)
((:record-cls 'mocker-stub-record :output '("packages.el") :occur 1))))
(should (eq 'layer (configuration-layer//directory-type input))))))
;; (ert-deftest test-directory-type--layer-with-extensions.el ()
;; (let ((input "/a/path/to/a/layer/"))
;; (mocker-let
;; ((file-directory-p (f)
;; ((:record-cls 'mocker-stub-record :output t :occur 1)))
;; (directory-files
;; (directory &optional full match nosort)
;; ((:record-cls 'mocker-stub-record :output '("extensions.el") :occur 1))))
;; (should (eq 'layer (configuration-layer//directory-type input))))))
(ert-deftest test-directory-type--layer-with-extensions.el ()
(let ((input "/a/path/to/a/layer/"))
(mocker-let
((file-directory-p (f)
((:record-cls 'mocker-stub-record :output t :occur 1)))
(directory-files
(directory &optional full match nosort)
((:record-cls 'mocker-stub-record :output '("extensions.el") :occur 1))))
(should (eq 'layer (configuration-layer//directory-type input))))))
;; (ert-deftest test-directory-type--layer-with-config.el ()
;; (let ((input "/a/path/to/a/layer/"))
;; (mocker-let
;; ((file-directory-p (f)
;; ((:record-cls 'mocker-stub-record :output t :occur 1)))
;; (directory-files
;; (directory &optional full match nosort)
;; ((:record-cls 'mocker-stub-record :output '("config.el") :occur 1))))
;; (should (eq 'layer (configuration-layer//directory-type input))))))
(ert-deftest test-directory-type--layer-with-config.el ()
(let ((input "/a/path/to/a/layer/"))
(mocker-let
((file-directory-p (f)
((:record-cls 'mocker-stub-record :output t :occur 1)))
(directory-files
(directory &optional full match nosort)
((:record-cls 'mocker-stub-record :output '("config.el") :occur 1))))
(should (eq 'layer (configuration-layer//directory-type input))))))
;; (ert-deftest test-directory-type--layer-with-keybindings.el ()
;; (let ((input "/a/path/to/a/layer/"))
;; (mocker-let
;; ((file-directory-p (f)
;; ((:record-cls 'mocker-stub-record :output t :occur 1)))
;; (directory-files
;; (directory &optional full match nosort)
;; ((:record-cls 'mocker-stub-record :output '("keybindings.el") :occur 1))))
;; (should (eq 'layer (configuration-layer//directory-type input))))))
(ert-deftest test-directory-type--layer-with-keybindings.el ()
(let ((input "/a/path/to/a/layer/"))
(mocker-let
((file-directory-p (f)
((:record-cls 'mocker-stub-record :output t :occur 1)))
(directory-files
(directory &optional full match nosort)
((:record-cls 'mocker-stub-record :output '("keybindings.el") :occur 1))))
(should (eq 'layer (configuration-layer//directory-type input))))))
;; (ert-deftest test-directory-type--layer-with-funcs.el ()
;; (let ((input "/a/path/to/a/layer/"))
;; (mocker-let
;; ((file-directory-p (f)
;; ((:record-cls 'mocker-stub-record :output t :occur 1)))
;; (directory-files
;; (directory &optional full match nosort)
;; ((:record-cls 'mocker-stub-record :output '("funcs.el") :occur 1))))
;; (should (eq 'layer (configuration-layer//directory-type input))))))
(ert-deftest test-directory-type--layer-with-funcs.el ()
(let ((input "/a/path/to/a/layer/"))
(mocker-let
((file-directory-p (f)
((:record-cls 'mocker-stub-record :output t :occur 1)))
(directory-files
(directory &optional full match nosort)
((:record-cls 'mocker-stub-record :output '("funcs.el") :occur 1))))
(should (eq 'layer (configuration-layer//directory-type input))))))
;; ;; ---------------------------------------------------------------------------
;; ;; configuration-layer//get-category-from-path
;; ;; ---------------------------------------------------------------------------
;; ---------------------------------------------------------------------------
;; configuration-layer//get-category-from-path
;; ---------------------------------------------------------------------------
;; (ert-deftest test-get-category-from-path--input-is-a-file ()
;; (let ((input "/a/path/to/a/file"))
;; (mocker-let
;; ((file-directory-p (f)
;; ((:record-cls 'mocker-stub-record :output nil :occur 1))))
;; (should (null (configuration-layer//get-category-from-path input))))))
(ert-deftest test-get-category-from-path--input-is-a-file ()
(let ((input "/a/path/to/a/file"))
(mocker-let
((file-directory-p (f)
((:record-cls 'mocker-stub-record :output nil :occur 1))))
(should (null (configuration-layer//get-category-from-path input))))))
;; (ert-deftest test-get-category-from-path--input-is-a-regular-directory ()
;; (let ((input "/a/path/to/a/layer/"))
;; (mocker-let
;; ((file-directory-p (f)
;; ((:record-cls 'mocker-stub-record :output t :occur 1))))
;; (should (null (configuration-layer//get-category-from-path input))))))
(ert-deftest test-get-category-from-path--input-is-a-regular-directory ()
(let ((input "/a/path/to/a/layer/"))
(mocker-let
((file-directory-p (f)
((:record-cls 'mocker-stub-record :output t :occur 1))))
(should (null (configuration-layer//get-category-from-path input))))))
;; (ert-deftest test-get-category-from-path--return-category ()
;; (let ((input "/a/path/to/a/!cat/"))
;; (mocker-let
;; ((file-directory-p (f)
;; ((:record-cls 'mocker-stub-record :output t :occur 1))))
;; (should (eq 'cat (configuration-layer//get-category-from-path input))))))
(ert-deftest test-get-category-from-path--return-category ()
(let ((input "/a/path/to/a/!cat/"))
(mocker-let
((file-directory-p (f)
((:record-cls 'mocker-stub-record :output t :occur 1))))
(should (eq 'cat (configuration-layer//get-category-from-path input))))))