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
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)