r8151: changes for asdf-install
[uffi.git] / uffi-tests.asd
1 ;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Base: 10 -*-
2 ;;;; *************************************************************************
3 ;;;; FILE IDENTIFICATION
4 ;;;;
5 ;;;; Name:          uffi-tests.asd
6 ;;;; Purpose:       ASDF system definitionf for uffi testing package
7 ;;;; Author:        Kevin M. Rosenberg
8 ;;;; Date Started:  Apr 2003
9 ;;;;
10 ;;;; $Id$
11 ;;;; *************************************************************************
12
13 (defpackage #:uffi-tests-system
14   (:use #:asdf #:cl))
15 (in-package #:uffi-tests-system)
16
17 (defvar *asd-file-dir* (pathname-directory *load-truename*))
18
19 (defclass uffi-test-source-file (c-source-file)
20   ())
21
22 (defmethod output-files ((o compile-op) (c uffi-test-source-file))
23   (let ((searched (or
24                    (probe-file #p"/usr/lib/uffi/uffi-c-test.so")
25                    (probe-file (make-pathname
26                                 :directory *asd-file-dir*
27                                 :name "uffi-c-test"
28                                 :type "so")))))
29     (if searched
30         (list searched)
31         (list (merge-pathnames
32                (make-pathname :name (component-name c)
33                               :type "so"
34                               :directory '(:relative "tests"))
35                (make-pathname :directory *asd-file-dir*))))))
36
37 (defmethod perform ((o load-op) (c uffi-test-source-file))
38   (dolist (f (asdf::input-files o c))
39     (funcall (intern (symbol-name '#:load-foreign-library)
40                      (symbol-name '#:uffi))
41              f :module "uffi_tests")))
42
43 (defmethod perform ((o compile-op) (c uffi-test-source-file))
44   (unless (zerop (run-shell-command "cd ~A; make"
45                                     (namestring (merge-pathnames
46                                                  (make-pathname
47                                                   :name nil
48                                                   :type nil
49                                                   :directory '(:relative "tests"))
50                                                  (make-pathname
51                                                   :directory *asd-file-dir*)))))
52     (error 'operation-error :component c :operation o)))
53
54
55 (defsystem uffi-tests
56     :depends-on (:uffi)
57     :components
58     ((:module tests
59               :components
60               ((:file "rt")
61                (:uffi-test-source-file "uffi-c-test")
62                (:file "package" :depends-on ("rt"))
63                (:file "strtol" :depends-on ("package"))
64                (:file "atoifl" :depends-on ("package"))
65                (:file "getenv" :depends-on ("package"))
66                (:file "gethostname" :depends-on ("package"))
67                (:file "union" :depends-on ("package"))
68                (:file "arrays" :depends-on ("package"))
69                (:file "structs" :depends-on ("package"))
70                (:file "pointers" :depends-on ("package"))
71                (:file "time" :depends-on ("package"))
72                (:file "foreign-loader" :depends-on ("package" "uffi-c-test"))
73                (:file "uffi-c-test-lib" :depends-on ("foreign-loader"))
74                (:file "compress" :depends-on ("foreign-loader"))
75                (:file "casts" :depends-on ("foreign-loader"))
76                (:file "foreign-var" :depends-on ("foreign-loader"))
77                ))))
78
79 (defmethod perform ((o test-op) (c (eql (find-system :uffi-tests))))
80   (or (funcall (intern (symbol-name '#:do-tests)
81                        (find-package '#:regression-test)))
82       (error "test-op failed")))