From 5278b2551c8aa91c1066b8cc8ce305d803ad437f Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Thu, 27 Jun 2024 09:16:55 +0200 Subject: [PATCH] simplify config setup, using *root* special variable --- config.lisp | 10 +++++----- test/etc/config-core.lisp | 4 ++-- test/etc/config-dummy.lisp | 5 +++-- test/etc/config-web.lisp | 6 +++--- test/test-config.lisp | 9 +++------ test/test-core.lisp | 7 ++----- test/test-web.lisp | 7 ++----- 7 files changed, 20 insertions(+), 28 deletions(-) diff --git a/config.lisp b/config.lisp index 08c8294..43ee50c 100644 --- a/config.lisp +++ b/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) diff --git a/test/etc/config-core.lisp b/test/etc/config-core.lisp index b8ecf93..a64a552 100644 --- a/test/etc/config-core.lisp +++ b/test/etc/config-core.lisp @@ -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)) diff --git a/test/etc/config-dummy.lisp b/test/etc/config-dummy.lisp index b760a78..995e654 100644 --- a/test/etc/config-dummy.lisp +++ b/test/etc/config-dummy.lisp @@ -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*) diff --git a/test/etc/config-web.lisp b/test/etc/config-web.lisp index 52f809b..abd10f1 100644 --- a/test/etc/config-web.lisp +++ b/test/etc/config-web.lisp @@ -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/")))) diff --git a/test/test-config.lisp b/test/test-config.lisp index a0e207d..8375393 100644 --- a/test/test-config.lisp +++ b/test/test-config.lisp @@ -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") diff --git a/test/test-core.lisp b/test/test-core.lisp index d8bdb7c..ba50e02 100644 --- a/test/test-core.lisp +++ b/test/test-core.lisp @@ -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) diff --git a/test/test-web.lisp b/test/test-web.lisp index 13642dc..7e948d8 100644 --- a/test/test-web.lisp +++ b/test/test-web.lisp @@ -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)