Mercurial > treepkg
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 |