--- /dev/null
+;;; -*-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 --------------------------------------------------