diff --git a/test/compile-asdf.lisp b/test/compile-asdf.lisp
index 0818e32baeeb09ec2f28e9b260915819f34acafb..86e96e963a885fbde89db5aa9414fba539f3c469 100644
--- a/test/compile-asdf.lisp
+++ b/test/compile-asdf.lisp
@@ -20,17 +20,15 @@
            (compile-file *asdf-lisp* :output-file tmp))
        (declare (ignore result))
        (cond
+         #-ecl
          (warnings-p
-                ;;; ECL gives warnings that it shouldn't!
-          #+ecl (leave-lisp "ASDF compiled with warnings. Please fix ECL." 0)
-          #-ecl
           (leave-lisp "Testsuite failed: ASDF compiled with warnings" 1))
          (errors-p
           (leave-lisp "Testsuite failed: ASDF compiled with ERRORS" 2))
          (t
-          #+clisp ;; But for a bug in CLISP 2.48, we should use :if-exists :overwrite and be atomic
-          (posix:copy-file tmp *asdf-fasl* :method :rename)
-          #-clisp
-          (rename-file tmp *asdf-fasl*
-                       #+clozure :if-exists #+clozure :rename-and-delete)
+          #+ecl
+          (when warnings-p
+            (format t "~&ASDF compiled with warnings. Please fix ECL.~%"))
+          (ignore-errors (delete-file *asdf-fasl*))
+          (rename-file tmp *asdf-fasl*)
           (leave-lisp "ASDF compiled cleanly" 0)))))))
diff --git a/test/script-support.lisp b/test/script-support.lisp
index 6759a67f30066adf4a28b761790172fdec7a1ca2..1c368903dc75e24d031ec28cff8b066d20f9a84d 100644
--- a/test/script-support.lisp
+++ b/test/script-support.lisp
@@ -11,8 +11,23 @@
 (defvar *asdf-fasl*
   (compile-file-pathname
    (merge-pathnames
-    (make-pathname :directory '(:relative "tmp") :defaults *asdf-lisp*)
+    (make-pathname :directory '(:relative "tmp")
+                   :name (format nil "asdf-~(~A~)"
+                                 (or #+allegro (format nil "~Alisp" excl:*current-case-mode*)
+                                     #+armedbear :abcl
+                                     #+clisp :clisp
+                                     #+clozure :ccl
+                                     #+cmu :cmucl
+                                     #+corman :cormanlisp
+                                     #+digitool :mcl
+                                     #+ecl :ecl
+                                     #+gcl :gcl
+                                     #+lispworks :lispworks
+                                     #+sbcl :sbcl
+                                     #+scl scl))
+                   :defaults *asdf-lisp*)
     *asdf-lisp*)))
+
 (defun load-asdf ()
   (load *asdf-fasl*))