annotate test/test_util.py @ 310:26c15a0f0e52

When stopping because of an error, do not raise the exception again as it leads to confusing double tracebacks in the log. Instead, simply log the reason for the stopping and stop in the same way a stop instruction is handled.
author Bernhard Herzog <bh@intevation.de>
date Wed, 02 Dec 2009 14:46:37 +0000
parents e3ab8aca2b08
children bfd1c6a155fa
rev   line source
111
7f6fb8103db0 Move the sed-like replacement code from enterprise/kdepim.py to treepkg/util.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
1 # Copyright (C) 2007, 2008 by Intevation GmbH
7f6fb8103db0 Move the sed-like replacement code from enterprise/kdepim.py to treepkg/util.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
2 # Authors:
7f6fb8103db0 Move the sed-like replacement code from enterprise/kdepim.py to treepkg/util.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
3 # Bernhard Herzog <bh@intevation.de>
7f6fb8103db0 Move the sed-like replacement code from enterprise/kdepim.py to treepkg/util.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
4 #
7f6fb8103db0 Move the sed-like replacement code from enterprise/kdepim.py to treepkg/util.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
5 # This program is free software under the GPL (>=v2)
7f6fb8103db0 Move the sed-like replacement code from enterprise/kdepim.py to treepkg/util.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
6 # Read the file COPYING coming with the software for details.
7f6fb8103db0 Move the sed-like replacement code from enterprise/kdepim.py to treepkg/util.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
7
7f6fb8103db0 Move the sed-like replacement code from enterprise/kdepim.py to treepkg/util.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
8 """Tests for the treepkg.util module"""
7f6fb8103db0 Move the sed-like replacement code from enterprise/kdepim.py to treepkg/util.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
9
169
261b75d7b972 Extend listdir_abs with an optional glob pattern
Bernhard Herzog <bh@intevation.de>
parents: 162
diff changeset
10 import os
111
7f6fb8103db0 Move the sed-like replacement code from enterprise/kdepim.py to treepkg/util.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
11 import unittest
7f6fb8103db0 Move the sed-like replacement code from enterprise/kdepim.py to treepkg/util.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
12
7f6fb8103db0 Move the sed-like replacement code from enterprise/kdepim.py to treepkg/util.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
13 from filesupport import FileTestMixin
7f6fb8103db0 Move the sed-like replacement code from enterprise/kdepim.py to treepkg/util.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
14
169
261b75d7b972 Extend listdir_abs with an optional glob pattern
Bernhard Herzog <bh@intevation.de>
parents: 162
diff changeset
15 from treepkg.util import replace_in_file, listdir_abs
111
7f6fb8103db0 Move the sed-like replacement code from enterprise/kdepim.py to treepkg/util.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
16
7f6fb8103db0 Move the sed-like replacement code from enterprise/kdepim.py to treepkg/util.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
17
7f6fb8103db0 Move the sed-like replacement code from enterprise/kdepim.py to treepkg/util.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
18 class TestReplaceInFile(unittest.TestCase, FileTestMixin):
7f6fb8103db0 Move the sed-like replacement code from enterprise/kdepim.py to treepkg/util.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
19
7f6fb8103db0 Move the sed-like replacement code from enterprise/kdepim.py to treepkg/util.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
20 def runtest(self, orig_contents, expected_contents, pattern, replacement):
185
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 169
diff changeset
21 filename = self.create_temp_file("orig", orig_contents)
160
017179427c7f Make treepkg/utilreplace_in_file return whether any substitutions were made.
Bernhard Herzog <bh@intevation.de>
parents: 111
diff changeset
22 changed = replace_in_file(filename, pattern, replacement)
017179427c7f Make treepkg/utilreplace_in_file return whether any substitutions were made.
Bernhard Herzog <bh@intevation.de>
parents: 111
diff changeset
23 self.assertEquals(changed, orig_contents != expected_contents)
195
e3ab8aca2b08 Make filesupport.py more PEP8 conformant. Rename method
Bernhard Herzog <bh@intevation.de>
parents: 185
diff changeset
24 self.check_file_contents(filename, expected_contents)
111
7f6fb8103db0 Move the sed-like replacement code from enterprise/kdepim.py to treepkg/util.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
25
7f6fb8103db0 Move the sed-like replacement code from enterprise/kdepim.py to treepkg/util.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
26 def test_version_replacement(self):
7f6fb8103db0 Move the sed-like replacement code from enterprise/kdepim.py to treepkg/util.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
27 template = ("project foo version 1.0-svn%(rev)d"
7f6fb8103db0 Move the sed-like replacement code from enterprise/kdepim.py to treepkg/util.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
28 "Some filler"
7f6fb8103db0 Move the sed-like replacement code from enterprise/kdepim.py to treepkg/util.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
29 "text that sometimes"
7f6fb8103db0 Move the sed-like replacement code from enterprise/kdepim.py to treepkg/util.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
30 "looks similar to the pattern"
7f6fb8103db0 Move the sed-like replacement code from enterprise/kdepim.py to treepkg/util.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
31 "1.0-"
7f6fb8103db0 Move the sed-like replacement code from enterprise/kdepim.py to treepkg/util.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
32 "foo 1.2-svn2"
7f6fb8103db0 Move the sed-like replacement code from enterprise/kdepim.py to treepkg/util.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
33 "echo foo version 1.0-svn%(rev)d"
7f6fb8103db0 Move the sed-like replacement code from enterprise/kdepim.py to treepkg/util.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
34 ""
7f6fb8103db0 Move the sed-like replacement code from enterprise/kdepim.py to treepkg/util.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
35 "and more filler")
7f6fb8103db0 Move the sed-like replacement code from enterprise/kdepim.py to treepkg/util.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
36 self.runtest(template % dict(rev=0), template % dict(rev=321),
7f6fb8103db0 Move the sed-like replacement code from enterprise/kdepim.py to treepkg/util.py
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
37 r"1\.0-svn0", "1.0-svn321")
160
017179427c7f Make treepkg/utilreplace_in_file return whether any substitutions were made.
Bernhard Herzog <bh@intevation.de>
parents: 111
diff changeset
38
017179427c7f Make treepkg/utilreplace_in_file return whether any substitutions were made.
Bernhard Herzog <bh@intevation.de>
parents: 111
diff changeset
39 def test_no_matches(self):
017179427c7f Make treepkg/utilreplace_in_file return whether any substitutions were made.
Bernhard Herzog <bh@intevation.de>
parents: 111
diff changeset
40 """Tests replace_in_file when no matches are found"""
017179427c7f Make treepkg/utilreplace_in_file return whether any substitutions were made.
Bernhard Herzog <bh@intevation.de>
parents: 111
diff changeset
41 template = ("project foo version 1.0-svn%(rev)d"
017179427c7f Make treepkg/utilreplace_in_file return whether any substitutions were made.
Bernhard Herzog <bh@intevation.de>
parents: 111
diff changeset
42 "Some filler"
017179427c7f Make treepkg/utilreplace_in_file return whether any substitutions were made.
Bernhard Herzog <bh@intevation.de>
parents: 111
diff changeset
43 "text that sometimes"
017179427c7f Make treepkg/utilreplace_in_file return whether any substitutions were made.
Bernhard Herzog <bh@intevation.de>
parents: 111
diff changeset
44 "looks similar to the pattern"
017179427c7f Make treepkg/utilreplace_in_file return whether any substitutions were made.
Bernhard Herzog <bh@intevation.de>
parents: 111
diff changeset
45 "1.0-"
017179427c7f Make treepkg/utilreplace_in_file return whether any substitutions were made.
Bernhard Herzog <bh@intevation.de>
parents: 111
diff changeset
46 "foo 1.2-svn2"
017179427c7f Make treepkg/utilreplace_in_file return whether any substitutions were made.
Bernhard Herzog <bh@intevation.de>
parents: 111
diff changeset
47 "echo foo version 1.0-svn%(rev)d"
017179427c7f Make treepkg/utilreplace_in_file return whether any substitutions were made.
Bernhard Herzog <bh@intevation.de>
parents: 111
diff changeset
48 ""
017179427c7f Make treepkg/utilreplace_in_file return whether any substitutions were made.
Bernhard Herzog <bh@intevation.de>
parents: 111
diff changeset
49 "and more filler")
017179427c7f Make treepkg/utilreplace_in_file return whether any substitutions were made.
Bernhard Herzog <bh@intevation.de>
parents: 111
diff changeset
50 self.runtest(template % dict(rev=0), template % dict(rev=0),
017179427c7f Make treepkg/utilreplace_in_file return whether any substitutions were made.
Bernhard Herzog <bh@intevation.de>
parents: 111
diff changeset
51 r"0\.9-svn0", "1.0-svn321")
169
261b75d7b972 Extend listdir_abs with an optional glob pattern
Bernhard Herzog <bh@intevation.de>
parents: 162
diff changeset
52
261b75d7b972 Extend listdir_abs with an optional glob pattern
Bernhard Herzog <bh@intevation.de>
parents: 162
diff changeset
53
261b75d7b972 Extend listdir_abs with an optional glob pattern
Bernhard Herzog <bh@intevation.de>
parents: 162
diff changeset
54 class TestListDirAbs(unittest.TestCase, FileTestMixin):
261b75d7b972 Extend listdir_abs with an optional glob pattern
Bernhard Herzog <bh@intevation.de>
parents: 162
diff changeset
55
261b75d7b972 Extend listdir_abs with an optional glob pattern
Bernhard Herzog <bh@intevation.de>
parents: 162
diff changeset
56 def setUp(self):
185
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 169
diff changeset
57 self.directory = self.create_temp_dir("a_directory")
169
261b75d7b972 Extend listdir_abs with an optional glob pattern
Bernhard Herzog <bh@intevation.de>
parents: 162
diff changeset
58
261b75d7b972 Extend listdir_abs with an optional glob pattern
Bernhard Herzog <bh@intevation.de>
parents: 162
diff changeset
59 def test_listdir_abs(self):
185
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 169
diff changeset
60 directory = self.create_files("dir", [("foo.orig.tgz", ""),
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 169
diff changeset
61 ("foo.dsc", ""),
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 169
diff changeset
62 ("foo.diff.gz", ""),])
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 169
diff changeset
63 self.assertEquals(sorted(listdir_abs(directory)),
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 169
diff changeset
64 sorted([os.path.join(directory, d)
169
261b75d7b972 Extend listdir_abs with an optional glob pattern
Bernhard Herzog <bh@intevation.de>
parents: 162
diff changeset
65 for d in ["foo.orig.tgz", "foo.dsc",
261b75d7b972 Extend listdir_abs with an optional glob pattern
Bernhard Herzog <bh@intevation.de>
parents: 162
diff changeset
66 "foo.diff.gz"]]))
261b75d7b972 Extend listdir_abs with an optional glob pattern
Bernhard Herzog <bh@intevation.de>
parents: 162
diff changeset
67
261b75d7b972 Extend listdir_abs with an optional glob pattern
Bernhard Herzog <bh@intevation.de>
parents: 162
diff changeset
68 def test_listdir_abs_pattern(self):
185
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 169
diff changeset
69 directory = self.create_files("dir", [("foo.orig.tgz", ""),
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 169
diff changeset
70 ("foo.dsc", ""),
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 169
diff changeset
71 ("foo.diff.gz", ""),])
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 169
diff changeset
72 self.assertEquals(sorted(listdir_abs(directory, '*.dsc')),
e1c7cd896310 Rework test/filesupport.py so that test cases always use their own
Bernhard Herzog <bh@intevation.de>
parents: 169
diff changeset
73 [os.path.join(directory, "foo.dsc")])
169
261b75d7b972 Extend listdir_abs with an optional glob pattern
Bernhard Herzog <bh@intevation.de>
parents: 162
diff changeset
74
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)