view test/test_util.py @ 441:eadcb1bb54e2

Merged revisions 388-399 via svnmerge from svn+ssh://svn.wald.intevation.org/treepkg/branches/treepkg-status ........ r388 | bricks | 2010-07-28 10:38:50 +0200 (Mi, 28 Jul 2010) | 3 lines fix if statement upload hook should be called if it's not empty ........ r389 | bricks | 2010-07-28 13:38:00 +0200 (Mi, 28 Jul 2010) | 2 lines only rsync specified architectures from cachedir to publishdir ........ r390 | bricks | 2010-07-29 14:07:57 +0200 (Do, 29 Jul 2010) | 2 lines introduced after_copy_hook and made rsync upload to publishdir optional ........ r391 | bricks | 2010-07-29 15:43:39 +0200 (Do, 29 Jul 2010) | 3 lines publish package must be default to get original behaviour be more verbose at publishing ........ r392 | bricks | 2010-07-29 16:50:53 +0200 (Do, 29 Jul 2010) | 2 lines fix handling of showing only successfull builds together with num packages ........ r393 | bricks | 2010-07-29 16:52:42 +0200 (Do, 29 Jul 2010) | 2 lines fixed typo ........ r394 | bricks | 2010-07-29 16:59:10 +0200 (Do, 29 Jul 2010) | 2 lines fixed another typo ........ r395 | bricks | 2010-07-29 18:05:54 +0200 (Do, 29 Jul 2010) | 3 lines fixed another typo treepkg is really slow with many revisions ........ r396 | bricks | 2010-08-02 12:41:55 +0200 (Mo, 02 Aug 2010) | 2 lines fixed typos ........ r397 | bricks | 2010-08-02 17:36:12 +0200 (Mo, 02 Aug 2010) | 3 lines be more error prone in listing different files not checking if a dir exists caused several errors if a build wasn't successful ........ r398 | bricks | 2010-08-05 18:21:47 +0200 (Do, 05 Aug 2010) | 2 lines review changes ........ r399 | bricks | 2010-08-06 13:06:08 +0200 (Fr, 06 Aug 2010) | 4 lines cleanup modules fix test_info testcases added testcases for remove_trailingslashes and expand_filename ........
author Bjoern Ricks <bricks@intevation.de>
date Fri, 06 Aug 2010 13:41:54 +0000
parents 8e0c81870e5e
children 454967511f5c
line wrap: on
line source
# Copyright (C) 2007, 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.util module"""

import os
import unittest

from filesupport import FileTestMixin

from treepkg.util import replace_in_file, listdir_abs, md5sum, \
                         remove_trailing_slashes, expand_filename



class TestReplaceInFile(unittest.TestCase, FileTestMixin):

    def runtest(self, orig_contents, expected_contents, pattern, replacement):
        filename = self.create_temp_file("orig", orig_contents)
        changed = replace_in_file(filename, pattern, replacement)
        self.assertEquals(changed, orig_contents != expected_contents)
        self.check_file_contents(filename, expected_contents)

    def test_version_replacement(self):
        template = ("project foo version 1.0-svn%(rev)d"
                    "Some filler"
                    "text that sometimes"
                    "looks similar to the pattern"
                    "1.0-"
                    "foo 1.2-svn2"
                    "echo foo version 1.0-svn%(rev)d"
                    ""
                    "and more filler")
        self.runtest(template % dict(rev=0), template % dict(rev=321),
                     r"1\.0-svn0", "1.0-svn321")

    def test_no_matches(self):
        """Tests replace_in_file when no matches are found"""
        template = ("project foo version 1.0-svn%(rev)d"
                    "Some filler"
                    "text that sometimes"
                    "looks similar to the pattern"
                    "1.0-"
                    "foo 1.2-svn2"
                    "echo foo version 1.0-svn%(rev)d"
                    ""
                    "and more filler")
        self.runtest(template % dict(rev=0), template % dict(rev=0),
                     r"0\.9-svn0", "1.0-svn321")


class TestListDirAbs(unittest.TestCase, FileTestMixin):

    def setUp(self):
        self.directory = self.create_temp_dir("a_directory")

    def test_listdir_abs(self):
        directory = self.create_files("dir", [("foo.orig.tgz", ""),
                                              ("foo.dsc", ""),
                                              ("foo.diff.gz", ""),])
        self.assertEquals(sorted(listdir_abs(directory)),
                          sorted([os.path.join(directory, d)
                                  for d in ["foo.orig.tgz", "foo.dsc",
                                            "foo.diff.gz"]]))

    def test_listdir_abs_pattern(self):
        directory = self.create_files("dir", [("foo.orig.tgz", ""),
                                              ("foo.dsc", ""),
                                              ("foo.diff.gz", ""),])
        self.assertEquals(sorted(listdir_abs(directory, '*.dsc')),
                          [os.path.join(directory, "foo.dsc")])

class TestMd5sum(unittest.TestCase, FileTestMixin):

    content = "this is a test content"

    def setUp(self):
        self.testfile = self.create_temp_file("testmd5.txt", self.content)

    def test_md5sum(self):
        sum = md5sum(self.testfile)
        self.assertEquals("a12511153555c1f0f0a1eda200733a3f", sum)

class TestRemoveTrailingSlashes(unittest.TestCase):

    def test_remove_trailing_slashes(self):
        dir_w_slash    = "/tmp/dir/"
        dir_wo_slash = "/tmp/dir"

        self.assertEquals(dir_wo_slash, remove_trailing_slashes(dir_w_slash))
        self.assertEquals(dir_wo_slash, remove_trailing_slashes(dir_wo_slash))

class TestExpandFilename(unittest.TestCase):

    def test_expand_filenam(self):
        os.environ['MY_TEST_VAR'] = "def"
        path = "/abc/${MY_TEST_VAR}/"

        self.assertEquals("/abc/def/", expand_filename(path))
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)