diff --git a/asdf.lisp b/asdf.lisp
index 1f4e11333c11739961341b071db40cc2fef3c558..4c3b982f24790e943e36f2e75a361e43f5abe50f 100644
--- a/asdf.lisp
+++ b/asdf.lisp
@@ -1,4 +1,4 @@
-;;; This is asdf: Another System Definition Facility.  $Revision: 1.121 $
+;;; This is asdf: Another System Definition Facility.  $Revision: 1.122 $
 ;;;
 ;;; Feedback, bug reports, and patches are all welcome: please mail to
 ;;; <cclan-list@lists.sf.net>.  But note first that the canonical
@@ -101,6 +101,7 @@
            #:circular-dependency        ; errors
            #:duplicate-names
 
+	   #:try-recompiling
            #:retry
            #:accept                     ; restarts
 	   )
@@ -118,7 +119,7 @@
 
 (in-package #:asdf)
 
-(defvar *asdf-revision* (let* ((v "$Revision: 1.121 $")
+(defvar *asdf-revision* (let* ((v "$Revision: 1.122 $")
                                (colon (or (position #\: v) -1))
                                (dot (position #\. v)))
                           (and v colon dot
@@ -854,7 +855,7 @@ the head of the tree"))
 	    (perform (make-instance 'asdf:compile-op) c))
 	   (t
 	    (with-simple-restart 
-		(:try-recompiling "Recompile ~a and try loading it again"
+		(try-recompiling "Recompile ~a and try loading it again"
 				  (component-name c))
 	      (setf state :failed-load)
 	      (call-next-method)
@@ -874,7 +875,7 @@ the head of the tree"))
 	    (perform (make-instance 'asdf:compile-op) c))
 	   (t
 	    (with-simple-restart 
-		(:try-recompiling "Try recompiling ~a"
+		(try-recompiling "Try recompiling ~a"
 				  (component-name c))
 	      (setf state :failed-compile)
 	      (call-next-method)
diff --git a/test/run-tests.sh b/test/run-tests.sh
index 231c12928ffac0d1b56074cd5534b81f2276e669..59fa14cc3d240388900f1a5dbd3413e8dedef0b3 100644
--- a/test/run-tests.sh
+++ b/test/run-tests.sh
@@ -6,10 +6,20 @@
 # - quit with exit status >0 if an unhandled error occurs
 
 
+if [ x"$1" = "xhelp" ]; then
+    echo "$0 [lisp invocation] [scripts-regex]"
+    echo " - read lisp forms one at a time from matching scripts"
+    echo " - quit with exit status 0 on getting eof"
+    echo " - quit with exit status >0 if an unhandled error occurs"
+    echo " you need to supply the .script in the second argument"
+    echo " lisps include sbcl, clisp, allegro and allegromodern"
+    exit -1
+fi
+
 if [ -z "$2" ]; then
     scripts="*.script"
 else
-    scripts="$2"
+    scripts="$2.script"
 fi
 
 sok=1
@@ -27,7 +37,7 @@ if [ $? -eq 0 ] ; then
       echo "Testing: $i" >&2
       test_count=`expr "$test_count" + 1`
       rm *.$2 || true
-      if $1 < $i ;then
+      if  $1 < $i ; then
         echo "Using $1, $i passed" >&2
 	test_pass=`expr "$test_pass" + 1`
       else
diff --git a/test/test-try-recompiling-1.script b/test/test-try-recompiling-1.script
new file mode 100644
index 0000000000000000000000000000000000000000..e6630cc39cf6c12ec9ffe2b649ffc3a39eee414b
--- /dev/null
+++ b/test/test-try-recompiling-1.script
@@ -0,0 +1,29 @@
+;;; -*- Lisp -*-
+
+;;; test asdf:try-recompiling restart
+
+(load "script-support")
+(load "../asdf")
+(exit-on-error 
+ (asdf:run-shell-command "rm -f ~A"
+			 (namestring 
+			  (compile-file-pathname "try-recompiling-1")))
+ (defvar *caught-error* nil)
+ (setf asdf:*central-registry* '(*default-pathname-defaults*))
+ (handler-bind ((error (lambda (c) 
+			 (setf *caught-error* t)
+			 (multiple-value-bind (name mode)
+			     (find-symbol
+			      (symbol-name 'try-recompiling)
+			      :asdf)
+			   (assert (eq mode :external))
+			   (let ((restart (find-restart name c)))
+			     #+(or)
+			     ;; debug
+			     (print (list c restart (compute-restarts c)))
+			     (when restart
+			       (invoke-restart restart)))))))
+   (asdf:oos 'asdf:load-op 'try-recompiling-1))
+ (assert *caught-error*)
+ )
+
diff --git a/test/try-recompiling-1.asd b/test/try-recompiling-1.asd
new file mode 100644
index 0000000000000000000000000000000000000000..ed2d2ecfcb83ed04c3fc4ab749451bc9bdcfcd17
--- /dev/null
+++ b/test/try-recompiling-1.asd
@@ -0,0 +1,4 @@
+;;; -*- Lisp -*-
+(asdf:defsystem try-recompiling-1
+    :components ((:file "try-recompiling-1")))
+
diff --git a/test/try-recompiling-1.lisp b/test/try-recompiling-1.lisp
new file mode 100644
index 0000000000000000000000000000000000000000..8f754c0253a1555a3a5af963cb191b1e9539cb72
--- /dev/null
+++ b/test/try-recompiling-1.lisp
@@ -0,0 +1,7 @@
+(in-package #:common-lisp-user)
+
+(defun try-recompiling-1 ()
+  (assert *caught-error*))
+
+(try-recompiling-1)
+