aboutsummaryrefslogtreecommitdiffstats
path: root/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/test/test_iutils.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/test/test_iutils.py')
-rwxr-xr-xlib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/test/test_iutils.py296
1 files changed, 0 insertions, 296 deletions
diff --git a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/test/test_iutils.py b/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/test/test_iutils.py
deleted file mode 100755
index d89ab567..00000000
--- a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/test/test_iutils.py
+++ /dev/null
@@ -1,296 +0,0 @@
-# Copyright (c) Twisted Matrix Laboratories.
-# See LICENSE for details.
-
-"""
-Test running processes with the APIs in L{twisted.internet.utils}.
-"""
-
-import warnings, os, stat, sys, signal
-
-from twisted.python.runtime import platform
-from twisted.trial import unittest
-from twisted.internet import error, reactor, utils, interfaces
-
-
-class ProcessUtilsTests(unittest.TestCase):
- """
- Test running a process using L{getProcessOutput}, L{getProcessValue}, and
- L{getProcessOutputAndValue}.
- """
-
- if interfaces.IReactorProcess(reactor, None) is None:
- skip = "reactor doesn't implement IReactorProcess"
-
- output = None
- value = None
- exe = sys.executable
-
- def makeSourceFile(self, sourceLines):
- """
- Write the given list of lines to a text file and return the absolute
- path to it.
- """
- script = self.mktemp()
- scriptFile = file(script, 'wt')
- scriptFile.write(os.linesep.join(sourceLines) + os.linesep)
- scriptFile.close()
- return os.path.abspath(script)
-
-
- def test_output(self):
- """
- L{getProcessOutput} returns a L{Deferred} which fires with the complete
- output of the process it runs after that process exits.
- """
- scriptFile = self.makeSourceFile([
- "import sys",
- "for s in 'hello world\\n':",
- " sys.stdout.write(s)",
- " sys.stdout.flush()"])
- d = utils.getProcessOutput(self.exe, ['-u', scriptFile])
- return d.addCallback(self.assertEqual, "hello world\n")
-
-
- def test_outputWithErrorIgnored(self):
- """
- The L{Deferred} returned by L{getProcessOutput} is fired with an
- L{IOError} L{Failure} if the child process writes to stderr.
- """
- # make sure stderr raises an error normally
- scriptFile = self.makeSourceFile([
- 'import sys',
- 'sys.stderr.write("hello world\\n")'
- ])
-
- d = utils.getProcessOutput(self.exe, ['-u', scriptFile])
- d = self.assertFailure(d, IOError)
- def cbFailed(err):
- return self.assertFailure(err.processEnded, error.ProcessDone)
- d.addCallback(cbFailed)
- return d
-
-
- def test_outputWithErrorCollected(self):
- """
- If a C{True} value is supplied for the C{errortoo} parameter to
- L{getProcessOutput}, the returned L{Deferred} fires with the child's
- stderr output as well as its stdout output.
- """
- scriptFile = self.makeSourceFile([
- 'import sys',
- # Write the same value to both because ordering isn't guaranteed so
- # this simplifies the test.
- 'sys.stdout.write("foo")',
- 'sys.stdout.flush()',
- 'sys.stderr.write("foo")',
- 'sys.stderr.flush()'])
-
- d = utils.getProcessOutput(self.exe, ['-u', scriptFile], errortoo=True)
- return d.addCallback(self.assertEqual, "foofoo")
-
-
- def test_value(self):
- """
- The L{Deferred} returned by L{getProcessValue} is fired with the exit
- status of the child process.
- """
- scriptFile = self.makeSourceFile(["raise SystemExit(1)"])
-
- d = utils.getProcessValue(self.exe, ['-u', scriptFile])
- return d.addCallback(self.assertEqual, 1)
-
-
- def test_outputAndValue(self):
- """
- The L{Deferred} returned by L{getProcessOutputAndValue} fires with a
- three-tuple, the elements of which give the data written to the child's
- stdout, the data written to the child's stderr, and the exit status of
- the child.
- """
- exe = sys.executable
- scriptFile = self.makeSourceFile([
- "import sys",
- "sys.stdout.write('hello world!\\n')",
- "sys.stderr.write('goodbye world!\\n')",
- "sys.exit(1)"
- ])
-
- def gotOutputAndValue((out, err, code)):
- self.assertEqual(out, "hello world!\n")
- self.assertEqual(err, "goodbye world!" + os.linesep)
- self.assertEqual(code, 1)
- d = utils.getProcessOutputAndValue(self.exe, ["-u", scriptFile])
- return d.addCallback(gotOutputAndValue)
-
-
- def test_outputSignal(self):
- """
- If the child process exits because of a signal, the L{Deferred}
- returned by L{getProcessOutputAndValue} fires a L{Failure} of a tuple
- containing the the child's stdout, stderr, and the signal which caused
- it to exit.
- """
- # Use SIGKILL here because it's guaranteed to be delivered. Using
- # SIGHUP might not work in, e.g., a buildbot slave run under the
- # 'nohup' command.
- scriptFile = self.makeSourceFile([
- "import sys, os, signal",
- "sys.stdout.write('stdout bytes\\n')",
- "sys.stderr.write('stderr bytes\\n')",
- "sys.stdout.flush()",
- "sys.stderr.flush()",
- "os.kill(os.getpid(), signal.SIGKILL)"])
-
- def gotOutputAndValue((out, err, sig)):
- self.assertEqual(out, "stdout bytes\n")
- self.assertEqual(err, "stderr bytes\n")
- self.assertEqual(sig, signal.SIGKILL)
-
- d = utils.getProcessOutputAndValue(self.exe, ['-u', scriptFile])
- d = self.assertFailure(d, tuple)
- return d.addCallback(gotOutputAndValue)
-
- if platform.isWindows():
- test_outputSignal.skip = "Windows doesn't have real signals."
-
-
- def _pathTest(self, utilFunc, check):
- dir = os.path.abspath(self.mktemp())
- os.makedirs(dir)
- scriptFile = self.makeSourceFile([
- "import os, sys",
- "sys.stdout.write(os.getcwd())"])
- d = utilFunc(self.exe, ['-u', scriptFile], path=dir)
- d.addCallback(check, dir)
- return d
-
-
- def test_getProcessOutputPath(self):
- """
- L{getProcessOutput} runs the given command with the working directory
- given by the C{path} parameter.
- """
- return self._pathTest(utils.getProcessOutput, self.assertEqual)
-
-
- def test_getProcessValuePath(self):
- """
- L{getProcessValue} runs the given command with the working directory
- given by the C{path} parameter.
- """
- def check(result, ignored):
- self.assertEqual(result, 0)
- return self._pathTest(utils.getProcessValue, check)
-
-
- def test_getProcessOutputAndValuePath(self):
- """
- L{getProcessOutputAndValue} runs the given command with the working
- directory given by the C{path} parameter.
- """
- def check((out, err, status), dir):
- self.assertEqual(out, dir)
- self.assertEqual(status, 0)
- return self._pathTest(utils.getProcessOutputAndValue, check)
-
-
- def _defaultPathTest(self, utilFunc, check):
- # Make another directory to mess around with.
- dir = os.path.abspath(self.mktemp())
- os.makedirs(dir)
-
- scriptFile = self.makeSourceFile([
- "import os, sys, stat",
- # Fix the permissions so we can report the working directory.
- # On OS X (and maybe elsewhere), os.getcwd() fails with EACCES
- # if +x is missing from the working directory.
- "os.chmod(%r, stat.S_IXUSR)" % (dir,),
- "sys.stdout.write(os.getcwd())"])
-
- # Switch to it, but make sure we switch back
- self.addCleanup(os.chdir, os.getcwd())
- os.chdir(dir)
-
- # Get rid of all its permissions, but make sure they get cleaned up
- # later, because otherwise it might be hard to delete the trial
- # temporary directory.
- self.addCleanup(
- os.chmod, dir, stat.S_IMODE(os.stat('.').st_mode))
- os.chmod(dir, 0)
-
- d = utilFunc(self.exe, ['-u', scriptFile])
- d.addCallback(check, dir)
- return d
-
-
- def test_getProcessOutputDefaultPath(self):
- """
- If no value is supplied for the C{path} parameter, L{getProcessOutput}
- runs the given command in the same working directory as the parent
- process and succeeds even if the current working directory is not
- accessible.
- """
- return self._defaultPathTest(utils.getProcessOutput, self.assertEqual)
-
-
- def test_getProcessValueDefaultPath(self):
- """
- If no value is supplied for the C{path} parameter, L{getProcessValue}
- runs the given command in the same working directory as the parent
- process and succeeds even if the current working directory is not
- accessible.
- """
- def check(result, ignored):
- self.assertEqual(result, 0)
- return self._defaultPathTest(utils.getProcessValue, check)
-
-
- def test_getProcessOutputAndValueDefaultPath(self):
- """
- If no value is supplied for the C{path} parameter,
- L{getProcessOutputAndValue} runs the given command in the same working
- directory as the parent process and succeeds even if the current
- working directory is not accessible.
- """
- def check((out, err, status), dir):
- self.assertEqual(out, dir)
- self.assertEqual(status, 0)
- return self._defaultPathTest(
- utils.getProcessOutputAndValue, check)
-
-
-
-class WarningSuppression(unittest.TestCase):
- def setUp(self):
- self.warnings = []
- self.originalshow = warnings.showwarning
- warnings.showwarning = self.showwarning
-
-
- def tearDown(self):
- warnings.showwarning = self.originalshow
-
-
- def showwarning(self, *a, **kw):
- self.warnings.append((a, kw))
-
-
- def testSuppressWarnings(self):
- def f(msg):
- warnings.warn(msg)
- g = utils.suppressWarnings(f, (('ignore',), dict(message="This is message")))
-
- # Start off with a sanity check - calling the original function
- # should emit the warning.
- f("Sanity check message")
- self.assertEqual(len(self.warnings), 1)
-
- # Now that that's out of the way, call the wrapped function, and
- # make sure no new warnings show up.
- g("This is message")
- self.assertEqual(len(self.warnings), 1)
-
- # Finally, emit another warning which should not be ignored, and
- # make sure it is not.
- g("Unignored message")
- self.assertEqual(len(self.warnings), 2)