Skip to content

Commit a4d3057

Browse files
committed
Remove read-only files on Windows
Signed-off-by: Uilian Ries <uilianries@gmail.com>
1 parent 3a72e1d commit a4d3057

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

patch_ng.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
import posixpath
5757
import shutil
5858
import sys
59+
import stat
5960

6061

6162
PY3K = sys.version_info >= (3, 0)
@@ -1106,11 +1107,13 @@ def apply(self, strip=0, root=None, fuzz=False):
11061107
shutil.move(filenamen, backupname)
11071108
if self.write_hunks(backupname if filenameo == filenamen else filenameo, filenamen, p.hunks):
11081109
info("successfully patched %d/%d:\t %s" % (i+1, total, filenamen))
1110+
os.chmod(backupname, stat.S_IWRITE)
11091111
os.unlink(backupname)
11101112
if new == b'/dev/null':
11111113
# check that filename is of size 0 and delete it.
11121114
if os.path.getsize(filenamen) > 0:
11131115
warning("expected patched file to be empty as it's marked as deletion:\t %s" % filenamen)
1116+
os.chmod(filenamen, stat.S_IWRITE)
11141117
os.unlink(filenamen)
11151118
else:
11161119
errors += 1

tests/run_tests.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -446,6 +446,12 @@ def test_fuzzy_patch_after(self):
446446
self.assertTrue(pto.apply(root=treeroot, fuzz=True))
447447
self.assertFalse(pto.apply(root=treeroot, fuzz=False))
448448

449+
def test_unlink_backup_windows(self):
450+
treeroot = join(self.tmpdir, 'rootparent')
451+
shutil.copytree(join(TESTS, '11permission'), treeroot)
452+
pto = patch_ng.fromfile(join(TESTS, '11permission/11permission.patch'))
453+
self.assertTrue(pto.apply(root=treeroot))
454+
449455

450456
class TestHelpers(unittest.TestCase):
451457
# unittest setting

0 commit comments

Comments
 (0)