diff --git a/tests/hghave.py b/tests/hghave.py
index 683e99f0b30c2a09ec67a2af91a4a1c6438463df_dGVzdHMvaGdoYXZlLnB5..1bf3e6041e2c682ea1ba717a9bb8901172ba1bb8_dGVzdHMvaGdoYXZlLnB5 100644
--- a/tests/hghave.py
+++ b/tests/hghave.py
@@ -791,7 +791,7 @@
 def has_sqlite():
     try:
         import sqlite3
-        sqlite3.sqlite_version
+        version = sqlite3.sqlite_version_info
     except ImportError:
         return False
 
@@ -795,6 +795,10 @@
     except ImportError:
         return False
 
+    if version < (3, 8, 3):
+        # WITH clause not supported
+        return False
+
     return matchoutput('sqlite3 -version', b'^3\.\d+')
 
 @check('vcr', 'vcr http mocking library')
diff --git a/tests/test-storage.py b/tests/test-storage.py
index 683e99f0b30c2a09ec67a2af91a4a1c6438463df_dGVzdHMvdGVzdC1zdG9yYWdlLnB5..1bf3e6041e2c682ea1ba717a9bb8901172ba1bb8_dGVzdHMvdGVzdC1zdG9yYWdlLnB5 100644
--- a/tests/test-storage.py
+++ b/tests/test-storage.py
@@ -25,6 +25,14 @@
     sqlitestore = None
 
 try:
+    import sqlite3
+    if sqlite3.sqlite_version_info < (3, 8, 3):
+        # WITH clause not supported
+        sqlitestore = None
+except ImportError:
+    pass
+
+try:
     from mercurial import zstd
     zstd.__version__
 except ImportError: