diff --git a/test/etc/config-web.lisp b/test/etc/config-web.lisp index ad38196..6cc1c10 100644 --- a/test/etc/config-web.lisp +++ b/test/etc/config-web.lisp @@ -5,4 +5,5 @@ (setf *config* (make-instance 'config:root :env-keys '(:address :port))) -(make-instance 'server:config :parent *config*) +(make-instance 'server:config :parent *config* + :port "8899") diff --git a/test/test-web.lisp b/test/test-web.lisp index 7c52de9..412aa5d 100644 --- a/test/test-web.lisp +++ b/test/test-web.lisp @@ -13,18 +13,16 @@ (defvar *config* nil) (defun run () - (let ((t:*test-suite* (t:test-suite "web"))) + (let ((t:*test-suite* (t:test-suite "web")) + (*config* nil) + (server:*listener* nil)) (load (t:test-path "config-web" "etc")) - (test-server) + (let ((cfg (car (config:children *config*)))) + (test-server-config cfg) + (server:start cfg)) + (sleep 1) + (server:stop) (t:show-result))) -(defun app (env) - '(200 (:content-type "text/plain") ("Hello World!"))) - -(t:deftest test-server () - (let ((cfg (car (config:children *config*)))) - (== (parse-integer (server:port cfg)) 8888) - (setf server:*server* - (clack:clackup #'app - :port (parse-integer (server:port cfg)) - :address (server:address cfg))))) +(t:deftest test-server-config (cfg) + (== (parse-integer (server:port cfg)) 8899)) diff --git a/web/server.lisp b/web/server.lisp index bf36ab6..3962ecf 100644 --- a/web/server.lisp +++ b/web/server.lisp @@ -4,7 +4,7 @@ (:use :common-lisp) (:local-nicknames (:config :scopes/config)) (:export #:config #:address #:port - #:*server*)) + #:*listener* #:start #:stop)) (in-package :scopes/web/server) @@ -15,4 +15,18 @@ (defmethod initialize-instance :after ((cfg config) &key &allow-other-keys) (config:hash-to-slots (config:env-data cfg) cfg '(address port))) -(defvar *server* nil) +;;;; listener = server process + +(defvar *listener* nil) + +(defun app (env) + '(200 (:content-type "text/plain") ("Hello World!"))) + +(defun start (cfg) + (setf *listener* + (clack:clackup #'app + :port (parse-integer (port cfg)) + :address (address cfg)))) + +(defun stop () + (clack:stop *listener*))