From a7ba970823f6034bf409dd1a6a5b709aef067dd4 Mon Sep 17 00:00:00 2001 From: Matt Westcott Date: Tue, 11 Jan 2022 20:29:39 +0000 Subject: [PATCH] Skip sqlite search backend tests if fts5 is unavailable --- wagtail/search/tests/test_backends.py | 8 ++++---- wagtail/search/tests/test_sqlite_backend.py | 2 ++ 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/wagtail/search/tests/test_backends.py b/wagtail/search/tests/test_backends.py index d242d4dbe6..1b290f6613 100644 --- a/wagtail/search/tests/test_backends.py +++ b/wagtail/search/tests/test_backends.py @@ -1,5 +1,4 @@ # coding: utf-8 -import sqlite3 import unittest from collections import OrderedDict @@ -18,6 +17,7 @@ from wagtail.search.backends import ( InvalidSearchBackendError, get_search_backend, get_search_backends) from wagtail.search.backends.base import BaseSearchBackend, FieldError, FilterFieldError from wagtail.search.backends.database.fallback import DatabaseSearchBackend +from wagtail.search.backends.database.sqlite.utils import fts5_available from wagtail.search.models import IndexEntry from wagtail.search.query import MATCH_ALL, MATCH_NONE, And, Boost, Not, Or, Phrase, PlainText from wagtail.tests.search import models @@ -755,7 +755,7 @@ class TestBackendLoader(TestCase): @unittest.skipIf(connection.vendor != 'sqlite', 'Only applicable to SQLite database systems') def test_import_by_name_sqlite_db_vendor(self): # This should return the fallback backend, because the SQLite backend doesn't support versions less than 3.19.0 - if sqlite3.sqlite_version_info < (3, 19, 0): + if not fts5_available(): from wagtail.search.backends.database.fallback import DatabaseSearchBackend db = get_search_backend(backend='default') self.assertIsInstance(db, DatabaseSearchBackend) @@ -767,7 +767,7 @@ class TestBackendLoader(TestCase): @unittest.skipIf(connection.vendor != 'sqlite', 'Only applicable to SQLite database systems') def test_import_by_path_sqlite_db_vendor(self): # Same as above - if sqlite3.sqlite_version_info < (3, 19, 0): + if not fts5_available(): from wagtail.search.backends.database.fallback import DatabaseSearchBackend db = get_search_backend(backend='wagtail.search.backends.database') self.assertIsInstance(db, DatabaseSearchBackend) @@ -779,7 +779,7 @@ class TestBackendLoader(TestCase): @unittest.skipIf(connection.vendor != 'sqlite', 'Only applicable to SQLite database systems') def test_import_by_full_path_sqlite_db_vendor(self): # Same as above - if sqlite3.sqlite_version_info < (3, 19, 0): + if not fts5_available(): from wagtail.search.backends.database.fallback import DatabaseSearchBackend db = get_search_backend(backend='wagtail.search.backends.database.SearchBackend') self.assertIsInstance(db, DatabaseSearchBackend) diff --git a/wagtail/search/tests/test_sqlite_backend.py b/wagtail/search/tests/test_sqlite_backend.py index de86eac011..eac033bb7a 100644 --- a/wagtail/search/tests/test_sqlite_backend.py +++ b/wagtail/search/tests/test_sqlite_backend.py @@ -7,11 +7,13 @@ from django.db import connection from django.test.testcases import TestCase from django.test.utils import override_settings +from wagtail.search.backends.database.sqlite.utils import fts5_available from wagtail.search.tests.test_backends import BackendTests @unittest.skipUnless(connection.vendor == 'sqlite', "The current database is not SQLite") @unittest.skipIf(sqlite3.sqlite_version_info < (3, 19, 0), "This SQLite version is not supported") +@unittest.skipUnless(fts5_available(), "The SQLite fts5 extension is not available") @override_settings(WAGTAILSEARCH_BACKENDS={ 'default': { 'BACKEND': 'wagtail.search.backends.database.sqlite.sqlite',