diff options
author | Robert Collins <robertc@robertcollins.net> | 2013-08-16 15:03:08 +1200 |
---|---|---|
committer | Robert Collins <robertc@robertcollins.net> | 2013-08-16 15:03:08 +1200 |
commit | 9e975e75689774b5605aa1b85eb1c9a00b43705d (patch) | |
tree | 0238ade939e10f5cb4fed85c50571eb8900ab43d | |
parent | 573890f362bc2b23c05065a39cc528c8c91ca408 (diff) | |
download | fixtures-9e975e75689774b5605aa1b85eb1c9a00b43705d.tar.gz |
* ``FakePopen`` can now override the returncode attribute.
(Robert Collins)
-rw-r--r-- | NEWS | 6 | ||||
-rw-r--r-- | lib/fixtures/_fixtures/popen.py | 5 | ||||
-rw-r--r-- | lib/fixtures/tests/_fixtures/test_popen.py | 8 |
3 files changed, 18 insertions, 1 deletions
@@ -6,6 +6,12 @@ fixtures release notes NEXT ~~~~ +CHANGES +------- + +* ``FakePopen`` can now override the returncode attribute. + (Robert Collins) + 0.3.13 ~~~~~~ diff --git a/lib/fixtures/_fixtures/popen.py b/lib/fixtures/_fixtures/popen.py index 15c48f2..708c5fd 100644 --- a/lib/fixtures/_fixtures/popen.py +++ b/lib/fixtures/_fixtures/popen.py @@ -33,10 +33,11 @@ class FakeProcess(object): self.stdout = info.get('stdout') self.stderr = info.get('stderr') self.pid = random.randint(0, 65536) + self._returncode = info.get('returncode', 0) self.returncode = None def communicate(self): - self.returncode = 0 + self.returncode = self._returncode if self.stdout: out = self.stdout.getvalue() else: @@ -48,6 +49,8 @@ class FakeProcess(object): return out, err def wait(self): + if self.returncode is None: + self.communicate() return self.returncode diff --git a/lib/fixtures/tests/_fixtures/test_popen.py b/lib/fixtures/tests/_fixtures/test_popen.py index 4c11619..dc9374c 100644 --- a/lib/fixtures/tests/_fixtures/test_popen.py +++ b/lib/fixtures/tests/_fixtures/test_popen.py @@ -64,6 +64,14 @@ class TestFakePopen(testtools.TestCase, TestWithFixtures): fixture = self.useFixture(FakePopen(get_info)) proc = fixture(**all_args) + def test_custom_returncode(self): + def get_info(proc_args): + return dict(returncode=1) + proc = self.useFixture(FakePopen(get_info))(['foo']) + self.assertEqual(None, proc.returncode) + self.assertEqual(1, proc.wait()) + self.assertEqual(1, proc.returncode) + class TestFakeProcess(testtools.TestCase): |