commit:     bbe16a229b42e96f847246d82e8f1bcff4d60a82
Author:     Jauhien Piatlicki <jauhien <AT> gentoo <DOT> org>
AuthorDate: Fri Apr 17 20:59:50 2015 +0000
Commit:     Jauhien Piatlicki <jauhien <AT> gentoo <DOT> org>
CommitDate: Fri Apr 17 20:59:50 2015 +0000
URL:        https://gitweb.gentoo.org/proj/g-sorcery.git/commit/?id=bbe16a22

[g_sorcery/db_layout,g_sorcery/package_db] better version/format checking, fix 
exceptions

 g_sorcery/db_layout.py  |  4 +++-
 g_sorcery/package_db.py | 19 +++++++++++++------
 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):

Reply via email to