simplify config setup, using *root* special variable
This commit is contained in:
parent
f248fc9e67
commit
5278b2551c
7 changed files with 20 additions and 28 deletions
10
config.lisp
10
config.lisp
|
@ -51,8 +51,8 @@
|
|||
(setf (gethash sl data) env-val)
|
||||
(setf (gethash sl data) dotenv-val))))))
|
||||
|
||||
(defun root (&rest params)
|
||||
(apply #'make-instance 'root params))
|
||||
(defun root (&rest params &key (class 'root) &allow-other-keys)
|
||||
(setf *root* (apply #'make-instance class params)))
|
||||
|
||||
;;;; config base class
|
||||
|
||||
|
@ -76,9 +76,9 @@
|
|||
(defmethod env-data ((cfg base))
|
||||
(env-data (parent cfg)))
|
||||
|
||||
(defun add (parent name &rest params
|
||||
&key (class 'base)
|
||||
&allow-other-keys)
|
||||
(defun add (name &rest params
|
||||
&key (class 'base) (parent *root*)
|
||||
&allow-other-keys)
|
||||
(apply #'make-instance class :parent parent :name name params))
|
||||
|
||||
(defun add-action (cfg pattern handler &rest params)
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
(in-package :scopes/test-core)
|
||||
|
||||
(setf *config* (config:root))
|
||||
(config:root)
|
||||
|
||||
(let ((cfg (config:add *config* :test-receiver :setup #'setup)))
|
||||
(let ((cfg (config:add :test-receiver :setup #'setup)))
|
||||
(config:add-action cfg '(:test) #'check-message))
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
(in-package :scopes/test-config)
|
||||
|
||||
(setf *config* (make-instance 'test-config))
|
||||
(config:root :class 'test-config)
|
||||
(config:add :child :class 'child-config)
|
||||
|
||||
(make-instance 'child-config :parent *config*)
|
||||
;(make-instance 'child-config :parent config:*root*)
|
||||
|
|
|
@ -2,9 +2,9 @@
|
|||
|
||||
(in-package :scopes/test-web)
|
||||
|
||||
(setf *config* (config:root :env-keys '(:address :port)))
|
||||
(config:root :env-keys '(:address :port))
|
||||
|
||||
(let ((cfg (config:add *config* :server
|
||||
(let ((cfg (config:add :server
|
||||
:class 'server:config
|
||||
:port "8899"
|
||||
:routes
|
||||
|
@ -12,7 +12,7 @@
|
|||
(() server:fileserver
|
||||
:doc-root ,(t:test-path "" "docs")))))))
|
||||
|
||||
(let ((cfg (config:add *config* :client
|
||||
(let ((cfg (config:add :client
|
||||
:class 'client:config
|
||||
:base-url "http://localhost:8899"
|
||||
:doc-path "/" :api-path "/api/"))))
|
||||
|
|
|
@ -12,8 +12,6 @@
|
|||
|
||||
(in-package :scopes/test-config)
|
||||
|
||||
(defvar *config* nil)
|
||||
|
||||
(defclass test-config (config:root)
|
||||
((config:env-keys :initform '(:user :password))
|
||||
(config:env-path :initform (t:test-path ".test.env"))))
|
||||
|
@ -24,8 +22,7 @@
|
|||
(password :accessor password :initarg :password)))
|
||||
|
||||
(defun run ()
|
||||
(let ((*config* nil)
|
||||
(t:*test-suite* (t:test-suite "config")))
|
||||
(let ((t:*test-suite* (t:test-suite "config")))
|
||||
(setf (uiop:getenv "SCOPES_PASSWORD") "very_secret")
|
||||
(load (t:test-path "config-dummy" "etc"))
|
||||
(test-make-path)
|
||||
|
@ -38,8 +35,8 @@
|
|||
(== (pathname-name (util:home-path ".env.txt" "lisp" "cl-scopes")) ".env"))
|
||||
|
||||
(deftest test-env-override ()
|
||||
(let ((data (config:env-data *config*))
|
||||
(child (car (config:children *config*))))
|
||||
(let ((data (config:env-data config:*root*))
|
||||
(child (car (config:children config:*root*))))
|
||||
(== (gethash :user data) "user-from-env-file")
|
||||
(== (gethash :password data) "very_secret")
|
||||
(== (user child) "user-from-env-file")
|
||||
|
|
|
@ -13,8 +13,6 @@
|
|||
|
||||
(in-package :scopes/test-core)
|
||||
|
||||
(defvar *config* nil)
|
||||
|
||||
;;;; core/testing: test-receiver
|
||||
|
||||
(defclass test-receiver (core:context)
|
||||
|
@ -49,13 +47,12 @@
|
|||
((receiver :accessor receiver :initarg :receiver)))
|
||||
|
||||
(defun run ()
|
||||
(let* ((*config* nil)
|
||||
(t:*test-suite* (make-instance 'test-suite :name "core")))
|
||||
(let* ((t:*test-suite* (make-instance 'test-suite :name "core")))
|
||||
(log4cl:log-config :sane :daily (t:test-path "scopes-test.log" "log"))
|
||||
(load (t:test-path "config-core" "etc"))
|
||||
(unwind-protect
|
||||
(progn
|
||||
(core:setup-services *config*)
|
||||
(core:setup-services config:*root*)
|
||||
(setf (receiver t:*test-suite*) (core:find-service :test-receiver))
|
||||
(test-send))
|
||||
(core:shutdown)
|
||||
|
|
|
@ -13,15 +13,12 @@
|
|||
|
||||
(in-package :scopes/test-web)
|
||||
|
||||
(defvar *config* nil)
|
||||
|
||||
(defun run ()
|
||||
(let ((t:*test-suite* (t:test-suite "web"))
|
||||
(*config* nil))
|
||||
(let ((t:*test-suite* (t:test-suite "web")))
|
||||
(load (t:test-path "config-web" "etc"))
|
||||
(unwind-protect
|
||||
(progn
|
||||
(core:setup-services *config*)
|
||||
(core:setup-services config:*root*)
|
||||
(let ((server (core:find-service :server))
|
||||
(client (core:find-service :client)))
|
||||
(test-server-config server)
|
||||
|
|
Loading…
Add table
Reference in a new issue