Hello community, here is the log from the commit of package python-pytest-console-scripts for openSUSE:Factory checked in at 2019-09-16 10:51:06 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-pytest-console-scripts (Old) and /work/SRC/openSUSE:Factory/.python-pytest-console-scripts.new.7948 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pytest-console-scripts" Mon Sep 16 10:51:06 2019 rev:2 rq:730736 version:0.1.10 Changes: -------- --- /work/SRC/openSUSE:Factory/python-pytest-console-scripts/python-pytest-console-scripts.changes 2019-08-22 15:22:28.990272211 +0200 +++ /work/SRC/openSUSE:Factory/.python-pytest-console-scripts.new.7948/python-pytest-console-scripts.changes 2019-09-16 10:51:10.819166188 +0200 @@ -1,0 +2,6 @@ +Fri Sep 13 13:22:48 UTC 2019 - Tomáš Chvátal <tchva...@suse.com> + +- Update to 0.1.10: + * Print out return code, stdout and stderr output + +------------------------------------------------------------------- Old: ---- pytest-console-scripts-0.1.9.tar.gz New: ---- pytest-console-scripts-0.1.10.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-pytest-console-scripts.spec ++++++ --- /var/tmp/diff_new_pack.H5qpok/_old 2019-09-16 10:51:11.351166119 +0200 +++ /var/tmp/diff_new_pack.H5qpok/_new 2019-09-16 10:51:11.355166118 +0200 @@ -18,7 +18,7 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: python-pytest-console-scripts -Version: 0.1.9 +Version: 0.1.10 Release: 0 Summary: Pytest plugin for testing console scripts License: MIT ++++++ pytest-console-scripts-0.1.9.tar.gz -> pytest-console-scripts-0.1.10.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-console-scripts-0.1.9/PKG-INFO new/pytest-console-scripts-0.1.10/PKG-INFO --- old/pytest-console-scripts-0.1.9/PKG-INFO 2019-03-05 20:41:03.000000000 +0100 +++ new/pytest-console-scripts-0.1.10/PKG-INFO 2019-09-10 15:30:26.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.2 Name: pytest-console-scripts -Version: 0.1.9 +Version: 0.1.10 Summary: Pytest plugin for testing console scripts Home-page: https://github.com/kvas-it/pytest-console-scripts Author: Vasily Kuznetsov @@ -28,7 +28,7 @@ ------------ * Python 2.7 or 3.4+, or PyPy, - * Pytest 3.0 or newer. + * Pytest 4.0 or newer. Installation diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-console-scripts-0.1.9/README.rst new/pytest-console-scripts-0.1.10/README.rst --- old/pytest-console-scripts-0.1.9/README.rst 2019-03-05 20:37:51.000000000 +0100 +++ new/pytest-console-scripts-0.1.10/README.rst 2019-09-10 15:22:01.000000000 +0200 @@ -18,7 +18,7 @@ ------------ * Python 2.7 or 3.4+, or PyPy, -* Pytest 3.0 or newer. +* Pytest 4.0 or newer. Installation diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-console-scripts-0.1.9/pytest_console_scripts.egg-info/PKG-INFO new/pytest-console-scripts-0.1.10/pytest_console_scripts.egg-info/PKG-INFO --- old/pytest-console-scripts-0.1.9/pytest_console_scripts.egg-info/PKG-INFO 2019-03-05 20:41:03.000000000 +0100 +++ new/pytest-console-scripts-0.1.10/pytest_console_scripts.egg-info/PKG-INFO 2019-09-10 15:30:26.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.2 Name: pytest-console-scripts -Version: 0.1.9 +Version: 0.1.10 Summary: Pytest plugin for testing console scripts Home-page: https://github.com/kvas-it/pytest-console-scripts Author: Vasily Kuznetsov @@ -28,7 +28,7 @@ ------------ * Python 2.7 or 3.4+, or PyPy, - * Pytest 3.0 or newer. + * Pytest 4.0 or newer. Installation diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-console-scripts-0.1.9/pytest_console_scripts.egg-info/requires.txt new/pytest-console-scripts-0.1.10/pytest_console_scripts.egg-info/requires.txt --- old/pytest-console-scripts-0.1.9/pytest_console_scripts.egg-info/requires.txt 2019-03-05 20:41:03.000000000 +0100 +++ new/pytest-console-scripts-0.1.10/pytest_console_scripts.egg-info/requires.txt 2019-09-10 15:30:26.000000000 +0200 @@ -1,3 +1,3 @@ mock>=2.0.0 pytest-runner -pytest>=3.0.0 +pytest>=4.0.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-console-scripts-0.1.9/pytest_console_scripts.py new/pytest-console-scripts-0.1.10/pytest_console_scripts.py --- old/pytest-console-scripts-0.1.9/pytest_console_scripts.py 2019-03-05 20:37:51.000000000 +0100 +++ new/pytest-console-scripts-0.1.10/pytest_console_scripts.py 2019-09-10 15:17:36.000000000 +0200 @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import unicode_literals, print_function import distutils.spawn import io @@ -86,6 +86,9 @@ self.returncode = returncode self.stdout = stdout self.stderr = stderr + print('# Script return code:', returncode) + print('# Script stdout:', stdout, sep='\n') + print('# Script stderr:', stderr, sep='\n') class ScriptRunner(object): @@ -100,6 +103,7 @@ return '<ScriptRunner {}>'.format(self.launch_mode) def run(self, command, *arguments, **options): + print('# Running console script:', command, *arguments) if self.launch_mode == 'inprocess': return self.run_inprocess(command, *arguments, **options) return self.run_subprocess(command, *arguments, **options) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-console-scripts-0.1.9/setup.py new/pytest-console-scripts-0.1.10/setup.py --- old/pytest-console-scripts-0.1.9/setup.py 2019-03-05 20:38:31.000000000 +0100 +++ new/pytest-console-scripts-0.1.10/setup.py 2019-09-10 15:22:01.000000000 +0200 @@ -10,7 +10,7 @@ setup( name='pytest-console-scripts', - version='0.1.9', + version='0.1.10', author='Vasily Kuznetsov', author_email='kvas...@gmail.com', maintainer='Vasily Kuznetsov', @@ -20,7 +20,7 @@ description='Pytest plugin for testing console scripts', long_description=read('README.rst'), py_modules=['pytest_console_scripts'], - install_requires=['pytest>=3.0.0', 'mock>=2.0.0', 'pytest-runner'], + install_requires=['pytest>=4.0.0', 'mock>=2.0.0', 'pytest-runner'], classifiers=[ 'Development Status :: 4 - Beta', 'Framework :: Pytest', @@ -46,5 +46,5 @@ ], }, test_suite='tests', - tests_require=['pytest'], + tests_require=['pytest', 'virtualenv', 'mock'], ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-console-scripts-0.1.9/tests/test_run_scripts.py new/pytest-console-scripts-0.1.10/tests/test_run_scripts.py --- old/pytest-console-scripts-0.1.9/tests/test_run_scripts.py 2019-03-05 20:37:51.000000000 +0100 +++ new/pytest-console-scripts-0.1.10/tests/test_run_scripts.py 2019-09-10 15:17:36.000000000 +0200 @@ -29,18 +29,45 @@ def __init__(self, path): self.path = path + dpp = self._distpackages_path() + if dpp is not None: + self.path.mkdir(dpp) + + def _distpackages_path(self): + """Return (relative) path used for installing distribution packages. + + On Debian-based systems packages are installed into .../dist-packages + instead of .../site-packages. This function returns the relative path + of this directory inside of a virtualenv so that we can create it and + avoid setup.py failure. + + Will return `None` on systems that don't do this or when running inside + of a virtualenv. + """ + for path in sys.path: + if path.endswith('dist-packages'): + parts = path.split(os.path.sep) + if 'lib' in parts: + parts = parts[parts.index('lib'):] + return os.path.join(*parts) def _update_env(self, env): bin_dir = self.path.join('bin').strpath env['PATH'] = bin_dir + ':' + env.get('PATH', '') env['VIRTUAL_ENV'] = self.path.strpath + # Make installed packages of the Python installation that runs this + # test accessible. This allows us to run tests in the virtualenv + # without installing all the dependencies there. env['PYTHONPATH'] = ':'.join(sys.path) def run(self, cmd, *args, **kw): - """Run a command in the virtualenv.""" - self._update_env(kw.setdefault('env', os.environ)) - print(kw['env']['PATH'], kw['env']['PYTHONPATH']) - subprocess.check_call(cmd, *args, **kw) + """Run a command in the virtualenv, return terminated process.""" + self._update_env(kw.setdefault('env', dict(os.environ))) + kw.setdefault('stdout', subprocess.PIPE) + kw.setdefault('stderr', subprocess.PIPE) + proc = subprocess.Popen(cmd, *args, **kw) + proc.wait() + return proc def install_console_script(self, cmd, script_path): """Run setup.py to install console script into this virtualenv.""" @@ -111,7 +138,7 @@ '--script-launch-mode=' + launch_mode, test.strpath, ] - pcs_venv.run(test_cmd, **kw) + return pcs_venv.run(test_cmd, **kw) return run @@ -254,3 +281,37 @@ assert 'bar\n' == ret.stdout """ ) + + +@pytest.mark.parametrize('fail', [True, False]) +def test_print_stdio_on_error(test_script_in_venv, fail): + """Check that the content of stdout and stderr is printed on error.""" + proc = test_script_in_venv( + """ +from __future__ import print_function + +def main(): + print('12345') + raise Exception('54321') + """, + """ +def test_fail(script_runner): + ret = script_runner.run('console-script', 'foo') + assert ret.success is {} + """.format(fail), + ) + stdout = proc.stdout.read() + if type(stdout) != type(''): # In Python 3 we convert stdout to unicode. + stdout = stdout.decode('utf-8') + if fail: + assert proc.returncode != 0 + assert '# Running console script: console-script foo\n' in stdout + assert '# Script return code: 1\n' in stdout + assert '# Script stdout:\n12345\n' in stdout + assert '# Script stderr:\nTraceback' in stdout + assert 'Exception: 54321' in stdout + else: + assert proc.returncode == 0 + assert 'console-script foo' not in stdout + assert '12345' not in stdout + assert '54321' not in stdout