[Python-checkins] cpython (merge 3.3 -> default): Issue #15539: Fix a backup file creation in pindent.py on Windows.

serhiy.storchaka python-checkins at python.org
Fri Jan 11 21:23:47 CET 2013


http://hg.python.org/cpython/rev/c46dec051819
changeset:   81426:c46dec051819
parent:      81422:21abd27ca9ed
parent:      81425:735361e8709e
user:        Serhiy Storchaka <storchaka at gmail.com>
date:        Fri Jan 11 22:21:45 2013 +0200
summary:
  Issue #15539: Fix a backup file creation in pindent.py on Windows.

files:
  Lib/test/test_tools.py   |   1 +
  Tools/scripts/pindent.py |  32 +++++++++++++++++----------
  2 files changed, 21 insertions(+), 12 deletions(-)


diff --git a/Lib/test/test_tools.py b/Lib/test/test_tools.py
--- a/Lib/test/test_tools.py
+++ b/Lib/test/test_tools.py
@@ -59,6 +59,7 @@
         return '\n'.join(line.lstrip() for line in data.splitlines()) + '\n'
 
     def test_selftest(self):
+        self.maxDiff = None
         with temp_dir() as directory:
             data_path = os.path.join(directory, '_test.py')
             with open(self.script) as f:
diff --git a/Tools/scripts/pindent.py b/Tools/scripts/pindent.py
--- a/Tools/scripts/pindent.py
+++ b/Tools/scripts/pindent.py
@@ -370,6 +370,23 @@
     return output.getvalue()
 # end def reformat_string
 
+def make_backup(filename):
+    import os, os.path
+    backup = filename + '~'
+    if os.path.lexists(backup):
+        try:
+            os.remove(backup)
+        except OSError:
+            print("Can't remove backup %r" % (backup,), file=sys.stderr)
+        # end try
+    # end if
+    try:
+        os.rename(filename, backup)
+    except OSError:
+        print("Can't rename %r to %r" % (filename, backup), file=sys.stderr)
+    # end try
+# end def make_backup
+
 def complete_file(filename, stepsize = STEPSIZE, tabsize = TABSIZE, expandtabs = EXPANDTABS):
     with open(filename, 'r') as f:
         source = f.read()
@@ -377,10 +394,7 @@
     result = complete_string(source, stepsize, tabsize, expandtabs)
     if source == result: return 0
     # end if
-    import os
-    try: os.rename(filename, filename + '~')
-    except OSError: pass
-    # end try
+    make_backup(filename)
     with open(filename, 'w') as f:
         f.write(result)
     # end with
@@ -394,10 +408,7 @@
     result = delete_string(source, stepsize, tabsize, expandtabs)
     if source == result: return 0
     # end if
-    import os
-    try: os.rename(filename, filename + '~')
-    except OSError: pass
-    # end try
+    make_backup(filename)
     with open(filename, 'w') as f:
         f.write(result)
     # end with
@@ -411,10 +422,7 @@
     result = reformat_string(source, stepsize, tabsize, expandtabs)
     if source == result: return 0
     # end if
-    import os
-    try: os.rename(filename, filename + '~')
-    except OSError: pass
-    # end try
+    make_backup(filename)
     with open(filename, 'w') as f:
         f.write(result)
     # end with

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list