More meaningful error message for OPEN :IF-EXISTS :NEW-VERSION
[sbcl.git] / tests / filesys.pure.lisp
index 554fa07..00382ab 100644 (file)
 ;;;                                                    (:error :error))
 ;;;             collect (list 'do-open exist if-exists if-does-not-exist)))
 (with-test (:name :open-never-openning)
-  (flet ((do-open (existing if-exists if-does-not-exist)
+  (flet ((do-open (existing if-exists if-does-not-exist
+                   &optional (direction :output))
            (open (if existing
                      #.(or *compile-file-truename* *load-truename*)
                      "a-really-non-existing-file")
-                 :direction :output
+                 :direction direction
                  :if-exists if-exists :if-does-not-exist if-does-not-exist)))
     (assert (raises-error?
              (do-open nil nil :error)))
              (do-open nil :error :error)))
     (assert (not
              (do-open t nil nil)))
-    (assert (raises-error? (do-open t :error :error)))))
+    (assert (raises-error? (do-open t :error :error)))
+
+    (assert (raises-error?
+             (do-open nil nil :error :io)))
+    (assert (not
+             (do-open nil :error nil :io)))
+    (assert (not
+             (do-open t nil :error :io)))
+    (assert (raises-error?
+             (do-open t :error nil :io)))
+    (assert (not
+             (do-open nil nil nil :io)))
+    (assert (raises-error?
+             (do-open nil :error :error :io)))
+    (assert (not
+             (do-open t nil nil :io)))
+    (assert (raises-error? (do-open t :error :error :io)))))
+
+(with-test (:name :open-new-version)
+  (multiple-value-bind (value error)
+      (ignore-errors (open #.(or *compile-file-truename* *load-truename*)
+                           :direction :output
+                           :if-exists :new-version))
+    (assert (not value))
+    (assert error)
+    (assert (equal (simple-condition-format-control error)
+                   "OPEN :IF-EXISTS :NEW-VERSION is not supported ~
+                            when a new version must be created."))))