diff test/test_readconfig.py @ 114:02c261e4443f

Extend treepkg.readconfig.read_config: - use import_packager_module - allow %(name)s substitutions in packager_class values in the pkg_* sections
author Bernhard Herzog <bh@intevation.de>
date Tue, 01 Apr 2008 13:27:21 +0000
parents
children ce9f046058b5
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/test_readconfig.py	Tue Apr 01 13:27:21 2008 +0000
@@ -0,0 +1,98 @@
+# Copyright (C) 2008 by Intevation GmbH
+# Authors:
+# Bernhard Herzog <bh@intevation.de>
+#
+# This program is free software under the GPL (>=v2)
+# Read the file COPYING coming with the software for details.
+
+"""Tests for the treepkg.readconfig module"""
+
+import sys
+import os
+import operator
+import unittest
+
+from filesupport import FileTestMixin
+
+from treepkg.readconfig import read_config
+
+
+class TestReadConfig(unittest.TestCase, FileTestMixin):
+
+    config_contents = """\
+[DEFAULT]
+treepkg_dir: /home/builder/mill
+tracks_dir: %(treepkg_dir)s/tracks
+root_cmd: sudo
+pbuilder_dir: %(treepkg_dir)s/pbuilder
+pbuilderrc: %(pbuilder_dir)s/pbuilderrc
+deb_email: treepkg@example.com
+deb_fullname: TreePKG
+debrevision_prefix: treepkg
+
+[treepkg]
+instructions_file: %(treepkg_dir)s/instructions
+check_interval: 3600
+
+[pkg_simple]
+svn_url: svn://example.com/%(name)s/trunk
+base_dir: %(tracks_dir)s/%(name)s
+packager_class: readconfig_test.%(name)s
+
+[pkg_extraargs]
+svn_url: svn://example.com/%(name)s/trunk
+base_dir: %(tracks_dir)s/%(name)s
+packager_class: readconfig_test.extraargs
+orig_tarball: %(base_dir)s/mytarball.tgz
+"""
+
+    files = [("treepkg.cfg", config_contents),
+             ("readconfig_test",
+              [("__init__.py", ""),
+               ("simple.py",
+                "\n".join(["class SourcePackager:",
+                           "    pass",
+                           ""])),
+               ("extraargs.py",
+                "\n".join(["class PackageTrack:",
+                           "    extra_config_desc=['orig_tarball']",
+                           ""]))])]
+
+    def setUp(self):
+        self.directory = self.create_temp_dir(self.id())
+        self.create_files(self.directory, self.files)
+        self.old_path = sys.path
+        sys.path = [self.directory] + sys.path
+
+    def tearDown(self):
+        sys.path = self.old_path
+
+    def test_readconfig(self):
+        config_file = os.path.join(self.directory, "treepkg.cfg")
+        treepkg_opts, packager_opts = read_config(config_file)
+        self.assertEquals(treepkg_opts,
+                    dict(instructions_file="/home/builder/mill/instructions",
+                         check_interval=3600))
+        self.assertEquals(sorted(packager_opts,
+                                 key=operator.itemgetter("name")),
+                          [
+            dict(name="extraargs",
+                 base_dir="/home/builder/mill/tracks/extraargs",
+                 deb_email="treepkg@example.com",
+                 deb_fullname="TreePKG",
+                 debrevision_prefix="treepkg",
+                 packager_class="readconfig_test.extraargs",
+                 pbuilderrc="/home/builder/mill/pbuilder/pbuilderrc",
+                 root_cmd=['sudo'],
+                 svn_url="svn://example.com/extraargs/trunk",
+                 orig_tarball=("/home/builder/mill/"
+                               "tracks/extraargs/mytarball.tgz")),
+            dict(name="simple",
+                 base_dir="/home/builder/mill/tracks/simple",
+                 deb_email="treepkg@example.com",
+                 deb_fullname="TreePKG",
+                 debrevision_prefix="treepkg",
+                 packager_class="readconfig_test.simple",
+                 pbuilderrc="/home/builder/mill/pbuilder/pbuilderrc",
+                 root_cmd=['sudo'],
+                 svn_url="svn://example.com/simple/trunk")])
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)