stdio_test_lastwrite.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. # -*- test-case-name: twisted.test.test_stdio.StandardInputOutputTests.test_lastWriteReceived -*-
  2. # Copyright (c) Twisted Matrix Laboratories.
  3. # See LICENSE for details.
  4. """
  5. Main program for the child process run by
  6. L{twisted.test.test_stdio.StandardInputOutputTests.test_lastWriteReceived}
  7. to test that L{os.write} can be reliably used after
  8. L{twisted.internet.stdio.StandardIO} has finished.
  9. """
  10. from __future__ import absolute_import, division
  11. import sys
  12. from twisted.internet.protocol import Protocol
  13. from twisted.internet.stdio import StandardIO
  14. from twisted.python.reflect import namedAny
  15. class LastWriteChild(Protocol):
  16. def __init__(self, reactor, magicString):
  17. self.reactor = reactor
  18. self.magicString = magicString
  19. def connectionMade(self):
  20. self.transport.write(self.magicString)
  21. self.transport.loseConnection()
  22. def connectionLost(self, reason):
  23. self.reactor.stop()
  24. def main(reactor, magicString):
  25. p = LastWriteChild(reactor, magicString.encode('ascii'))
  26. StandardIO(p)
  27. reactor.run()
  28. if __name__ == '__main__':
  29. namedAny(sys.argv[1]).install()
  30. from twisted.internet import reactor
  31. main(reactor, sys.argv[2])