summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2013-01-11 20:21:45 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2013-01-11 20:21:45 (GMT)
commit1829bb4591f0e088df31efe99778792da676f044 (patch)
tree71a91714b3b8de78ea9d487c298648d2cff9e670
parentcba18fefdc1abee9232825d8a366227a1fcabe82 (diff)
parentb4fb2e2aac17975d9c5775eb46d6dec4d0603406 (diff)
downloadcpython-1829bb4591f0e088df31efe99778792da676f044.zip
cpython-1829bb4591f0e088df31efe99778792da676f044.tar.gz
cpython-1829bb4591f0e088df31efe99778792da676f044.tar.bz2
Issue #15539: Fix a backup file creation in pindent.py on Windows.
-rw-r--r--Lib/test/test_tools.py1
-rwxr-xr-xTools/scripts/pindent.py32
2 files changed, 21 insertions, 12 deletions
diff --git a/Lib/test/test_tools.py b/Lib/test/test_tools.py
index cfa5dbc..f971515 100644
--- a/Lib/test/test_tools.py
+++ b/Lib/test/test_tools.py
@@ -59,6 +59,7 @@ class PindentTests(unittest.TestCase):
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
index 25006ae..3333420 100755
--- a/Tools/scripts/pindent.py
+++ b/Tools/scripts/pindent.py
@@ -370,6 +370,23 @@ def reformat_string(source, stepsize = STEPSIZE, tabsize = TABSIZE, expandtabs =
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 @@ def complete_file(filename, stepsize = STEPSIZE, tabsize = TABSIZE, expandtabs =
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 @@ def delete_file(filename, stepsize = STEPSIZE, tabsize = TABSIZE, expandtabs = E
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 @@ def reformat_file(filename, stepsize = STEPSIZE, tabsize = TABSIZE, expandtabs =
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