From 9311c2244f068124115d17daada5082e307b20fe Mon Sep 17 00:00:00 2001 From: Javier Olaechea Date: Tue, 20 Sep 2016 17:14:52 -0500 Subject: [PATCH 1/2] Move coleslaw-conf to its own ASDF system Ideally the package coleslaw would only have symbols that refer to configuration variables. However to ease setting *BASEDIR* to the right value using UIOP:SYMBOL-CALL we provide a setter, SET-BASEDIR. - Split each ASDF system into its own file - All system definitions are made in the ASDF-USER package, as recommended by ASDF. Fixes #110 --- coleslaw-conf.asd | 12 ++++++++++++ coleslaw-test.asd | 13 +++++++++++++ coleslaw.asd | 23 +++++++---------------- src/coleslaw-conf.lisp | 12 ++++++++++++ 4 files changed, 44 insertions(+), 16 deletions(-) create mode 100644 coleslaw-conf.asd create mode 100644 coleslaw-test.asd create mode 100644 src/coleslaw-conf.lisp diff --git a/coleslaw-conf.asd b/coleslaw-conf.asd new file mode 100644 index 0000000..c294d66 --- /dev/null +++ b/coleslaw-conf.asd @@ -0,0 +1,12 @@ +(in-package #:asdf-user) + +(defsystem #:coleslaw-conf + :name "coleslaw-conf" + :description "Configuration variable for Coleslaw, Flexible Lisp Blogware" + :version "0.9.7" + :license "BSD" + :author "Brit Butler " + :pathname "src/" + :depends-on () + :serial t + :components ((:file "coleslaw-conf"))) diff --git a/coleslaw-test.asd b/coleslaw-test.asd new file mode 100644 index 0000000..5426a07 --- /dev/null +++ b/coleslaw-test.asd @@ -0,0 +1,13 @@ +(in-package #:asdf-user) + +(defsystem #:coleslaw-test + :description "A test suite for coleslaw." + :license "BSD" + :author "Brit Butler " + :depends-on (:coleslaw :prove) + :defsystem-depends-on (:prove-asdf) + :components ((:module "tests" + :components + ((:test-file "tests")))) + :perform (test-op :after (op c) + (uiop:symbol-call :prove 'run c))) diff --git a/coleslaw.asd b/coleslaw.asd index 3506303..4dc4579 100644 --- a/coleslaw.asd +++ b/coleslaw.asd @@ -1,3 +1,5 @@ +(in-package #:asdf-user) + (defsystem #:coleslaw :name "coleslaw" :description "Flexible Lisp Blogware" @@ -5,7 +7,8 @@ :license "BSD" :author "Brit Butler " :pathname "src/" - :depends-on (:closure-template + :depends-on (:coleslaw-conf + :closure-template :3bmd :3bmd-ext-code-blocks :alexandria @@ -28,18 +31,6 @@ (:file "coleslaw")) :in-order-to ((test-op (test-op coleslaw-test)))) -(defsystem #:coleslaw-test - :description "A test suite for coleslaw." - :license "BSD" - :author "Brit Butler " - :depends-on (:coleslaw :prove) - :defsystem-depends-on (:prove-asdf) - :components ((:module "tests" - :components - ((:test-file "tests")))) - :perform (test-op :after (op c) - (uiop:symbol-call :prove 'run c))) - -(defpackage #:coleslaw-conf (:export #:*basedir*)) -(defparameter coleslaw-conf:*basedir* - (make-pathname :name nil :type nil :defaults *load-truename*)) +(defmethod perform :before ((op load-op) + (system (eql (find-system :coleslaw)))) + (uiop:symbol-call "COLESLAW-CONF" 'set-basedir #.*load-truename*)) diff --git a/src/coleslaw-conf.lisp b/src/coleslaw-conf.lisp new file mode 100644 index 0000000..6d363a9 --- /dev/null +++ b/src/coleslaw-conf.lisp @@ -0,0 +1,12 @@ +(defpackage #:coleslaw-conf + (:use #:cl) + (:export #:*basedir* + #:set-basedir)) + +(in-package #:coleslaw-conf) + +(defvar *basedir*) + +(defun set-basedir (pathname) + (setf coleslaw-conf:*basedir* + (make-pathname :name nil :type nil :defaults pathname))) From fc71373709fea6470e4ca3860cd8f7df15a9c584 Mon Sep 17 00:00:00 2001 From: Javier Olaechea Date: Tue, 20 Sep 2016 23:38:03 -0500 Subject: [PATCH 2/2] Test COLESLAW-CONF:*BASEDIR* It should point to coleslaw's top level directory. --- tests/tests.lisp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tests/tests.lisp b/tests/tests.lisp index 79e0106..200ba32 100644 --- a/tests/tests.lisp +++ b/tests/tests.lisp @@ -3,9 +3,10 @@ (in-package :coleslaw-tests) -(plan nil) +(plan 1) -(deftest 1-is-a-number - (is-type 1 'fixnum)) +(diag "COLESLAW-CONF:*BASEDIR* points to Coleslaw's top level directory") +(is (car (last (pathname-directory coleslaw-conf:*basedir*))) + "coleslaw" :test #'string=) (finalize)