(defvar *report-stream* *standard-output* "Stream to send text report.")
(defvar *sexp-report-stream* nil "Stream to send sexp report.")
(defvar *rt-connection*)
+(defvar *rt-basic*)
(defvar *rt-fddl*)
(defvar *rt-fdml*)
(defvar *rt-ooddl*)
(ignore-errors (create-database spec :database-type db-type)))
(setf *test-database-type* db-type)
- (when (>= (length spec) 3)
- (setq *test-database-user* (third spec)))
+ (setf *test-database-user*
+ (cond
+ ((eq :oracle db-type) (second spec))
+ ((>= (length spec) 3) (third spec))))
;; Connect to the database
(clsql:connect spec
(defun test-initialise-database ()
(test-basic-initialize)
-
(let ((*backend-warning-behavior*
(if (member *test-database-type* '(:postgresql :postgresql-socket))
:ignore
*** CLSQL ~A begun at ~A
*** ~A
*** ~A on ~A
-*** Database ~A backend~A.
+*** Database ~:@(~A~) backend~A.
******************************************************************************
"
report-type
(defun compute-tests-for-backend (db-type db-underlying-type)
- (declare (ignorable db-type))
(let ((test-forms '())
(skip-tests '()))
- (dolist (test-form (append (test-basic-forms)
- *rt-connection* *rt-fddl* *rt-fdml*
+ (dolist (test-form (append *rt-connection* *rt-basic* *rt-fddl* *rt-fdml*
*rt-ooddl* *rt-oodml* *rt-syntax*))
(let ((test (second test-form)))
(cond
(clsql-sys:in test :fdml/select/11 :oodml/select/5))
(push (cons test "boolean where not supported") skip-tests))
((and (null (clsql-sys:db-type-has-subqueries? db-underlying-type))
- (clsql-sys:in test :fdml/select/5 :fdml/select/10))
+ (clsql-sys:in test :fdml/select/5 :fdml/select/10
+ :fdml/select/32 :fdml/select/33))
(push (cons test "subqueries not supported") skip-tests))
((and (null (clsql-sys:db-type-transaction-capable? db-underlying-type
*default-database*))
(push (cons test "fancy math not supported") skip-tests))
((and (eql *test-database-type* :sqlite)
(clsql-sys:in test :fddl/view/4 :fdml/select/10
- :fdml/select/21))
+ :fdml/select/21 :fdml/select/32
+ :fdml/select/33))
(push (cons test "not supported by sqlite") skip-tests))
+ ((and (not (clsql-sys:db-type-has-bigint? db-type))
+ (clsql-sys:in test :basic/bigint/1))
+ (push (cons test "bigint not supported") skip-tests))
+ ((and (eql *test-database-underlying-type* :mysql)
+ (clsql-sys:in test :fdml/select/26))
+ (push (cons test "string table aliases not supported on all mysql versions") skip-tests))
((and (eql *test-database-underlying-type* :mysql)
(clsql-sys:in test :fdml/select/22 :fdml/query/5
:fdml/query/7 :fdml/query/8))
(push (cons test "not supported by mysql") skip-tests))
((and (null (clsql-sys:db-type-has-union? db-underlying-type))
- (clsql-sys:in test :fdml/query/6))
+ (clsql-sys:in test :fdml/query/6 :fdml/select/31))
(push (cons test "union not supported") skip-tests))
(t
(push test-form test-forms)))))
(values (nreverse test-forms) (nreverse skip-tests))))
-(defun rapid-load (type)
+(defun rapid-load (type &optional (position 0))
"Rapid load for interactive testing."
(when *default-database*
(disconnect :database *default-database*))
- (test-connect-to-database type (car (db-type-spec type (read-specs))))
- (test-initialise-database))
+ (test-connect-to-database type (nth position (db-type-spec type (read-specs))))
+ (test-initialise-database)
+ *default-database*)
(defun rl ()
(rapid-load :postgresql))
(rapid-load :mysql))
(defun rlo ()
- (rapid-load :odbc))
+ (rapid-load :oracle))