You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by fu...@apache.org on 2019/09/30 04:12:48 UTC
svn commit: r1867740 - in
/subversion/branches/swig-py3/subversion/bindings/swig/python: svn/fs.py
tests/fs.py
Author: futatuki
Date: Mon Sep 30 04:12:48 2019
New Revision: 1867740
URL: http://svn.apache.org/viewvc?rev=1867740&view=rev
Log:
On branch swig-py3: Fix resource warnings on Python 3
* subversion/bindings/swig/python/svn/fs.py
(FileDiff.procs): New list variable to hold process objects
(FileDiff.get_pipe): Hold process object to self.procs.
(FileDiff.__del__): Try to kill processes if they are alive before delete.
* subversion/bindings/swig/python/tests/fs.py
(SubversionFSTestCase.test_diff_repos_paths_internal,
SubversionFSTestCase.test_diff_repos_paths_external): explicitly close pipe.
Tested by: jcorvel
(ResourceWarning in FileDiff object was caused somewhat different
between Linux/Unix and Windows. jcovel helped me to reproduce the problem
on Windows platform)
Modified:
subversion/branches/swig-py3/subversion/bindings/swig/python/svn/fs.py
subversion/branches/swig-py3/subversion/bindings/swig/python/tests/fs.py
Modified: subversion/branches/swig-py3/subversion/bindings/swig/python/svn/fs.py
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/subversion/bindings/swig/python/svn/fs.py?rev=1867740&r1=1867739&r2=1867740&view=diff
==============================================================================
--- subversion/branches/swig-py3/subversion/bindings/swig/python/svn/fs.py (original)
+++ subversion/branches/swig-py3/subversion/bindings/swig/python/svn/fs.py Mon Sep 30 04:12:48 2019
@@ -60,6 +60,7 @@ class FileDiff:
self.tempfile1 = None
self.tempfile2 = None
self.difftemp = None
+ self.procs = []
self.root1 = root1
self.path1 = path1
@@ -124,6 +125,7 @@ class FileDiff:
# open the pipe, and return the file object for reading from the child.
p = _subprocess.Popen(cmd, stdout=_subprocess.PIPE, bufsize=-1,
close_fds=_sys.platform != "win32")
+ self.procs.append(p)
return p.stdout
else:
@@ -158,3 +160,12 @@ class FileDiff:
_os.remove(tmpfile)
except OSError:
pass
+ for proc in self.procs:
+ if proc.poll() is None:
+ proc.terminate()
+ if _sys.hexversion >= 0x030300F0:
+ try:
+ proc.wait(10)
+ except _subprocess.TimeoutExired:
+ proc.kill()
+ del proc
Modified: subversion/branches/swig-py3/subversion/bindings/swig/python/tests/fs.py
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/subversion/bindings/swig/python/tests/fs.py?rev=1867740&r1=1867739&r2=1867740&view=diff
==============================================================================
--- subversion/branches/swig-py3/subversion/bindings/swig/python/tests/fs.py (original)
+++ subversion/branches/swig-py3/subversion/bindings/swig/python/tests/fs.py Mon Sep 30 04:12:48 2019
@@ -96,6 +96,7 @@ class SubversionFSTestCase(unittest.Test
diffp = fdiff.get_pipe()
diffoutput = diffp.read().decode('utf8')
+ diffp.close()
self.assertTrue(diffoutput.find(u'-' + self.unistr) > 0)
@@ -116,6 +117,7 @@ class SubversionFSTestCase(unittest.Test
None, None, diffoptions=[])
diffp = fdiff.get_pipe()
diffoutput = diffp.read().decode('utf8')
+ diffp.close()
self.assertTrue(diffoutput.find(u'< ' + self.unistr) > 0)