Massive reorganization in progress.
[sod] / src / sod-test.asd
diff --git a/src/sod-test.asd b/src/sod-test.asd
new file mode 100644 (file)
index 0000000..17d6d40
--- /dev/null
@@ -0,0 +1,76 @@
+;;; -*-lisp-*-
+;;;
+;;; Tests for the Simple Object Design translator
+;;;
+;;; (c) 2009 Straylight/Edgeware
+;;;
+
+;;;----- Licensing notice ---------------------------------------------------
+;;;
+;;; This file is part of the Sensble Object Design, an object system for C.
+;;;
+;;; SOD is free software; you can redistribute it and/or modify
+;;; it under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 2 of the License, or
+;;; (at your option) any later version.
+;;;
+;;; SOD is distributed in the hope that it will be useful,
+;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with SOD; if not, write to the Free Software Foundation,
+;;; Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+(cl:defpackage #:sod-test-sysdef
+  (:use #:common-lisp #:asdf))
+
+(cl:in-package #:sod-test-sysdef)
+
+;;;--------------------------------------------------------------------------
+;;; Definition.
+
+(defsystem sod-test
+
+  ;; Boring copyright stuff.
+  :version "1.0.0"
+  :author "Mark Wooding"
+  :license "GNU General Public License, version 2 or later"
+
+  ;; Documentation.
+  :description "Tests for the Sensible Object Design translator."
+
+  :long-description
+  "This system provides unit tests for the Sod translator."
+
+  :depends-on ("sod" "xlunit")
+
+  :components
+  ((:file "test-base")
+
+   ;; Test the parser edifice.
+   (:module "parser" :depends-on ("test-base") :components
+    ((:file "test-parser")
+     (:file "test-scanner-charbuf")))
+
+   ;; The actual tests.
+   (:file "test-c-types" :depends-on ("test-base"))
+   (:file "test-codegen" :depends-on ("test-base"))))
+
+;;;--------------------------------------------------------------------------
+;;; Testing.
+
+(defmethod perform ((op test-op) (system (eql (find-system "sod-test"))))
+  (operate 'load-op system)
+  (funcall (find-symbol "RUN-TESTS" "SOD-TEST")))
+
+;;;--------------------------------------------------------------------------
+;;; Hacks.
+
+(defmethod perform :around
+    ((op compile-op) (component (eql (find-system "sod-test"))))
+  (let ((*compile-file-failure-behaviour* :warn))
+    (call-next-method)))
+
+;;;----- That's all, folks --------------------------------------------------