Mercurial > treepkg
changeset 160:017179427c7f
Make treepkg/utilreplace_in_file return whether any substitutions were made.
Add a corresponding test.
author | Bernhard Herzog <bh@intevation.de> |
---|---|
date | Thu, 19 Jun 2008 12:25:30 +0000 |
parents | 3f2ec4314855 |
children | 710538908609 |
files | test/test_util.py treepkg/util.py |
diffstat | 2 files changed, 21 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/test/test_util.py Thu Jun 19 10:13:39 2008 +0000 +++ b/test/test_util.py Thu Jun 19 12:25:30 2008 +0000 @@ -18,7 +18,9 @@ def runtest(self, orig_contents, expected_contents, pattern, replacement): filename = self.create_temp_file(self.id(), orig_contents) - replace_in_file(filename, pattern, replacement) + changed = replace_in_file(filename, pattern, replacement) + print "TestReplaceInFile.runtest", changed + self.assertEquals(changed, orig_contents != expected_contents) self.checkFileContents(filename, expected_contents) def test_version_replacement(self): @@ -33,3 +35,17 @@ "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")
--- a/treepkg/util.py Thu Jun 19 10:13:39 2008 +0000 +++ b/treepkg/util.py Thu Jun 19 12:25:30 2008 +0000 @@ -123,9 +123,13 @@ the re.sub function. The pattern and replacement parameter are passed through to re.sub unmodified, so their semantics are determined by re.sub. + + The return value is True if the contents of the file have been + changed, False otherwise. """ contents = open(filename).read() modified = re.sub(pattern, replacement, contents) f = open(filename, "w") f.write(modified) f.close() + return modified != contents