From bb4d316ff7adf2a2732544732f53894066a4484e Mon Sep 17 00:00:00 2001
From: "Robert P. Goldman" <rpgoldman@gmail.com>
Date: Tue, 1 Jul 2014 10:30:04 -0500
Subject: [PATCH] This test version shows the failure.

---
 test/test-try-refinding.script | 31 +++++++++++++++++++++++++++++--
 1 file changed, 29 insertions(+), 2 deletions(-)

diff --git a/test/test-try-refinding.script b/test/test-try-refinding.script
index 615631ac..4983e18c 100644
--- a/test/test-try-refinding.script
+++ b/test/test-try-refinding.script
@@ -10,9 +10,12 @@
 ;;(terpri)
 (assert (asdf:find-system "test-asdf/force1"))
 
+(defun clear-caches-and-search ()
+  (setf asdf:*central-registry* nil)
+  (asdf/find-system:clear-defined-system "test-asdf/force1"))
+
 (DBG "Clearing the caches and finding.")
-(setf asdf:*central-registry* nil)
-(asdf/find-system:clear-defined-system "test-asdf/force1")
+(clear-caches-and-search)
 (assert (not (asdf:find-system "test-asdf/force1" nil)))
 (let (tried-once)
   (handler-bind
@@ -33,3 +36,27 @@
          ;; avoid infinite looping
          (error c)))))
  (asdf:find-system "test-asdf/force1")))
+
+(DBG "Refinding test successful.")
+
+(DBG "Now trying LOAD-SYSTEM with refinding.")
+(clear-caches-and-search)
+(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:load-system missing))
+         ;; avoid infinite looping
+         (error c)))))
+ (asdf:load-system "test-asdf/force1")))
-- 
GitLab