;;;; cl-scopes/test/test-config ;;;; Tests for the scopes/config functionality. (defpackage :scopes/test-config (:use :common-lisp) (:local-nicknames (:config :scopes/config) (:util :scopes/util) (:t :scopes/testing)) (:export #:run #:user #:password) (:import-from :scopes/testing #:deftest #:==)) (in-package :scopes/test-config) (defclass test-config (config:root) ((config:env-keys :initform '(:user :password)) (config:env-path :initform (t:test-path ".test.env")))) (defclass child-config (config:base) ((config:env-slots :initform '(user password)) (user :accessor user :initarg :user) (password :accessor password :initarg :password))) (defun run () (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) (test-env-override) (t:show-result))) (deftest test-make-path () ;(format t "~&runtime-path (.env): ~s" (util:runtime-path ".env" "app")) ;(format t "~&home-path: ~s" (util:home-path ".env.txt" "lisp" "cl-scopes")) (== (pathname-name (util:home-path ".env.txt" "lisp" "cl-scopes")) ".env")) (deftest test-env-override () (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") (== (password child) "very_secret")))