Commit 877cc0a3 authored by Robert P. Goldman's avatar Robert P. Goldman
Browse files

Draft of test.

parent 53589ba1
Loading
Loading
Loading
Loading
+35 −0
Original line number Diff line number Diff line
;;; -*- Lisp -*-

;;; test retrying finding location of an ASDF system.


(in-package asdf-test)
(defparameter *old-registry* asdf:*central-registry*)
;;(defparameter *search-table* (hash-table->alist asdf::*source-registry*))
;;(pprint *search-table*)
;;(terpri)
(assert (asdf:find-system "test-asdf/force1"))

(DBG "Clearing the caches and finding.")
(setf asdf:*central-registry* nil)
(asdf/find-system:clear-defined-system "test-asdf/force1")
(assert (not (asdf:find-system "test-asdf/force1" nil)))
(let (tried-once)
  (handler-bind
   ((asdf:missing-dependency-of-version
     (lambda (c)
       ;; Nothing Quicklisp can do to recover from this, so
       ;; just resignal
       (error c)))
    (asdf:missing-dependency
     (lambda (c)
       (if (not tried-once)
           (let ((missing (asdf::missing-requires c)))
             (assert (equal missing "test-asdf/force1"))
             (setf tried-once t)
             (DBG "Trying to reset the central registry and retry.")
             (setf asdf:*central-registry* *old-registry*)
             (asdf:find-system missing))
         ;; avoid infinite looping
         (error c)))))
 (asdf:find-system "test-asdf/force1")))