summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Collins <robertc@robertcollins.net>2013-08-16 15:03:08 +1200
committerRobert Collins <robertc@robertcollins.net>2013-08-16 15:03:08 +1200
commit9e975e75689774b5605aa1b85eb1c9a00b43705d (patch)
tree0238ade939e10f5cb4fed85c50571eb8900ab43d
parent573890f362bc2b23c05065a39cc528c8c91ca408 (diff)
downloadfixtures-9e975e75689774b5605aa1b85eb1c9a00b43705d.tar.gz
* ``FakePopen`` can now override the returncode attribute.
(Robert Collins)
-rw-r--r--NEWS6
-rw-r--r--lib/fixtures/_fixtures/popen.py5
-rw-r--r--lib/fixtures/tests/_fixtures/test_popen.py8
3 files changed, 18 insertions, 1 deletions
diff --git a/NEWS b/NEWS
index c7b9656..bf62ddc 100644
--- a/NEWS
+++ b/NEWS
@@ -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):