diff --git a/MANIFEST.in b/MANIFEST.in --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,8 +1,8 @@ include Makefile include Makefile.local -include README.db_testing -include README.dev +include README.md include requirements.txt include requirements-swh.txt include version.txt recursive-include sql * +recursive-include swh/storage/sql * diff --git a/sql/swh-init.sql b/swh/storage/sql/10-swh-init.sql rename from sql/swh-init.sql rename to swh/storage/sql/10-swh-init.sql diff --git a/sql/swh-enums.sql b/swh/storage/sql/20-swh-enums.sql rename from sql/swh-enums.sql rename to swh/storage/sql/20-swh-enums.sql diff --git a/sql/swh-schema.sql b/swh/storage/sql/30-swh-schema.sql rename from sql/swh-schema.sql rename to swh/storage/sql/30-swh-schema.sql diff --git a/sql/swh-func.sql b/swh/storage/sql/40-swh-func.sql rename from sql/swh-func.sql rename to swh/storage/sql/40-swh-func.sql diff --git a/sql/swh-indexes.sql b/swh/storage/sql/60-swh-indexes.sql rename from sql/swh-indexes.sql rename to swh/storage/sql/60-swh-indexes.sql diff --git a/sql/swh-triggers.sql b/swh/storage/sql/70-swh-triggers.sql rename from sql/swh-triggers.sql rename to swh/storage/sql/70-swh-triggers.sql diff --git a/swh/storage/tests/__init__.py b/swh/storage/tests/__init__.py --- a/swh/storage/tests/__init__.py +++ b/swh/storage/tests/__init__.py @@ -0,0 +1,5 @@ +from os import path +import swh.storage + + +SQL_DIR = path.join(path.dirname(swh.storage.__file__), 'sql') diff --git a/swh/storage/tests/storage_testing.py b/swh/storage/tests/storage_testing.py --- a/swh/storage/tests/storage_testing.py +++ b/swh/storage/tests/storage_testing.py @@ -3,36 +3,30 @@ # 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.storage import get_storage +from swh.core.tests.db_testing import SingleDbTestFixture +from swh.storage.tests import SQL_DIR -class StorageTestFixture: + +class StorageTestFixture(SingleDbTestFixture): """Mix this in a test subject class to get Storage testing support. - This fixture requires to come before DbTestFixture in the inheritance list - as it uses its methods to setup its own internal database. + This fixture requires to come before SingleDbTestFixture in the + inheritance list as it uses its methods to setup its own + internal database. Usage example: - class TestStorage(StorageTestFixture, DbTestFixture): + class MyTestStorage(StorageTestFixture, unittest.TestCase): ... - """ - TEST_STORAGE_DB_NAME = 'softwareheritage-test-storage' - @classmethod - def setUpClass(cls): - if not hasattr(cls, 'DB_TEST_FIXTURE_IMPORTED'): - raise RuntimeError("StorageTestFixture needs to be followed by " - "DbTestFixture in the inheritance list.") - - test_dir = pathlib.Path(__file__).absolute().parent - test_data_dir = test_dir / '../../../../swh-storage-testdata' - test_db_dump = (test_data_dir / 'dumps/swh.dump').absolute() - cls.add_db(cls.TEST_STORAGE_DB_NAME, str(test_db_dump), 'pg_dump') - super().setUpClass() + """ + TEST_DB_NAME = 'softwareheritage-test-storage' + TEST_DB_DUMP = os.path.join(SQL_DIR, '*.sql') def setUp(self): super().setUp() @@ -41,7 +35,7 @@ self.storage_config = { 'cls': 'local', 'args': { - 'db': 'dbname=%s' % self.TEST_STORAGE_DB_NAME, + 'db': 'dbname=%s' % self.TEST_DB_NAME, 'objstorage': { 'cls': 'pathslicing', 'args': { @@ -60,4 +54,4 @@ def reset_storage_tables(self): excluded = {'dbversion', 'tool'} - self.reset_db_tables(self.TEST_STORAGE_DB_NAME, excluded=excluded) + self.reset_db_tables(self.TEST_DB_NAME, excluded=excluded) diff --git a/swh/storage/tests/test_api_client.py b/swh/storage/tests/test_api_client.py --- a/swh/storage/tests/test_api_client.py +++ b/swh/storage/tests/test_api_client.py @@ -33,7 +33,7 @@ 'storage': { 'cls': 'local', 'args': { - 'db': 'dbname=%s' % self.TEST_STORAGE_DB_NAME, + 'db': 'dbname=%s' % self.TEST_DB_NAME, 'objstorage': { 'cls': 'pathslicing', 'args': { diff --git a/swh/storage/tests/test_db.py b/swh/storage/tests/test_db.py --- a/swh/storage/tests/test_db.py +++ b/swh/storage/tests/test_db.py @@ -11,15 +11,13 @@ from swh.core.tests.db_testing import SingleDbTestFixture from swh.model.hashutil import hash_to_bytes from swh.storage.db import Db - -TEST_DIR = os.path.dirname(os.path.abspath(__file__)) -TEST_DATA_DIR = os.path.join(TEST_DIR, '../../../../swh-storage-testdata') +from . import SQL_DIR @attr('db') class TestDb(SingleDbTestFixture, unittest.TestCase): - - TEST_DB_DUMP = os.path.join(TEST_DATA_DIR, 'dumps/swh.dump') + TEST_DB_NAME = 'softwareheritage-test-storage' + TEST_DB_DUMP = os.path.join(SQL_DIR, '*.sql') def setUp(self): super().setUp() diff --git a/swh/storage/tests/test_storage.py b/swh/storage/tests/test_storage.py --- a/swh/storage/tests/test_storage.py +++ b/swh/storage/tests/test_storage.py @@ -20,11 +20,11 @@ @attr('db') -class BaseTestStorage(StorageTestFixture, DbTestFixture): +class BaseTestStorage(StorageTestFixture): def setUp(self): super().setUp() - db = self.test_db[self.TEST_STORAGE_DB_NAME] + db = self.test_db[self.TEST_DB_NAME] self.conn = db.conn self.cursor = db.cursor