view test/test_readconfig.py @ 289:433a49cacefc

Avoid hard-coding the kde version: Do not override the determine_package_version method of the BaseSourcePackager so that the user can configure the version_template in the config file.
author Bernhard Herzog <bh@intevation.de>
date Wed, 09 Sep 2009 16:36:23 +0000
parents eaa696629a91
children faeeac2c4c71
line wrap: on
line source
# Copyright (C) 2008, 2009 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
handle_dependencies: False

[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
handle_dependencies: True
signing_key_id: abcd1234

[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
rules_svn_url: file:///tmp/my-debian-repository
"""

    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_files("treepkg", 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",
                 handle_dependencies=False,
                 packager_class="readconfig_test.extraargs",
                 pbuilderrc="/home/builder/mill/pbuilder/pbuilderrc",
                 root_cmd=['sudo'],
                 signing_key_id="",
                 svn_url="svn://example.com/extraargs/trunk",
                 rules_svn_url="file:///tmp/my-debian-repository",
                 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",
                 rules_svn_url="",
                 debrevision_prefix="treepkg",
                 handle_dependencies=True,
                 packager_class="readconfig_test.simple",
                 pbuilderrc="/home/builder/mill/pbuilder/pbuilderrc",
                 root_cmd=['sudo'],
                 signing_key_id="abcd1234",
                 svn_url="svn://example.com/simple/trunk")])
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)