aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJauhien Piatlicki <jauhien@gentoo.org>2015-04-17 22:59:50 +0200
committerJauhien Piatlicki <jauhien@gentoo.org>2015-04-17 22:59:50 +0200
commitbbe16a229b42e96f847246d82e8f1bcff4d60a82 (patch)
tree549cd622f18f06a4ac72aa5b963347d49dedfcf4
parent[g_sorcery/db_layout] fix BSON support and add tests for it (diff)
downloadg-sorcery-bbe16a229b42e96f847246d82e8f1bcff4d60a82.tar.gz
g-sorcery-bbe16a229b42e96f847246d82e8f1bcff4d60a82.tar.bz2
g-sorcery-bbe16a229b42e96f847246d82e8f1bcff4d60a82.zip
[g_sorcery/db_layout,g_sorcery/package_db] better version/format checking, fix exceptions
-rw-r--r--g_sorcery/db_layout.py4
-rw-r--r--g_sorcery/package_db.py19
2 files changed, 16 insertions, 7 deletions
diff --git a/g_sorcery/db_layout.py b/g_sorcery/db_layout.py
index da779bd..8eb81da 100644
--- a/g_sorcery/db_layout.py
+++ b/g_sorcery/db_layout.py
@@ -26,6 +26,8 @@ PACKAGES_FILE_NAME = 'packages'
JSON_FILE_SUFFIX = 'json'
BSON_FILE_SUFFIX = 'bson'
+SUPPORTED_DB_LAYOUTS=[0, 1]
+
class CategoryJSON(FileJSON):
"""
Category file in JSON format.
@@ -182,7 +184,7 @@ def get_layout(metadata):
raise DBLayoutError("unsupported packages file format: " + category_format)
return (category_cls, [file_name(CATEGORIES_FILE_NAME), file_name(METADATA_FILE_NAME)])
else:
- raise DBLayoutError("unsupported DB layout version: " + layout_version)
+ raise DBLayoutError("unsupported DB layout version: " + str(layout_version))
class DBLayout(object):
diff --git a/g_sorcery/package_db.py b/g_sorcery/package_db.py
index 5374ae5..4c67fdc 100644
--- a/g_sorcery/package_db.py
+++ b/g_sorcery/package_db.py
@@ -18,12 +18,13 @@ import portage
from .compatibility import basestring, py2k, TemporaryDirectory
-from .db_layout import DBLayout, JSON_FILE_SUFFIX
-from .exceptions import DBError, DBStructureError, InvalidKeyError, SyncError
+from .db_layout import DBLayout, JSON_FILE_SUFFIX, SUPPORTED_DB_LAYOUTS, SUPPORTED_FILE_FORMATS
+from .exceptions import DBError, DBLayoutError, DBStructureError, InvalidKeyError, SyncError
from .fileutils import FileJSON, load_remote_file, copy_all, wget
from .g_collections import Package
from .logger import Logger
+SUPPORTED_DB_STRUCTURES=[0, 1]
class PackageDB(object):
"""
@@ -142,11 +143,17 @@ class PackageDB(object):
if preferred_layout_version == 0 \
and preferred_db_version != 0:
- raise DBStructureError("Wrong DB version: " + preferred_db_version + \
+ raise DBStructureError("Wrong DB version: " + str(preferred_db_version) + \
", with DB layout version 0 it can be only 0")
- if not preferred_db_version in [0, 1]:
- raise DBStructureError("Unsupported DB version: " + preferred_db_version)
+ if not preferred_db_version in SUPPORTED_DB_STRUCTURES:
+ raise DBStructureError("Unsupported DB version: " + str(preferred_db_version))
+
+ if not preferred_layout_version in SUPPORTED_DB_LAYOUTS:
+ raise DBLayoutError("unsupported DB layout version: " + str(preferred_layout_version))
+
+ if not preferred_category_format in SUPPORTED_FILE_FORMATS:
+ raise DBLayoutError("unsupported packages file format: " + preferred_category_format)
self.logger = Logger()
self.directory = os.path.abspath(directory)
@@ -261,7 +268,7 @@ class PackageDB(object):
elif db_version == 1:
pass
else:
- raise DBStructureError("Unsupported DB version: " + db_version)
+ raise DBStructureError("Unsupported DB version: " + str(db_version))
def add_category(self, category, description=None):