 (ert-deftest emacsql-system ()
   "A short test that fully interacts with SQLite."
   (should-not (emacsql-sqlite3-unavailable-p))
-  (emacsql-with-connection (db (emacsql-sqlite nil))
-    (emacsql db [:create-table foo [x]])
-    (should-error (emacsql db [:create-table foo [x]]))
-    (emacsql db [:insert :into foo :values ([1] [2] [3])])
-    (should (equal (emacsql db [:select * :from foo])
-                   '((1) (2) (3))))))
+  (let ((emacsql-global-timeout emacsql-tests-timeout))
+    (emacsql-with-connection (db (emacsql-sqlite nil))
+      (emacsql db [:create-table foo [x]])
+      (should-error (emacsql db [:create-table foo [x]]))
+      (emacsql db [:insert :into foo :values ([1] [2] [3])])
+      (should (equal (emacsql db [:select * :from foo])
+                     '((1) (2) (3)))))))
 
 (ert-deftest emacsql-foreign-system ()
   "Tests that foreign keys work properly through Emacsql."
-  (emacsql-with-connection (db (emacsql-sqlite nil))
-    (emacsql-thread db
-      [:create-table person [(id integer :primary) name]]
-      [:create-table likes
-       ([(personid integer) color]
-        :references (personid person id :on-delete :cascade))]
-      [:replace :into person :values ([0 "Chris"] [1 "Brian"])])
-    (should (equal (emacsql db [:select * :from person :order-by id])
-                   '((0 "Chris") (1 "Brian"))))
-    (emacsql db [:insert :into likes :values ([0 red] [0 yellow] [1 yellow])])
-    (should (equal (emacsql db [:select * :from likes
-                                        :order-by [personid color]])
-                   '((0 red) (0 yellow) (1 yellow))))
-    (emacsql db [:delete :from person :where (= id 0)])
-    (should (equal (emacsql db [:select * :from likes])
-                   '((1 yellow))))))
+  (let ((emacsql-global-timeout emacsql-tests-timeout))
+    (emacsql-with-connection (db (emacsql-sqlite nil))
+      (emacsql-thread db
+        [:create-table person [(id integer :primary) name]]
+        [:create-table likes
+                       ([(personid integer) color]
+                        :references (personid person id :on-delete :cascade))]
+        [:replace :into person :values ([0 "Chris"] [1 "Brian"])])
+      (should (equal (emacsql db [:select * :from person :order-by id])
+                     '((0 "Chris") (1 "Brian"))))
+      (emacsql db [:insert :into likes :values ([0 red] [0 yellow] [1 yellow])])
+      (should (equal (emacsql db [:select * :from likes
+                                          :order-by [personid color]])
+                     '((0 red) (0 yellow) (1 yellow))))
+      (emacsql db [:delete :from person :where (= id 0)])
+      (should (equal (emacsql db [:select * :from likes])
+                     '((1 yellow)))))))
 
 (ert-deftest emacsql-error ()
   "Check that we're getting expected conditions."

(require 'ert)
(require 'emacsql)
(require 'emacsql-sqlite)

(ert-deftest emacsql-escape-identifier ()
  (should (string= (emacsql-escape-identifier "foo") "foo"))

                :type 'emacsql-syntax)
  (should-error (emacsql-compile nil [:insert :into foo :values 1])
                :type 'emacsql-syntax)
  (let ((emacsql-global-timeout emacsql-tests-timeout))
    (emacsql-with-connection (db (emacsql-sqlite nil))
      (emacsql db [:create-table foo [x]])
      (should-error (emacsql db [:create-table foo [x]])
                    :type 'emacsql-table))))

(provide 'emacsql-tests)

