diff --git a/ansi-tests/compile-file-test-file-4.lsp b/ansi-tests/compile-file-test-file-4.lsp
new file mode 100644
index 0000000000000000000000000000000000000000..fd6d457fdc5d09eb38420d6ba77af423feadc56a
--- /dev/null
+++ b/ansi-tests/compile-file-test-file-4.lsp
@@ -0,0 +1,3 @@
+(in-package "CL-TEST")
+
+(defun compile-file-test-fun.4 () !foo)
diff --git a/ansi-tests/compile-file.lsp b/ansi-tests/compile-file.lsp
index c33300e895d897088ef081b8c9017d7d04da970f..bfcc2f2681347bb0f2001b6fc592861e546352d5 100644
--- a/ansi-tests/compile-file.lsp
+++ b/ansi-tests/compile-file.lsp
@@ -35,99 +35,100 @@
 		     (*standard-output* str)
 		     (apply #'compile-file file :allow-other-keys t args))))))
       (assert (= (length vals) 3))
-      (assert (or print verbose (string= str "")) ()
-	      "PRINT and VERBOSE are NIL and str is not empty: ~A"
-	      str)
-      (assert (or (not verbose) (position #\; str)))
       (destructuring-bind
 	  (output-truename warnings-p failure-p)
 	  vals
-	(assert (if actual-warnings-p failure-p t))
-	(assert (if expect-warnings failure-p t))
-	(assert (if expect-style-warnings warnings-p t))
 	(print (namestring (truename target-pathname)))
 	(print (namestring output-truename))
 	(values
-	 (equalpt (namestring (truename target-pathname))
-		  (namestring output-truename))
-	 (notnot (fboundp funname))
+	 (let ((v1 (or print verbose (string= str "")))
+	       (v2 (or (not verbose) (position #\; str)))
+	       (v3 (if actual-warnings-p failure-p t))
+	       (v4 (if expect-warnings failure-p t))
+	       (v5 (if expect-style-warnings warnings-p t))
+	       (v6 (or (null output-truename) (pathnamep output-truename)))
+	       (v7 (equalpt (namestring (truename target-pathname))
+			    (namestring output-truename)))
+	       (v8 (not (fboundp funname))))
+	   (if (and v1 v2 v3 v4 v5 v6 v7 v8) t
+	     (list v1 v2 v3 v4 v5 v6 v7 v8)))
 	 (progn
 	   (load target-pathname)
 	   (funcall funname)))))))
 
 (deftest compile-file.1
   (compile-file-test "compile-file-test-file.lsp" 'compile-file-test-fun.1)
-  t nil nil)
+  t nil)
 
 (deftest compile-file.2
   (compile-file-test "compile-file-test-file-2.lsp" 'compile-file-test-fun.2
 		     :expect-style-warnings t)
-  t nil nil)
+  t nil)
 
 (deftest compile-file.2a
   (compile-file-test "compile-file-test-file-2a.lsp" 'compile-file-test-fun.2a
 		     :expect-warnings t)
-  t nil nil)
+  t nil)
 
 (deftest compile-file.3
   (let ((*package* (find-package "CL-TEST")))
     (compile-file-test "compile-file-test-file-3.lsp" 'compile-file-test-fun.3))
-  t nil nil)
+  t nil)
 
 (deftest compile-file.4
   (let ((*package* (find-package "CL-USER")))
     (compile-file-test "compile-file-test-file-3.lsp" 'cl-user::compile-file-test-fun.3))
-  t nil nil)
+  t nil)
 
 (deftest compile-file.5
   (compile-file-test #p"compile-file-test-file.lsp" 'compile-file-test-fun.1)
-  t nil nil)
+  t nil)
 
 (deftest compile-file.6
   (compile-file-test "compile-file-test-file.lsp" 'compile-file-test-fun.1
 		     :output-file "foo.fasl")
-  t nil nil)
+  t nil)
 
 (deftest compile-file.6a
   (compile-file-test "compile-file-test-file.lsp" 'compile-file-test-fun.1
 		     :output-file "foo.ufsl")
-  t nil nil)
+  t nil)
 
 (deftest compile-file.7
   (compile-file-test "compile-file-test-file.lsp" 'compile-file-test-fun.1
 		     :external-format :default)
-  t nil nil)
+  t nil)
 
 (deftest compile-file.8
   (compile-file-test "compile-file-test-file.lsp" 'compile-file-test-fun.1
 		     :output-file #p"foo.fasl")
-  t nil nil)
+  t nil)
 
 (deftest compile-file.9
   (compile-file-test "compile-file-test-file.lsp" 'compile-file-test-fun.1
 		     :print t)
-  t nil nil)
+  t nil)
 
 (deftest compile-file.10
   (compile-file-test "compile-file-test-file.lsp" 'compile-file-test-fun.1
 		     :verbose t)
-  t nil nil)
+  t nil)
 
 (deftest compile-file.11
   (compile-file-test "compile-file-test-file.lsp" 'compile-file-test-fun.1
 		     :print nil)
-  t nil nil)
+  t nil)
 
 (deftest compile-file.12
   (compile-file-test "compile-file-test-file.lsp" 'compile-file-test-fun.1
 		     :verbose nil)
-  t nil nil)
+  t nil)
 
 ;;; A file stream is a pathname designator
 (deftest compile-file.13
   (with-open-file (s "compile-file-test-file.lsp" :direction :input)
 		  (compile-file-test s 'compile-file-test-fun.1))
-  t nil nil)
+  t nil)
 
 (deftest compile-file.14
   (let ((s (open "foo.fasl" :direction :output :if-exists :supersede
@@ -135,7 +136,13 @@
     (close s)
     (compile-file-test "compile-file-test-file.lsp" 'compile-file-test-fun.1
 		       :output-file s))
-  t nil nil)
+  t nil)
+
+(deftest compile-file.15
+  (let ((*readtable* (copy-readtable nil)))
+    (set-macro-character #\! (get-macro-character #\'))
+    (compile-file-test "compile-file-test-file-4.lsp" 'compile-file-test-fun.4))
+  t foo)
 
 ;;; Add tests for *compile-file-truename*, *compile-file-pathname*