diff --git a/asdf.asd b/asdf.asd
index 7a453216cf78690edda73093684cedcc871f5a3d..e36a34e9293edad17bc1cee717b66a725d1bf3ad 100644
--- a/asdf.asd
+++ b/asdf.asd
@@ -15,7 +15,7 @@
   :licence "MIT"
   :description "Another System Definition Facility"
   :long-description "ASDF builds Common Lisp software organized into defined systems."
-  :version "2.26.97" ;; to be automatically updated by bin/bump-revision
+  :version "2.26.98" ;; to be automatically updated by bin/bump-revision
   :depends-on ()
   :components ((:module "build" :components ((:file "asdf"))))
   :in-order-to (#+asdf2.27 (compile-op (monolithic-load-concatenated-source-op generate-asdf))))
diff --git a/header.lisp b/header.lisp
index 7f6c07b8dfc9ead4405d975f5990004c368bf80e..f1bccd1597c32314bdd04310c65d7f21a62343b9 100644
--- a/header.lisp
+++ b/header.lisp
@@ -1,5 +1,5 @@
 ;; -*- mode: Common-Lisp; Base: 10 ; Syntax: ANSI-Common-Lisp ; coding: utf-8 -*-
-;;; This is ASDF 2.26.97: Another System Definition Facility.
+;;; This is ASDF 2.26.98: Another System Definition Facility.
 ;;;
 ;;; Feedback, bug reports, and patches are all welcome:
 ;;; please mail to <asdf-devel@common-lisp.net>.
diff --git a/test/run-tests.sh b/test/run-tests.sh
index 6167d3b4fe4c3ab35123ba6ede6c54fdc224eacb..1bf21f0397c5649a6ed4ec125f86e701450d1bac 100755
--- a/test/run-tests.sh
+++ b/test/run-tests.sh
@@ -233,41 +233,40 @@ extract_tagged_asdf () {
         esac
     fi
 }
+valid_upgrade_test_p () {
+    case "${1}:${2}:${3}" in
+        abcl:2.0[01][1-9]:*|abcl:2.2[1-2]:*)
+            : Skip, because it is so damn slow ;;
+        ccl:1.*|ccl:2.0[01]*)
+            : Skip, because ccl broke old asdf ;;
+        clisp:1.??*|clisp:2.00[0-7]:*)
+            # my old ubuntu clisp 2.44.1 is wired in with an antique ASDF 1 from CLC that can't be downgraded.
+            # 2.00[0-7] use UID, which fails on that CLISP and was removed afterwards.
+            # Note that for the longest time, CLISP has included 2.011 in its distribution.
+            : ;; 
+        cmucl:1.*|cmucl:2.00*|cmucl:2.01[0-4]:*)
+            : Skip, CMUCL has problems before 2.014.7 due to source-registry upgrade ;;
+        ecl*:1.*|ecl*:2.0[01]*|ecl*:2.20:*)
+            : Skip, because of various ASDF issues ;;
+        gcl:1.*|gcl:2.0*|gcl:2.2[0-6]*) : Skip old versions that do not support GCL 2.6 ;;
+        mkcl:1.*|mkcl:2.0[01]*|mkcl:2.2[0-3]:*)
+            : Skip, because MKCL is only supported starting with 2.24 ;;
+        xcl:1.*|xcl:2.00*|xcl:2.01[0-4]:*|xcl:*)
+            : XCL support starts with ASDF 2.014.2 - It also hangs badly during upgrade. ;;
+        *) return 0 ;;
+   esac
+   return 1
+}    
 run_upgrade_tests () {
     su=test/script-support.lisp
-    lu="(load\"$su\")"
-    lv="$command $eval $lu $eval" ;
+    lv="$command $eval (load\"$su\") $eval" ;
     for tag in `upgrade_tags` ; do
-        for x in load-system load-lisp load-lisp-compile-load-fasl load-fasl just-load-fasl ; do
-            lo="(asdf-test::load-asdf-lisp \"${tag}\")" ;
-            echo "Testing upgrade from ASDF ${tag} using method $x" ;
-            extract_tagged_asdf $tag
-            case ${lisp}:$tag:$x in
-                abcl:2.0[01][1-9]:*|abcl:2.2[1-2]:*)
-                    : Skip, because it is so damn slow ;;
-                ccl:1.*|ccl:2.0[01]*)
-                    : Skip, because ccl broke old asdf ;;
-                clisp:1.*|clisp:2.0[01]*)
-                    : Skip, because ccl broke old asdf ;;
-                cmucl:1.*|cmucl:2.00*|cmucl:2.01[0-4]:*)
-                    : Skip, CMUCL has problems before 2.014.7 due to source-registry upgrade ;;
-                ecl*:1.*|ecl*:2.0[01]*|ecl*:2.20:*)
-                    : Skip, because of various ASDF issues ;;
-                gcl:1.*|gcl:2.0*|gcl:2.2[0-6]*) : Skip old versions that do not support GCL 2.6 ;;
-                mkcl:1.*|mkcl:2.0[01]*|mkcl:2.2[0-3]:*)
-                    : Skip, because MKCL is only supported starting with 2.24 ;;
-                xcl:1.*|xcl:2.00*|xcl:2.01[0-4]:*|xcl:*)
-                    : XCL support starts with ASDF 2.014.2 - It also hangs badly during upgrade. ;;
-                *) (set -x ; case $x in
-                            load-system) l="$lo (asdf-test::load-asdf-system)" ;;
-                            load-lisp) l="$lo (asdf-test::load-asdf-lisp)" ;;
-                            load-lisp-compile-load-fasl) l="$lo (asdf-test::compile-load-asdf)" ;;
-                            load-fasl) l="$lo (asdf-test::load-asdf-fasl)" ;;
-                            just-load-fasl) l="(asdf-test::load-asdf-fasl)" ;;
-                            *) echo "WTF?" ; exit 2 ;; esac ;
-                        $lv "(asdf-test::test-asdf $l)" ) ||
-                    { echo "upgrade FAILED" ; exit 1 ;} ;; esac ;
-        done ; done 2>&1 | tee build/results/${lisp}-upgrade.text
+        for x in load-asdf-system load-asdf-lisp compile-load-asdf load-asdf-fasl just-load-asdf-fasl ; do
+            if valid_upgrade_test_p $lisp $tag $x ; then
+                echo "Testing upgrade from ASDF ${tag} using method $x" ;
+                $lv "(asdf-test::test-upgrade 'asdf-test::$x \"$tag\")" ||
+                { echo "upgrade FAILED for $lisp from $tag using method $x" ; exit 1 ;}
+    fi ; done ; done 2>&1 | tee build/results/${lisp}-upgrade.text
 }
 run_tests () {
   create_config
diff --git a/test/script-support.lisp b/test/script-support.lisp
index 6ba9ff3bfff8cb073cabcb9a5847a5694216fefa..51ea0765e8aa42dd02d9916ce7c065d60575658f 100644
--- a/test/script-support.lisp
+++ b/test/script-support.lisp
@@ -345,14 +345,18 @@ is bound, write a message and exit on an error.  If
     (register-directory *test-directory*)
     (acall :oos (asym :load-op) x :verbose verbose)))
 
-(defun testing-asdf (thunk)
+(defun test-upgrade (method tag) ;; called by run-test
   (with-test ()
-    (funcall thunk)
+    (unless (eq method 'just-load-asdf-fasl)
+      (format t "Loading old asdf ~A~%" tag)
+      (load-asdf-lisp tag))
+    (format t "Loading new asdf with method ~A~%" method)
+    (funcall method)
+    (format t "Testing it~%")
     (register-directory *test-directory*)
-    (load-test-system :test-module-depend)))
-
-(defmacro test-asdf (&body body) ;; used by test-upgrade
-  `(testing-asdf #'(lambda () ,@body)))
+    (load-test-system :test-module-depend)
+    (assert (eval (intern (symbol-name '#:*file1*) :test-package)))
+    (assert (eval (intern (symbol-name '#:*file3*) :test-package)))))
 
 (defun configure-asdf ()
   (setf *debug-asdf* (or *debug-asdf* (acall :getenvp "DEBUG_ASDF_TEST")))
@@ -380,6 +384,8 @@ is bound, write a message and exit on an error.  If
   (setf *quit-when-done* nil)
   (setf *package* (find-package :asdf-test)))
 
+(defun just-load-asdf-fasl () (load-asdf-fasl))
+
 ;; Actual scripts rely on this function:
 (defun common-lisp-user::load-asdf () (load-asdf))
 
diff --git a/upgrade.lisp b/upgrade.lisp
index 40ac0d3a05f000e75c652519dcff24e203a384e5..be262b5c1e1a5bab6a1b39b1322c7e378442ddc8 100644
--- a/upgrade.lisp
+++ b/upgrade.lisp
@@ -35,7 +35,7 @@
          ;; "2.345.6" would be a development version in the official upstream
          ;; "2.345.0.7" would be your seventh local modification of official release 2.345
          ;; "2.345.6.7" would be your seventh local modification of development version 2.345.6
-         (asdf-version "2.26.97")
+         (asdf-version "2.26.98")
          (existing-asdf (find-class (find-symbol* :component :asdf nil) nil))
          (existing-version *asdf-version*)
          (already-there (equal asdf-version existing-version)))
diff --git a/version.lisp-expr b/version.lisp-expr
index 061b942edbbf04112e535ef4d4136e32880dae25..11a7c42870dcf3c6d06eea1bab705556bf5d9d99 100644
--- a/version.lisp-expr
+++ b/version.lisp-expr
@@ -1 +1 @@
-"2.26.97"
+"2.26.98"