diff --git a/test/test-try-refinding.script b/test/test-try-refinding.script index 4983e18c5873369a99afb1a547fc6b6cc62aa89d..94ce1b4f67eb0e6e4952edee3441883be5980526 100644 --- a/test/test-try-refinding.script +++ b/test/test-try-refinding.script @@ -41,7 +41,27 @@ (DBG "Now trying LOAD-SYSTEM with refinding.") (clear-caches-and-search) +(trace find-system) +(trace find-component) +(trace asdf::component-find-path) +(trace operate) (let (tried-once) + (flet ((handle-missing (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*) + (unless (find-restart 'asdf:reinitialize-source-registry-and-retry) + (error "Expected REINITIALIZE-SOURCE-REGISTRY-AND-RETRY restart not found.")) + (DBG "Before invoking restart, CENTRAL-REGISTRY is:~%~T~S" + asdf:*central-registry*) + (invoke-restart 'asdf:reinitialize-source-registry-and-retry) + (DBG "After invoking restart, CENTRAL-REGISTRY is:~%~T~S" + asdf:*central-registry*)) + ;; avoid infinite looping + (error c)))) (handler-bind ((asdf:missing-dependency-of-version (lambda (c) @@ -50,13 +70,10 @@ (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"))) + (DBG "Catching MISSING-DEPENDENCY condition:" tried-once) + (handle-missing c))) + (asdf:missing-component + (lambda (c) + (DBG "Catching MISSING-COMPONENT condition:" tried-once) + (handle-missing c)))) + (asdf:load-system "test-asdf/force1"))))