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