Commits

Peter Bex committed e4dbb4f

Actually add some tests for fetching procedures, and error situations.

Ensure the tests use a temporary table so when the tests bomb out with
an error, the table won't be full; thereby causing issues with the
expected rows on the next run.

  • Participants
  • Parent commits 07890eb

Comments (0)

Files changed (1)

File tests/run.scm

 
 (define-syntax exec-sql
   (syntax-rules ()
-      ((_ sql ...) (begin 
-                     ((mysql sql ...) (lambda r (printf "~A~%" r)))))))
+    ((_ sql ...)
+     (begin
+       ((mysql sql ...) (lambda r (printf "~A~%" r)))))))
 
 (define-syntax assert-mysql-error
   (syntax-rules ()
               ((exn mysql) #t))))))
 
 (assert-mysql-error (exec-sql "gibberish"))
+
 (exec-sql "CREATE DATABASE IF NOT EXISTS chicken_scheme_mysql_client_test")
 (exec-sql "USE chicken_scheme_mysql_client_test")
 (exec-sql
 #<#SQL
-  CREATE TABLE IF NOT EXISTS `scheme_test` (
+  CREATE TEMPORARY TABLE IF NOT EXISTS `scheme_test` (
     `created_at`   TIMESTAMP,
     `name`         VARCHAR(32)
   )
           '(($name . "hello%2")))
 (exec-sql "INSERT INTO scheme_test (created_at, name) VALUES (NOW(), NULL)") 
 (exec-sql "SELECT * FROM scheme_test")
-
 (assert (mysql-null? "(NULL)"))
-(mysql-null "(ANOTHER NULL)")
 
+(let ((result '()))
+  ((mysql "SELECT name FROM scheme_test ORDER BY name")
+   (lambda (r)
+     (set! result (cons (car r) result))))
+  (assert (equal? result '("hello%2" "hell'o1" "(NULL)"))))
+
+(mysql-null "(ANOTHER NULL)")
 (assert (mysql-null? "(ANOTHER NULL)"))
-(exec-sql "SELECT * FROM scheme_test")
+(let ((result '()))
+  ((mysql "SELECT name FROM scheme_test ORDER BY name")
+   (lambda (r)
+     (set! result (cons (car r) result))))
+  (assert (equal? result '("hello%2" "hell'o1" "(ANOTHER NULL)"))))
 
-(exec-sql "DROP DATABASE chicken_scheme_mysql_client_test")
 (exec-sql "USE information_schema")
-
+(exec-sql "DROP DATABASE chicken_scheme_mysql_client_test")