view test/test_info.py @ 413:94a6ae627b31 treepkg-status

implemented CacheDb to store copied Packages from build host
author Bjoern Ricks <bricks@intevation.de>
date Fri, 23 Jul 2010 16:40:38 +0000
parents e2afbd3c2bf1
children e0539b483b04
line wrap: on
line source
# Copyright (C) 2010 by Intevation GmbH
# Authors:
# Bjoern Ricks <bjoern.ricks@intevation.de>
#
# This program is free software under the GPL (>=v2)
# Read the file COPYING coming with the software for details.

"""Tests for treepkg.status.status"""

import unittest
import os.path
import sys

test_dir = os.path.dirname(__file__)
sys.path.append(os.path.join(test_dir, os.pardir))
sys.path.append(os.path.join(test_dir, os.pardir, "bin"))

from treepkg.info.status import *
from treepkg.report import get_packager_group
from filesupport import FileTestMixin

from publishdebianpackages import get_binary_arch
from publishdebianpackages import Package
from publishdebianpackages import CacheDb

class TreepkgInfoTest(unittest.TestCase, FileTestMixin):
    config_contents = """\
[DEFAULT]
#treepkg_dir: /home/builder/mill
#tracks_dir: %(treepkg_dir)s/tracks
tracks_dir: /home/builder/mill/tracks
root_cmd: sudo
pbuilder_dir: %(tracks_dir)s/pbuilder
builderconfig: %(pbuilder_dir)s/pbuilderrc
deb_email: treepkg@example.com
deb_fullname: TreePKG
pkg_revision_template: treepkg%%(pkg_revision)s
handle_dependencies: False

[treepkg]
instructions_file: %(tracks_dir)s/instructions
check_interval: 3600
name: testtreepkginfo

[pkg_simple]
pkg_basename: simple1
svn_url: svn://example.com/%(name)s/trunk
base_dir: %(tracks_dir)s/%(name)s
packager_class: treepkginfo_test.%(name)s
handle_dependencies: True
signing_key_id: abcd1234
changelog_msg_template: Update to feature branch r%%(revision)s
version_template: 1.0.svn%%(revision)s

"""

    files = [("treepkg.cfg", config_contents),
             ("treepkginfo_test",
              [("__init__.py", ""),
               ("simple.py",
                "\n".join(["class SourcePackager:",
                           "    pass",
                           ""])),
                            ])]

    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_createinfo(self):
        config_file = os.path.join(self.directory, "treepkg.cfg")
        tpkginfo = TreepkgInfo(config_file)
        tpkgrootinfo = tpkginfo.tpkgroot.info
        self.assertEquals("testtreepkginfo", tpkgrootinfo.name)
 

class TreepkgRootInfoTest(unittest.TestCase):

    def test_toxml(self):
        status = TreepkgRootInfo("testtreepkg")
        dom = status.toxml()
        xml = dom.toxml()
        self.assertEquals("<info><name>testtreepkg</name></info>", xml)

class TestPublishDebianPackages(unittest.TestCase, FileTestMixin):

    def test_get_binary_arch(self):
        source = get_binary_arch("source")
        self.assertEquals("source", source)
        binary_armel = get_binary_arch("armel")
        self.assertEquals("binary-armel", binary_armel)
        binary_armel = get_binary_arch("binary-armel")
        self.assertEquals("binary-armel", binary_armel)

    def test_cache_db(self):
        tmpdir = self.create_test_specific_temp_dir()
        package = Package("/tmp/abc/abc_0.1_i386.deb", "abc",
            "abc_0.1_i386.deb", "/source/abc/abc_0.1_i386.deb", 
            "binary-i386", "1234567")
#        tmpfile = self.create_temp_file("cachedb1", "abc")
#        with self.assertRaises(Exception):
#            db = CacheDb(tmpfile)

        dbfile = os.path.join(tmpdir, "cachedb2")
        db = CacheDb(dbfile)
        db.add_package(package)

        # test get_package and get_timestamp
        package2 = db.get_package(package.filename)
        self.assertNotEquals(None, package2)
        self.assertEquals(package.filename, package2.filename)
        self.assertEquals(package.name, package2.name)
        self.assertEquals(package.sourcepath, package2.sourcepath)
        self.assertEquals(package.arch, package2.arch)
        self.assertEquals(package.md5sum, package2.md5sum)

        # test get_old_packages
        package3 = Package("/tmp/foo/foo_0.2.i386.deb", "foo",
            "foo_0.2_i386.deb", "/tmp/foo/foo_0.2.i386.deb",
            "binary-i386", "987654321")
        db.add_package(package3)
        oldpackages = db.get_old_packages([package.filename])
        self.assertEquals(1, len(oldpackages))
        packages = db.get_packages()
        self.assertEquals(2, len(packages))
        db.remove_packages([package.filename for package in oldpackages])
        packages = db.get_packages()
        self.assertEquals(1, len(packages))

if __name__ == '__main__':
    unittest.main()
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)