Skip to content
Snippets Groups Projects
Commit 9fcec4c2 authored by Robert P. Goldman's avatar Robert P. Goldman
Browse files

Added new test for missing source files.

When trying to explore the behavior of ASDF2 in connection with
rewriting that involves Lisp files, I was testing to verify that
ASDF will notice if we lose a .lisp file.  It does.  This test
checks that.
parent 01647351
No related branches found
No related tags found
No related merge requests found
;;; -*- Lisp -*-
(asdf:defsystem test-missing-lisp-file
:components ((:file "file2" :in-order-to ((compile-op (load-op "fileMissing"))))
(:file "fileMissing")))
;;; -*- Lisp -*-
;;;---------------------------------------------------------------------------
;;; This is supposed to verify that if a lisp file is lost, then any attempt to
;;; make the system will fail. I.e., we verify that we won't just load a stale
;;; fasl when the source file is lost.
;;;---------------------------------------------------------------------------
(load "script-support")
(load-asdf)
(quit-on-error
(setf asdf:*central-registry* '(*default-pathname-defaults*))
(let ((missing-name (namestring
(make-pathname :name "fileMissing"
:type "lisp"
:defaults
*default-pathname-defaults*)))
(template-file (namestring
(make-pathname :name "file1"
:type "lisp"
:defaults
*default-pathname-defaults*))))
(asdf::run-shell-command
(format nil "cp ~a ~a" template-file missing-name))
(unless (probe-file missing-name)
(format t "File copy failed.~%"))
(asdf:operate 'asdf:load-op 'test-missing-lisp-file)
;; test that it compiled
(let* ((file1 (asdf:compile-file-pathname* "file2"))
(file2 (asdf:compile-file-pathname* "fileMissing"))
(file1-date (file-write-date file1)))
(assert file1-date)
(assert (file-write-date file2))
;; and loaded
(assert (symbol-value (find-symbol (symbol-name :*file1*) :test-package)))
;; now remove the lisp file we created, and wait for an error
(sleep 1) ; mtime has 1-second granularity, so pause here for fast machines
(asdf::run-shell-command (format nil "rm -f ~A" missing-name))
;; we shouldn't be able to find the input-file for the compile-op, and that
;; should be an error.
(multiple-value-bind (retval err)
(ignore-errors
(asdf:operate 'asdf:load-op 'test-missing-lisp-file))
(assert err)))))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment