Index: tests/subprocess2_test.py |
diff --git a/tests/subprocess2_test.py b/tests/subprocess2_test.py |
index f6c23ed55b13999335adf99ef6b1d1cdfb25f043..0e4187d7e4e6a63c80ee64223a6474eb6713ac0f 100755 |
--- a/tests/subprocess2_test.py |
+++ b/tests/subprocess2_test.py |
@@ -47,7 +47,7 @@ class DefaultsTest(unittest.TestCase): |
TO_SAVE = { |
subprocess2: [ |
'Popen', 'communicate', 'call', 'check_call', 'capture', 'check_output'], |
- subprocess2.subprocess: ['Popen'], |
+ subprocess2.subprocess.Popen: ['__init__', 'communicate'], |
} |
def setUp(self): |
@@ -65,17 +65,19 @@ class DefaultsTest(unittest.TestCase): |
@staticmethod |
def _fake_communicate(): |
+ """Mocks subprocess2.communicate().""" |
results = {} |
def fake_communicate(args, **kwargs): |
assert not results |
results.update(kwargs) |
results['args'] = args |
- return ['stdout', 'stderr'], 0 |
+ return ('stdout', 'stderr'), 0 |
subprocess2.communicate = fake_communicate |
return results |
@staticmethod |
def _fake_Popen(): |
+ """Mocks the whole subprocess2.Popen class.""" |
results = {} |
class fake_Popen(object): |
returncode = -8 |
@@ -91,23 +93,22 @@ class DefaultsTest(unittest.TestCase): |
@staticmethod |
def _fake_subprocess_Popen(): |
+ """Mocks the base class subprocess.Popen only.""" |
results = {} |
- class fake_Popen(object): |
- returncode = -8 |
- def __init__(self, args, **kwargs): |
- assert not results |
- results.update(kwargs) |
- results['args'] = args |
- @staticmethod |
- def communicate(): |
- return None, None |
- subprocess2.subprocess.Popen = fake_Popen |
+ def __init__(self, args, **kwargs): |
+ assert not results |
+ results.update(kwargs) |
+ results['args'] = args |
+ def communicate(): |
+ return None, None |
+ subprocess2.subprocess.Popen.__init__ = __init__ |
+ subprocess2.subprocess.Popen.communicate = communicate |
return results |
def test_check_call_defaults(self): |
results = self._fake_communicate() |
self.assertEquals( |
- ['stdout', 'stderr'], subprocess2.check_call_out(['foo'], a=True)) |
+ ('stdout', 'stderr'), subprocess2.check_call_out(['foo'], a=True)) |
expected = { |
'args': ['foo'], |
'a':True, |
@@ -139,7 +140,12 @@ class DefaultsTest(unittest.TestCase): |
def test_Popen_defaults(self): |
results = self._fake_subprocess_Popen() |
proc = subprocess2.Popen(['foo'], a=True) |
- self.assertEquals(-8, proc.returncode) |
+ # Cleanup code in subprocess.py needs this member to be set. |
+ # pylint: disable=W0201 |
+ proc._child_created = None |
+ # Since subprocess.Popen.__init__() is not called, proc.returncode shouldn't |
+ # be present. |
+ self.assertFalse(hasattr(proc, 'returncode')) |
expected = { |
'args': ['foo'], |
'a': True, |