[Pytest-commit] commit/py: hpk42: ForkedFunc now opens unbuffered stdout/stderr FDs

commits-noreply at bitbucket.org commits-noreply at bitbucket.org
Wed Mar 26 18:33:40 CET 2014


1 new commit in py:

https://bitbucket.org/hpk42/py/commits/f7c2b8011d27/
Changeset:   f7c2b8011d27
User:        hpk42
Date:        2014-03-26 18:29:53
Summary:     ForkedFunc now opens unbuffered stdout/stderr FDs
(helps to see output/err from a dying process)
Affected #:  5 files

diff -r 978558572564d033591cc73c3426ee1b68fa62ca -r f7c2b8011d273c2f69872b662c6b5765356827a5 CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,9 @@
+1.4.X
+==================================================
+
+- ForkedFunc now opens unbuffered stdout/stderr FDs
+  (helps to see output/err from a dying process)
+
 1.4.20
 ==================================================
 

diff -r 978558572564d033591cc73c3426ee1b68fa62ca -r f7c2b8011d273c2f69872b662c6b5765356827a5 py/__init__.py
--- a/py/__init__.py
+++ b/py/__init__.py
@@ -8,7 +8,7 @@
 
 (c) Holger Krekel and others, 2004-2013
 """
-__version__ = '1.4.20'
+__version__ = '1.4.21.dev1'
 
 from py import _apipkg
 

diff -r 978558572564d033591cc73c3426ee1b68fa62ca -r f7c2b8011d273c2f69872b662c6b5765356827a5 py/_process/forkedfunc.py
--- a/py/_process/forkedfunc.py
+++ b/py/_process/forkedfunc.py
@@ -36,13 +36,11 @@
     def _child(self, nice_level):
         # right now we need to call a function, but first we need to
         # map all IO that might happen
-        # make sure sys.stdout points to file descriptor one
-        sys.stdout = stdout = self.STDOUT.open('w')
-        sys.stdout.flush()
+        sys.stdout = stdout = open(str(self.STDOUT), "w", 0)
         fdstdout = stdout.fileno()
         if fdstdout != 1:
             os.dup2(fdstdout, 1)
-        sys.stderr = stderr = self.STDERR.open('w')
+        sys.stderr = stderr = open(str(self.STDERR), "w", 0)
         fdstderr = stderr.fileno()
         if fdstderr != 2:
             os.dup2(fdstderr, 2)

diff -r 978558572564d033591cc73c3426ee1b68fa62ca -r f7c2b8011d273c2f69872b662c6b5765356827a5 setup.py
--- a/setup.py
+++ b/setup.py
@@ -7,7 +7,7 @@
         name='py',
         description='library with cross-python path, ini-parsing, io, code, log facilities',
         long_description = open('README.txt').read(),
-        version='1.4.20',
+        version='1.4.21.dev1',
         url='http://pylib.readthedocs.org/',
         license='MIT license',
         platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'],

diff -r 978558572564d033591cc73c3426ee1b68fa62ca -r f7c2b8011d273c2f69872b662c6b5765356827a5 testing/process/test_forkedfunc.py
--- a/testing/process/test_forkedfunc.py
+++ b/testing/process/test_forkedfunc.py
@@ -50,6 +50,12 @@
     assert result.signal == 0
     assert result.retval == 2
 
+def test_forkedfunc_on_fds_output():
+    result = py.process.ForkedFunc(boxf3).waitfinish()
+    assert result.signal == 11
+    assert result.out == "s"
+
+
 def test_forkedfunc_signal():
     result = py.process.ForkedFunc(boxseg).waitfinish()
     assert result.retval is None
@@ -120,6 +126,10 @@
     os.write(2, "someerr".encode('ascii'))
     return 2
 
+def boxf3():
+    os.write(1, "s".encode('ascii'))
+    os.kill(os.getpid(), 11)
+
 def boxseg():
     os.kill(os.getpid(), 11)

Repository URL: https://bitbucket.org/hpk42/py/

--

This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.


More information about the pytest-commit mailing list