From f9e3ac81f557114b67b223ab472a1dd40e4ce5d4 Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Sat, 23 Aug 2014 15:51:53 +0200 Subject: [PATCH] Display test results on stdout. --- modoboa/lib/sysutils.py | 15 ++++++++++----- tests/install_from_scratch.py | 8 ++++++-- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/modoboa/lib/sysutils.py b/modoboa/lib/sysutils.py index 02af77148..52184e8c0 100644 --- a/modoboa/lib/sysutils.py +++ b/modoboa/lib/sysutils.py @@ -9,7 +9,7 @@ import inspect import re -def exec_cmd(cmd, sudo_user=None, **kwargs): +def exec_cmd(cmd, sudo_user=None, capture_output=True, **kwargs): """Execute a shell command. Run a command using the current user. Set :keyword:`sudo_user` if @@ -22,10 +22,15 @@ def exec_cmd(cmd, sudo_user=None, **kwargs): """ if sudo_user is not None: cmd = "sudo -u %s %s" % (sudo_user, cmd) - p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, - stderr=subprocess.STDOUT, **kwargs) - output = p.communicate()[0] - return p.returncode, output + kwargs["shell"] = True + if capture_output: + kwargs.update(stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + p = subprocess.Popen(cmd, **kwargs) + output = p.communicate()[0] + return p.returncode, output + p = subprocess.Popen(cmd, **kwargs) + p.wait() + return p.returncode, None def guess_extension_name(): diff --git a/tests/install_from_scratch.py b/tests/install_from_scratch.py index 3ced6cbab..cd8df2460 100644 --- a/tests/install_from_scratch.py +++ b/tests/install_from_scratch.py @@ -3,8 +3,8 @@ import os import tempfile import pexpect -import shutil import unittest + from modoboa.lib.sysutils import exec_cmd @@ -20,7 +20,11 @@ class DeployTest(unittest.TestCase): def tearDown(self): path = os.path.join(self.workdir, self.projname) - code, output = exec_cmd("python manage.py test core lib admin limits postfix_relay_domains", cwd=path) + code, output = exec_cmd( + "python manage.py test core lib admin limits postfix_relay_domains", + capture_output=False, + cwd=path + ) self.assertEqual(code, 0) def test_standard(self):