Loading test/test-missing-lisp-file.asd 0 → 100644 +5 −0 Original line number Diff line number Diff line ;;; -*- Lisp -*- (asdf:defsystem test-missing-lisp-file :components ((:file "file2" :in-order-to ((compile-op (load-op "fileMissing")))) (:file "fileMissing"))) test/test-missing-lisp-file.script 0 → 100644 +49 −0 Original line number Diff line number Diff line ;;; -*- 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))))) Loading
test/test-missing-lisp-file.asd 0 → 100644 +5 −0 Original line number Diff line number Diff line ;;; -*- Lisp -*- (asdf:defsystem test-missing-lisp-file :components ((:file "file2" :in-order-to ((compile-op (load-op "fileMissing")))) (:file "fileMissing")))
test/test-missing-lisp-file.script 0 → 100644 +49 −0 Original line number Diff line number Diff line ;;; -*- 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)))))