diff --git a/sql/swh-vault-schema.sql b/swh/vault/sql/30-swh-schema.sql rename from sql/swh-vault-schema.sql rename to swh/vault/sql/30-swh-schema.sql --- a/sql/swh-vault-schema.sql +++ b/swh/vault/sql/30-swh-schema.sql @@ -1,4 +1,4 @@ -create table dbversion +create table if not exists dbversion ( version int primary key, release timestamptz not null, diff --git a/swh/vault/tests/__init__.py b/swh/vault/tests/__init__.py --- a/swh/vault/tests/__init__.py +++ b/swh/vault/tests/__init__.py @@ -0,0 +1,5 @@ +from os import path +import swh.vault + + +SQL_DIR = path.join(path.dirname(swh.vault.__file__), 'sql') diff --git a/swh/vault/tests/test_backend.py b/swh/vault/tests/test_backend.py --- a/swh/vault/tests/test_backend.py +++ b/swh/vault/tests/test_backend.py @@ -10,13 +10,11 @@ from unittest.mock import patch -from swh.core.tests.db_testing import DbTestFixture from swh.model import hashutil -from swh.storage.tests.storage_testing import StorageTestFixture from swh.vault.tests.vault_testing import VaultTestFixture, hash_content -class BaseTestBackend(VaultTestFixture, StorageTestFixture, DbTestFixture): +class BaseTestBackend(VaultTestFixture): @contextlib.contextmanager def mock_cooking(self): with patch.object(self.vault_backend, '_send_task') as mt: diff --git a/swh/vault/tests/test_cache.py b/swh/vault/tests/test_cache.py --- a/swh/vault/tests/test_cache.py +++ b/swh/vault/tests/test_cache.py @@ -5,9 +5,7 @@ import unittest -from swh.core.tests.db_testing import DbTestFixture from swh.model import hashutil -from swh.storage.tests.storage_testing import StorageTestFixture from swh.vault.tests.vault_testing import VaultTestFixture TEST_TYPE_1 = 'revision_gitfast' @@ -23,7 +21,7 @@ TEST_CONTENT_2 = b'test content 2' -class BaseTestVaultCache(VaultTestFixture, StorageTestFixture, DbTestFixture): +class BaseTestVaultCache(VaultTestFixture): def setUp(self): super().setUp() self.cache = self.vault_backend.cache # little shortcut diff --git a/swh/vault/tests/test_cookers.py b/swh/vault/tests/test_cookers.py --- a/swh/vault/tests/test_cookers.py +++ b/swh/vault/tests/test_cookers.py @@ -21,11 +21,9 @@ import dulwich.porcelain import dulwich.repo -from swh.core.tests.db_testing import DbTestFixture from swh.loader.git.loader import GitLoader from swh.model import hashutil from swh.model.from_disk import Directory -from swh.storage.tests.storage_testing import StorageTestFixture from swh.vault.cookers import DirectoryCooker, RevisionGitfastCooker from swh.vault.tests.vault_testing import VaultTestFixture, hash_content from swh.vault.to_disk import SKIPPED_MESSAGE, HIDDEN_MESSAGE @@ -102,7 +100,7 @@ self.git_shell(*args, stdout=None) -class BaseTestCookers(VaultTestFixture, StorageTestFixture, DbTestFixture): +class BaseTestCookers(VaultTestFixture): """Base class of cookers unit tests""" def setUp(self): super().setUp() diff --git a/swh/vault/tests/vault_testing.py b/swh/vault/tests/vault_testing.py --- a/swh/vault/tests/vault_testing.py +++ b/swh/vault/tests/vault_testing.py @@ -3,14 +3,17 @@ # License: GNU General Public License version 3, or any later version # See top-level LICENSE file for more information +import os import tempfile -import pathlib from swh.model import hashutil from swh.vault.backend import VaultBackend +from swh.storage.tests.storage_testing import StorageTestFixture +from swh.vault.tests import SQL_DIR -class VaultTestFixture: + +class VaultTestFixture(StorageTestFixture): """Mix this in a test subject class to get Vault Database testing support. This fixture requires to come before DbTestFixture and StorageTestFixture @@ -19,22 +22,12 @@ Usage example: - class TestVault(VaultTestFixture, StorageTestFixture, DbTestFixture): + class TestVault(VaultTestFixture, unittest.TestCase): ... """ - TEST_VAULT_DB_NAME = 'softwareheritage-test-vault' - - @classmethod - def setUpClass(cls): - if not hasattr(cls, 'DB_TEST_FIXTURE_IMPORTED'): - raise RuntimeError("VaultTestFixture needs to be followed by " - "DbTestFixture in the inheritance list.") - - test_dir = pathlib.Path(__file__).absolute().parent - test_db_dump = test_dir / '../../../sql/swh-vault-schema.sql' - test_db_dump = test_db_dump.absolute() - cls.add_db(cls.TEST_VAULT_DB_NAME, str(test_db_dump), 'psql') - super().setUpClass() + TEST_DB_NAME = 'softwareheritage-test-vault' + TEST_DB_DUMP = [StorageTestFixture.TEST_DB_DUMP, + os.path.join(SQL_DIR, '*.sql')] def setUp(self): super().setUp() @@ -49,7 +42,7 @@ 'allow_delete': True, } }, - 'db': 'postgresql:///' + self.TEST_VAULT_DB_NAME, + 'db': 'postgresql:///' + self.TEST_DB_NAME, 'scheduler': None, } self.vault_backend = VaultBackend(self.vault_config) @@ -63,7 +56,7 @@ def reset_vault_tables(self): excluded = {'dbversion'} - self.reset_db_tables(self.TEST_VAULT_DB_NAME, excluded=excluded) + self.reset_db_tables(self.TEST_DB_NAME, excluded=excluded) def hash_content(content):