Page Menu
Home
Software Heritage
Search
Configure Global Search
Log In
Files
F7163686
D538.id1674.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
3 KB
Subscribers
None
D538.id1674.diff
View Options
diff --git a/swh/core/tests/db_testing.py b/swh/core/tests/db_testing.py
--- a/swh/core/tests/db_testing.py
+++ b/swh/core/tests/db_testing.py
@@ -4,9 +4,14 @@
# See top-level LICENSE file for more information
import os
+import glob
import psycopg2
import subprocess
+from swh.core.utils import numfile_sortkey as sortkey
+
+DB_DUMP_TYPES = {'.sql': 'psql', '.dump': 'pg_dump'}
+
def pg_restore(dbname, dumpfile, dumptype='pg_dump'):
"""
@@ -40,8 +45,10 @@
subprocess.check_call(['createdb', dbname])
-def db_create(dbname, dump=None, dumptype='pg_dump'):
- """create the test DB and load the test data dump into it
+def db_create(dbname, dumps=None):
+ """create the test DB and load the test data dumps into it
+
+ dumps is an iterable of couples (dump_file, dump_type).
context: setUpClass
@@ -51,8 +58,8 @@
except subprocess.CalledProcessError: # try recovering once, in case
pg_dropdb(dbname) # the db already existed
pg_createdb(dbname)
- if dump:
- pg_restore(dbname, dump, dumptype)
+ for dump, dtype in dumps:
+ pg_restore(dbname, dump, dtype)
return dbname
@@ -104,16 +111,13 @@
class DbTestContext:
- def __init__(self, name='softwareheritage-test', dump=None,
- dump_type='pg_dump'):
+ def __init__(self, name='softwareheritage-test', dumps=None):
self.dbname = name
- self.dump = dump
- self.dump_type = dump_type
+ self.dumps = dumps
def __enter__(self):
db_create(dbname=self.dbname,
- dump=self.dump,
- dumptype=self.dump_type)
+ dumps=self.dumps)
return self
def __exit__(self, *_):
@@ -174,14 +178,13 @@
DB_TEST_FIXTURE_IMPORTED = True
@classmethod
- def add_db(cls, name='softwareheritage-test', dump=None,
- dump_type='pg_dump'):
- cls._DB_DUMP_LIST[name] = (dump, dump_type)
+ def add_db(cls, name='softwareheritage-test', dumps=None):
+ cls._DB_DUMP_LIST[name] = dumps
@classmethod
def setUpClass(cls):
- for name, (dump, dump_type) in cls._DB_DUMP_LIST.items():
- cls._DB_LIST[name] = DbTestContext(name, dump, dump_type)
+ for name, dumps in cls._DB_DUMP_LIST.items():
+ cls._DB_LIST[name] = DbTestContext(name, dumps)
cls._DB_LIST[name].__enter__()
super().setUpClass()
@@ -247,17 +250,19 @@
TEST_DB_NAME = 'softwareheritage-test'
TEST_DB_DUMP = None
TEST_DB_DUMP_TYPE = None
- DB_DUMP_TYPES = {'.sql': 'psql', '.dump': 'pg_dump'}
@classmethod
def setUpClass(cls):
cls.dbname = cls.TEST_DB_NAME
- dump_type = (cls.TEST_DB_DUMP_TYPE or
- cls.DB_DUMP_TYPES[os.path.splitext(cls.TEST_DB_DUMP)[-1]])
+
+ dump_files = sorted(glob.glob(cls.TEST_DB_DUMP),
+ key=sortkey)
+
+ dump_files = [(x, DB_DUMP_TYPES[os.path.splitext(x)[1]])
+ for x in dump_files]
cls.add_db(name=cls.TEST_DB_NAME,
- dump=cls.TEST_DB_DUMP,
- dump_type=dump_type)
+ dumps=dump_files)
super().setUpClass()
def setUp(self):
diff --git a/swh/core/utils.py b/swh/core/utils.py
--- a/swh/core/utils.py
+++ b/swh/core/utils.py
@@ -6,6 +6,7 @@
import os
import itertools
import codecs
+import re
from contextlib import contextmanager
@@ -101,3 +102,16 @@
"""
return path1.split(path0)[1]
+
+
+def numfile_sortkey(fname):
+ """Simple function to sort filenames of the form:
+
+ nnxxx.ext
+
+ where nn is a number according to the numbers.
+
+ Typically used to sort sql/nn-swh-xxx.sql files.
+ """
+ num, rem = re.match(r'(\d*)(.*)', fname).groups()
+ return (num and int(num) or 99, rem)
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Jan 30, 1:07 PM (1 w, 12 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3220828
Attached To
D538: refactor SingleDbTestFixture class to add generic db initialization
Event Timeline
Log In to Comment