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
+
+- 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 ''.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.it@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