aboutsummaryrefslogtreecommitdiffstats
path: root/Lisp/asdf/test
diff options
context:
space:
mode:
authorBrian Cully <bjc@kublai.com>2008-04-02 19:20:20 -0400
committerBrian Cully <bjc@kublai.com>2008-04-02 19:20:20 -0400
commitab10720260e2c184b319026da89f4dfd338500bb (patch)
treea692a27435da0296972e43b21b2f35762e720bfd /Lisp/asdf/test
downloadmoxie-ab10720260e2c184b319026da89f4dfd338500bb.tar.gz
moxie-ab10720260e2c184b319026da89f4dfd338500bb.zip
Initial commit
Diffstat (limited to 'Lisp/asdf/test')
-rw-r--r--Lisp/asdf/test/file1.lisp4
-rw-r--r--Lisp/asdf/test/file2.lisp2
-rw-r--r--Lisp/asdf/test/file3.lisp4
-rw-r--r--Lisp/asdf/test/file4.lisp2
-rw-r--r--Lisp/asdf/test/run-tests.sh39
-rw-r--r--Lisp/asdf/test/test1.asd12
-rw-r--r--Lisp/asdf/test/test1.script32
-rw-r--r--Lisp/asdf/test/test2.asd8
-rw-r--r--Lisp/asdf/test/test2.script19
-rw-r--r--Lisp/asdf/test/test2a.asd12
-rw-r--r--Lisp/asdf/test/test2b1.asd8
-rw-r--r--Lisp/asdf/test/test2b2.asd8
-rw-r--r--Lisp/asdf/test/test2b3.asd8
-rw-r--r--Lisp/asdf/test/test3.asd11
-rw-r--r--Lisp/asdf/test/test3.script23
-rw-r--r--Lisp/asdf/test/test4.script8
-rw-r--r--Lisp/asdf/test/wild-module.asd6
-rw-r--r--Lisp/asdf/test/wild-module.script7
18 files changed, 213 insertions, 0 deletions
diff --git a/Lisp/asdf/test/file1.lisp b/Lisp/asdf/test/file1.lisp
new file mode 100644
index 0000000..3612a2b
--- /dev/null
+++ b/Lisp/asdf/test/file1.lisp
@@ -0,0 +1,4 @@
+(defpackage :test-package (:use :cl))
+(in-package :test-package)
+(defvar *file1* t)
+
diff --git a/Lisp/asdf/test/file2.lisp b/Lisp/asdf/test/file2.lisp
new file mode 100644
index 0000000..a8192bb
--- /dev/null
+++ b/Lisp/asdf/test/file2.lisp
@@ -0,0 +1,2 @@
+(in-package :test-package)
+(assert *file1*)
diff --git a/Lisp/asdf/test/file3.lisp b/Lisp/asdf/test/file3.lisp
new file mode 100644
index 0000000..0ed2df7
--- /dev/null
+++ b/Lisp/asdf/test/file3.lisp
@@ -0,0 +1,4 @@
+(defpackage :test-package (:use :cl))
+(in-package :test-package)
+(defvar *file3* t)
+
diff --git a/Lisp/asdf/test/file4.lisp b/Lisp/asdf/test/file4.lisp
new file mode 100644
index 0000000..45a709a
--- /dev/null
+++ b/Lisp/asdf/test/file4.lisp
@@ -0,0 +1,2 @@
+(in-package :test-package)
+(assert *file3*)
diff --git a/Lisp/asdf/test/run-tests.sh b/Lisp/asdf/test/run-tests.sh
new file mode 100644
index 0000000..0c4f87e
--- /dev/null
+++ b/Lisp/asdf/test/run-tests.sh
@@ -0,0 +1,39 @@
+#!/bin/sh
+
+do_tests() {
+rm *.$2 || true
+( cd .. && echo '(compile-file "asdf")' |$1 )
+for i in *.script;
+do
+ rm *.$2 || true
+ if $1 < $i ;then
+ echo "Using $1, $i passed" >&2
+ else
+ echo "Using $1, $i failed" >&2
+ exit 1
+ fi
+done
+echo "Using $1, all tests apparently successful" >&2
+}
+
+# do_tests {lisp invocation} {fasl extension}
+# - read lisp forms one at a time from standard input
+# - quit with exit status 0 on getting eof
+# - quit with exit status >0 if an unhandled error occurs
+
+set -e
+
+if type sbcl
+then
+ do_tests "sbcl --userinit /dev/null --sysinit /dev/null --noprogrammer" fasl
+fi
+
+if [ -x /usr/bin/lisp ]
+then
+ do_tests "/usr/bin/lisp -batch -noinit" x86f
+fi
+
+if [ -x /usr/bin/clisp ]
+then
+ do_tests "/usr/bin/clisp -norc -ansi -I " fas
+fi
diff --git a/Lisp/asdf/test/test1.asd b/Lisp/asdf/test/test1.asd
new file mode 100644
index 0000000..423d796
--- /dev/null
+++ b/Lisp/asdf/test/test1.asd
@@ -0,0 +1,12 @@
+;;; -*- Lisp -*-
+(asdf:defsystem test1
+ :components ((:file "file2" :in-order-to ((compile-op (load-op "file1"))))
+ (:file "file1")))
+
+#|
+1) from clean, check that all fasl files build and that some function
+ defined in the second file is present
+
+2) delete the second fasl file, and build again. do test 1 again and
+ also check the date on file1.fasl
+|#
diff --git a/Lisp/asdf/test/test1.script b/Lisp/asdf/test/test1.script
new file mode 100644
index 0000000..f39882c
--- /dev/null
+++ b/Lisp/asdf/test/test1.script
@@ -0,0 +1,32 @@
+;;; -*- Lisp -*-
+(load "../asdf")
+(setf asdf:*central-registry* '(*default-pathname-defaults*))
+(asdf:operate 'asdf:load-op 'test1)
+
+;; test that it compiled
+(defvar file1-date (file-write-date (compile-file-pathname "file1")))
+(assert (and file1-date (file-write-date (compile-file-pathname "file2"))))
+
+;; and loaded
+(assert test-package::*file1*)
+
+;; now remove one output file and check that the other is _not_
+;; recompiled
+(sleep 1) ; mtime has 1-second granularity, so pause here for fast machines
+
+(asdf::run-shell-command "rm ~A"
+ (namestring (compile-file-pathname "file2")))
+(asdf:operate 'asdf:load-op 'test1)
+(assert (= file1-date (file-write-date (compile-file-pathname "file1"))))
+(assert (file-write-date (compile-file-pathname "file2")))
+
+;; now touch file1 and check that file2 _is_ also recompiled
+
+;; XXX run-shell-command loses if *default-pathname-defaults* is not the
+;; unix cwd. this is not a problem for run-tests.sh, but can be in general
+
+(let ((before (file-write-date (compile-file-pathname "file2"))))
+ (asdf::run-shell-command "touch file1.lisp")
+ (sleep 1)
+ (asdf:operate 'asdf:load-op 'test1)
+ (assert (> (file-write-date (compile-file-pathname "file2")) before)))
diff --git a/Lisp/asdf/test/test2.asd b/Lisp/asdf/test/test2.asd
new file mode 100644
index 0000000..344d17f
--- /dev/null
+++ b/Lisp/asdf/test/test2.asd
@@ -0,0 +1,8 @@
+;;; -*- Lisp -*-
+(asdf:defsystem test2b
+ :version "1.0"
+ :components ((:file "file2" :in-order-to ((compile-op (load-op "file1"))))
+ (:file "file1"))
+ :depends-on (version 'test2a "1.1"))
+
+
diff --git a/Lisp/asdf/test/test2.script b/Lisp/asdf/test/test2.script
new file mode 100644
index 0000000..bca6012
--- /dev/null
+++ b/Lisp/asdf/test/test2.script
@@ -0,0 +1,19 @@
+;;; -*- Lisp -*-
+(load "../asdf")
+(setf asdf:*central-registry* '(*default-pathname-defaults*))
+;(trace asdf::perform)
+;(trace asdf::find-component)
+;(trace asdf::traverse)
+(asdf:oos 'asdf:load-op 'test2b1)
+(assert (and (probe-file (compile-file-pathname "file3"))
+ (probe-file (compile-file-pathname "file4"))))
+(handler-case
+ (asdf:oos 'asdf:load-op 'test2b2)
+ (asdf:missing-dependency (c)
+ (format t "load failed as expected: - ~%~A~%" c))
+ (:no-error (c) (error "should have failed, oops")))
+(handler-case
+ (asdf:oos 'asdf:load-op 'test2b3)
+ (asdf:missing-dependency (c)
+ (format t "load failed as expected: - ~%~A~%" c))
+ (:no-error (c) (error "should have failed, oops")))
diff --git a/Lisp/asdf/test/test2a.asd b/Lisp/asdf/test/test2a.asd
new file mode 100644
index 0000000..0e031db
--- /dev/null
+++ b/Lisp/asdf/test/test2a.asd
@@ -0,0 +1,12 @@
+;;; -*- Lisp -*-
+(asdf:defsystem test2a
+ :version "1.1"
+ :components ((:file "file4" :in-order-to ((compile-op (load-op "file3"))))
+ (:file "file3")))
+#|
+this system is referenced by test2b[12]
+|#
+
+
+
+
diff --git a/Lisp/asdf/test/test2b1.asd b/Lisp/asdf/test/test2b1.asd
new file mode 100644
index 0000000..985b352
--- /dev/null
+++ b/Lisp/asdf/test/test2b1.asd
@@ -0,0 +1,8 @@
+;;; -*- Lisp -*-
+(asdf:defsystem test2b1
+ :version "1.0"
+ :components ((:file "file2" :in-order-to ((compile-op (load-op "file1"))))
+ (:file "file1"))
+ :in-order-to ((load-op (load-op (version test2a "1.1")))))
+
+
diff --git a/Lisp/asdf/test/test2b2.asd b/Lisp/asdf/test/test2b2.asd
new file mode 100644
index 0000000..3344fcd
--- /dev/null
+++ b/Lisp/asdf/test/test2b2.asd
@@ -0,0 +1,8 @@
+;;; -*- Lisp -*-
+(asdf:defsystem test2b2
+ :version "1.0"
+ :components ((:file "file2" :in-order-to ((compile-op (load-op "file1"))))
+ (:file "file1"))
+ :in-order-to ((load-op (load-op (version test2a "1.2")))))
+
+
diff --git a/Lisp/asdf/test/test2b3.asd b/Lisp/asdf/test/test2b3.asd
new file mode 100644
index 0000000..36771cc
--- /dev/null
+++ b/Lisp/asdf/test/test2b3.asd
@@ -0,0 +1,8 @@
+;;; -*- Lisp -*-
+(asdf:defsystem test2b3
+ :version "1.0"
+ :components ((:file "file2" :in-order-to ((compile-op (load-op "file1"))))
+ (:file "file1"))
+ :depends-on (bet-you-cant-find-this))
+
+
diff --git a/Lisp/asdf/test/test3.asd b/Lisp/asdf/test/test3.asd
new file mode 100644
index 0000000..10f82c9
--- /dev/null
+++ b/Lisp/asdf/test/test3.asd
@@ -0,0 +1,11 @@
+;;; -*- Lisp -*-
+(asdf:defsystem test3
+ :properties ((:prop1 . "value"))
+ :components
+ ((:module "deps"
+ :if-component-dep-fails :try-next
+ :pathname "."
+ :components
+ ((:file "file1" :in-order-to ((compile-op (feature :f1))))
+ (:file "file2" :in-order-to ((compile-op (feature :f2))))))))
+
diff --git a/Lisp/asdf/test/test3.script b/Lisp/asdf/test/test3.script
new file mode 100644
index 0000000..170d4c5
--- /dev/null
+++ b/Lisp/asdf/test/test3.script
@@ -0,0 +1,23 @@
+;;; -*- Lisp -*-
+#+(or f1 f2)
+ (error "This test cannot run if :f1 or :f2 are on *features*")
+(load "../asdf")
+(asdf:run-shell-command "rm ~A ~A"
+ (namestring (compile-file-pathname "file1"))
+ (namestring (compile-file-pathname "file2")))
+(setf asdf:*central-registry* '(*default-pathname-defaults*))
+(in-package :asdf)
+(handler-case
+ (asdf:oos 'asdf:load-op 'test3)
+ (asdf:missing-dependency (c)
+ (format t "first test failed as expected: - ~%~A~%" c))
+ (:no-error (c) (error "should have failed, oops")))
+(pushnew :f1 *features*)
+(asdf:oos 'asdf:load-op 'test3)
+(assert (probe-file (compile-file-pathname "file1")))
+(assert (not (probe-file (compile-file-pathname "file2"))))
+(run-shell-command "rm ~A" (namestring (compile-file-pathname "file1")))
+(setf *features* (cons :f2 (cdr *features*)))
+(asdf:oos 'asdf:load-op 'test3)
+(assert (probe-file (compile-file-pathname "file2")))
+(assert (not (probe-file (compile-file-pathname "file1"))))
diff --git a/Lisp/asdf/test/test4.script b/Lisp/asdf/test/test4.script
new file mode 100644
index 0000000..e0ca859
--- /dev/null
+++ b/Lisp/asdf/test/test4.script
@@ -0,0 +1,8 @@
+;;; -*- Lisp -*-
+(load "../asdf")
+(setf asdf:*central-registry* '(*default-pathname-defaults*))
+(in-package :asdf)
+(assert (not (component-property (find-system 'test3) :foo)))
+(assert (equal (component-property (find-system 'test3) :prop1) "value"))
+(setf (component-property (find-system 'test3) :foo) "bar")
+(assert (equal (component-property (find-system 'test3) :foo) "bar"))
diff --git a/Lisp/asdf/test/wild-module.asd b/Lisp/asdf/test/wild-module.asd
new file mode 100644
index 0000000..8c09008
--- /dev/null
+++ b/Lisp/asdf/test/wild-module.asd
@@ -0,0 +1,6 @@
+;;; -*- Lisp -*-
+
+(asdf:defsystem wild-module
+ :version "0.0"
+ :components ((:wild-module "systems"
+ :pathname "*.asd")))
diff --git a/Lisp/asdf/test/wild-module.script b/Lisp/asdf/test/wild-module.script
new file mode 100644
index 0000000..c514693
--- /dev/null
+++ b/Lisp/asdf/test/wild-module.script
@@ -0,0 +1,7 @@
+;;; -*- Lisp -*-
+
+(load "../asdf")
+(load "../wild-modules")
+
+(setf asdf:*central-registry* '(*default-pathname-defaults*))
+(asdf:operate 'asdf:load-op 'wild-module)