From 877cc0a3fa7ad4671ebca191e2efa970742d7e11 Mon Sep 17 00:00:00 2001 From: "Robert P. Goldman" <rpgoldman@gmail.com> Date: Mon, 30 Jun 2014 12:30:56 -0500 Subject: [PATCH] Draft of test. --- test/test-try-reloading.script | 35 ++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 test/test-try-reloading.script diff --git a/test/test-try-reloading.script b/test/test-try-reloading.script new file mode 100644 index 00000000..615631ac --- /dev/null +++ b/test/test-try-reloading.script @@ -0,0 +1,35 @@ +;;; -*- 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"))) -- GitLab