diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2013-01-11 20:21:45 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2013-01-11 20:21:45 (GMT) |
commit | 1829bb4591f0e088df31efe99778792da676f044 (patch) | |
tree | 71a91714b3b8de78ea9d487c298648d2cff9e670 | |
parent | cba18fefdc1abee9232825d8a366227a1fcabe82 (diff) | |
parent | b4fb2e2aac17975d9c5775eb46d6dec4d0603406 (diff) | |
download | cpython-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.py | 1 | ||||
-rwxr-xr-x | 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 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 |