aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--g_sorcery/ebuild.py28
-rw-r--r--tests/test_ebuild.py66
2 files changed, 94 insertions, 0 deletions
diff --git a/g_sorcery/ebuild.py b/g_sorcery/ebuild.py
index 47c727a..88e9acd 100644
--- a/g_sorcery/ebuild.py
+++ b/g_sorcery/ebuild.py
@@ -10,3 +10,31 @@
:copyright: (c) 2013 by Jauhien Piatlicki
:license: GPL-2, see LICENSE for more details.
"""
+
+import string
+
+class EbuildGenerator:
+ def __init__(self, db):
+ self.db = db
+
+ def generate(self, package):
+ #a possible exception should be catched in the caller
+ description = self.db.get_package_description(package)
+ ebuild = self.get_template(package, description)
+ ebuild = self.process(ebuild, description)
+ ebuild = self.postprocess(ebuild, description)
+ return ebuild
+
+ def process(self, ebuild, description):
+ result = []
+ for line in ebuild:
+ tmpl = string.Template(line)
+ result.append(tmpl.substitute(description))
+ return result
+
+ def get_template(self, package, description):
+ ebuild = []
+ return ebuild
+
+ def postprocess(self, ebuild, description):
+ return ebuild
diff --git a/tests/test_ebuild.py b/tests/test_ebuild.py
new file mode 100644
index 0000000..029e2df
--- /dev/null
+++ b/tests/test_ebuild.py
@@ -0,0 +1,66 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+"""
+ test_ebuild.py
+ ~~~~~~~~~~~~~~~~~~
+
+ ebuild generator test suite
+
+ :copyright: (c) 2013 by Jauhien Piatlicki
+ :license: GPL-2, see LICENSE for more details.
+"""
+
+import tempfile, unittest
+
+from g_sorcery import ebuild, package_db
+
+package = package_db.Package("app-test", "test", "0.1")
+
+class DummyDB(package_db.PackageDB):
+ def __init__(self, directory):
+ super().__init__(directory)
+
+ def generate_tree(self):
+ self.add_category("app-test")
+ self.add_package(package,
+ {"author" : "jauhien", "homepage" : "127.0.0.1"})
+
+
+class DummyEbuildGenerator(ebuild.EbuildGenerator):
+ def get_template(self, ebuild, description):
+ tmpl = ["test", "author: $author", "homepage: $homepage", "var: $$var"]
+ return tmpl
+
+
+class TestEbuildGenerator(unittest.TestCase):
+
+ def setUp(self):
+ self.tempdir = tempfile.TemporaryDirectory()
+ pass
+
+ def tearDown(self):
+ del self.tempdir
+ pass
+
+ def test_process(self):
+ eg = DummyEbuildGenerator(None)
+ tst_dict = {"a" : "d", "b" : "e", "c" : "f"}
+ ebuild = ["$a", "$b", "$c"]
+ ebuild = eg.process(ebuild, tst_dict)
+ self.assertEqual(ebuild, ["d", "e", "f"])
+
+ def test_generate(self):
+ db = DummyDB(self.tempdir.name)
+ db.generate()
+ eg = DummyEbuildGenerator(db)
+ ebuild = eg.generate(package)
+ self.assertEqual(ebuild, ['test', 'author: jauhien',
+ 'homepage: 127.0.0.1', 'var: $var'])
+
+
+def suite():
+ suite = unittest.TestSuite()
+ suite.addTest(TestEbuildGenerator('test_process'))
+ suite.addTest(TestEbuildGenerator('test_generate'))
+ return suite