2018-06-15 03:31:54 +02:00
|
|
|
;; -*- no-byte-compile: t; -*-
|
|
|
|
;;; core/test/test-core.el
|
|
|
|
|
2018-08-17 04:03:07 +02:00
|
|
|
(describe "core"
|
2019-09-03 00:41:03 -04:00
|
|
|
:var (doom-interactive-mode)
|
|
|
|
(before-each
|
|
|
|
(setq doom-interactive-mode nil))
|
|
|
|
|
|
|
|
(describe "initialization"
|
|
|
|
(describe "doom-initialize"
|
|
|
|
:var (doom-init-p)
|
2018-08-17 04:03:07 +02:00
|
|
|
(before-each
|
2019-09-03 00:41:03 -04:00
|
|
|
(setq doom-init-p nil))
|
|
|
|
|
|
|
|
(it "initializes once"
|
|
|
|
(expect (doom-initialize))
|
|
|
|
(expect (not (doom-initialize)))
|
|
|
|
(expect (not (doom-initialize)))
|
|
|
|
(expect doom-init-p))
|
|
|
|
|
|
|
|
(it "initializes multiple times, if forced"
|
|
|
|
(expect (doom-initialize))
|
|
|
|
(expect (not (doom-initialize)))
|
|
|
|
(expect (doom-initialize 'force)))
|
|
|
|
|
|
|
|
(describe "package initialization"
|
2018-08-17 04:03:07 +02:00
|
|
|
(before-each
|
2019-09-03 00:41:03 -04:00
|
|
|
(spy-on 'doom-initialize-packages :and-return-value t))
|
2018-08-17 04:03:07 +02:00
|
|
|
|
2019-09-03 00:41:03 -04:00
|
|
|
(it "initializes packages if core autoload file doesn't exist"
|
|
|
|
(let ((doom-autoload-file "doesnotexist"))
|
|
|
|
(doom-initialize))
|
|
|
|
(expect 'doom-initialize-packages :to-have-been-called))
|
2018-08-17 04:03:07 +02:00
|
|
|
|
2019-09-03 00:41:03 -04:00
|
|
|
(it "doesn't initialize packages if core autoload file was loaded"
|
|
|
|
(let ((doom-interactive-mode t))
|
|
|
|
(spy-on 'doom-load-autoloads-file :and-return-value t)
|
|
|
|
(doom-initialize)
|
|
|
|
(expect 'doom-load-autoloads-file :to-have-been-called-with doom-package-autoload-file)
|
|
|
|
(expect 'doom-initialize-packages :to-have-been-called)))
|
2018-08-17 04:03:07 +02:00
|
|
|
|
2019-09-03 00:41:03 -04:00
|
|
|
(it "initializes packages when forced"
|
|
|
|
(doom-initialize 'force)
|
|
|
|
(expect 'doom-initialize-packages :to-have-been-called)))
|
2018-08-17 04:03:07 +02:00
|
|
|
|
2019-09-03 00:41:03 -04:00
|
|
|
(describe "autoloads files"
|
2018-08-17 04:03:07 +02:00
|
|
|
(before-each
|
2019-09-03 00:41:03 -04:00
|
|
|
(spy-on 'doom-load-autoloads-file)
|
|
|
|
(spy-on 'warn :and-return-value t))
|
|
|
|
|
|
|
|
(it "loads autoloads file"
|
|
|
|
(let ((doom-interactive-mode t))
|
|
|
|
(ignore-errors (doom-initialize)))
|
|
|
|
(expect 'doom-load-autoloads-file
|
|
|
|
:to-have-been-called-with doom-autoload-file)
|
|
|
|
(expect 'doom-load-autoloads-file
|
|
|
|
:to-have-been-called-with doom-package-autoload-file))
|
|
|
|
|
|
|
|
(it "does not load package autoloads file if noninteractive"
|
|
|
|
(doom-initialize)
|
|
|
|
(expect 'doom-load-autoloads-file
|
|
|
|
:to-have-been-called-with doom-autoload-file)
|
|
|
|
(expect 'doom-load-autoloads-file
|
|
|
|
:not :to-have-been-called-with doom-package-autoload-file))
|
|
|
|
|
|
|
|
(it "throws doom-autoload-error in interactive session where autoload files don't exist"
|
|
|
|
(let ((doom-interactive-mode t)
|
|
|
|
(doom-autoload-file "doesnotexist")
|
|
|
|
(doom-package-autoload-file "doesnotexist"))
|
|
|
|
(expect (doom-initialize) :to-throw 'doom-autoload-error)))))
|
|
|
|
|
|
|
|
(describe "doom-initialize-core"
|
|
|
|
(before-each
|
|
|
|
(spy-on 'require))
|
|
|
|
|
|
|
|
(it "loads all doom core libraries"
|
|
|
|
(doom-initialize-core)
|
|
|
|
(expect 'require :to-have-been-called-with 'core-keybinds)
|
|
|
|
(expect 'require :to-have-been-called-with 'core-ui)
|
|
|
|
(expect 'require :to-have-been-called-with 'core-projects)
|
|
|
|
(expect 'require :to-have-been-called-with 'core-editor))))
|
|
|
|
|
|
|
|
(describe "doom-load-autoloads-file"
|
|
|
|
(before-each
|
|
|
|
(spy-on 'load :and-return-value t))
|
|
|
|
|
|
|
|
(it "loads the autoloads file"
|
|
|
|
(doom-load-autoloads-file doom-autoload-file)
|
|
|
|
(expect 'load :to-have-been-called-with (file-name-sans-extension doom-autoload-file)
|
|
|
|
'noerror 'nomessage)))
|
|
|
|
|
|
|
|
(describe "doom-load-envvars-file"
|
|
|
|
:var (envvarfile process-environment)
|
|
|
|
(before-each
|
|
|
|
(setq process-environment (copy-sequence process-environment))
|
|
|
|
(with-temp-file doom-env-file
|
|
|
|
(insert "\n\n\nA=1\nB=2\nC=3\n")))
|
|
|
|
(after-each
|
|
|
|
(delete-file doom-env-file))
|
|
|
|
|
|
|
|
(it "throws a file-error if file doesn't exist"
|
|
|
|
(expect (doom-load-envvars-file "/tmp/envvardoesnotexist")
|
|
|
|
:to-throw 'file-error))
|
|
|
|
|
|
|
|
(it "to fail silently if NOERROR is non-nil"
|
|
|
|
(expect (doom-load-envvars-file "/tmp/envvardoesnotexist" 'noerror)
|
|
|
|
:not :to-throw))
|
|
|
|
|
|
|
|
(it "loads a well-formed envvar file"
|
|
|
|
(expect (getenv "A") :not :to-be-truthy)
|
|
|
|
(expect (doom-load-envvars-file doom-env-file)
|
|
|
|
:to-equal '(("A" . "1") ("B" . "2") ("C" . "3")))
|
|
|
|
(expect (getenv "A") :to-equal "1"))
|
|
|
|
|
|
|
|
(it "fails on an invalid envvar file"
|
|
|
|
(with-temp-file doom-env-file (insert "A=1\nB=2\nC=3\n"))
|
|
|
|
(expect (doom-load-envvars-file doom-env-file) :to-throw))))
|