diff options
-rw-r--r-- | g_sorcery/ebuild.py | 28 | ||||
-rw-r--r-- | tests/test_ebuild.py | 66 |
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 |