view test/test_readconfig.py @ 265:9c0131d2e0e1

Add automatic detection and builds of svn tags for the kdepim enterprise4 packages. Doesn't work for kde-l10n yet.
author Bernhard Herzog <bh@intevation.de>
date Wed, 29 Apr 2009 16:53:00 +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)