diff --git a/.travis.yml b/.travis.yml index e83220105..467b80329 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,7 @@ sudo: false language: python python: - - '3.5.0b3' + - '3.5' # command to install dependencies install: "pip install -U tox" # # command to run tests diff --git a/CHANGELOG b/CHANGELOG index de03299f0..fc2eb23bd 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,10 @@ 2.8.0.dev (compared to 2.7.X) ----------------------------- +- "-r" option now accepts "a" to include all possible reports, similar + to passing "fEsxXw" explicitly (isse960). + Thanks Abhijeet Kasurde for the PR. + - fix issue562: @nose.tools.istest now fully respected. - fix issue934: when string comparison fails and a diff is too large to display diff --git a/_pytest/monkeypatch.py b/_pytest/monkeypatch.py index 07998650a..6f4fcf642 100644 --- a/_pytest/monkeypatch.py +++ b/_pytest/monkeypatch.py @@ -72,6 +72,7 @@ class monkeypatch: self._setattr = [] self._setitem = [] self._cwd = None + self._savesyspath = None def setattr(self, target, name, value=notset, raising=True): """ Set attribute value on target, memorizing the old value. @@ -173,7 +174,7 @@ class monkeypatch: def syspath_prepend(self, path): """ Prepend ``path`` to ``sys.path`` list of import locations. """ - if not hasattr(self, '_savesyspath'): + if self._savesyspath is None: self._savesyspath = sys.path[:] sys.path.insert(0, str(path)) @@ -217,9 +218,9 @@ class monkeypatch: else: dictionary[name] = value self._setitem[:] = [] - if hasattr(self, '_savesyspath'): + if self._savesyspath is not None: sys.path[:] = self._savesyspath - del self._savesyspath + self._savesyspath = None if self._cwd is not None: os.chdir(self._cwd) diff --git a/_pytest/terminal.py b/_pytest/terminal.py index cb60810b9..21bdc9fc9 100644 --- a/_pytest/terminal.py +++ b/_pytest/terminal.py @@ -22,7 +22,7 @@ def pytest_addoption(parser): group._addoption('-r', action="store", dest="reportchars", default=None, metavar="chars", help="show extra test summary info as specified by chars (f)ailed, " - "(E)error, (s)skipped, (x)failed, (X)passed (w)warnings.") + "(E)error, (s)skipped, (x)failed, (X)passed (w)warnings (a)all.") group._addoption('-l', '--showlocals', action="store_true", dest="showlocals", default=False, help="show locals in tracebacks (disabled by default).") @@ -67,8 +67,10 @@ def getreportopt(config): reportchars = config.option.reportchars if reportchars: for char in reportchars: - if char not in reportopts: + if char not in reportopts and char != 'a': reportopts += char + elif char == 'a': + reportopts = 'fEsxXw' return reportopts def pytest_report_teststatus(report): diff --git a/appveyor.yml b/appveyor.yml index cd9475046..d7ac0733d 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,10 +1,4 @@ environment: - global: - # SDK v7.0 MSVC Express 2008's SetEnv.cmd script will fail if the - # /E:ON and /V:ON options are not enabled in the batch script intepreter - # See: http://stackoverflow.com/a/13751649/163740 - CMD_IN_ENV: "cmd /E:ON /V:ON /C .\\appveyor\\run_with_env.cmd" - matrix: # Pre-installed Python versions, which Appveyor may upgrade to @@ -73,10 +67,10 @@ install: # compiled extensions and are not provided as pre-built wheel packages, # pip will build them from source using the MSVC compiler matching the # target Python version and architecture - - "%CMD_IN_ENV% pip install tox" + - C:\Python27\python -m pip install tox build: false # Not a C# project, build stuff at the test step instead. test_script: # Build the compiled extension and run the project tests - - "%CMD_IN_ENV% tox -e %TESTENV%" + - C:\Python27\python -m tox -e %TESTENV% diff --git a/appveyor/run_with_env.cmd b/appveyor/run_with_env.cmd deleted file mode 100644 index 3a472bc83..000000000 --- a/appveyor/run_with_env.cmd +++ /dev/null @@ -1,47 +0,0 @@ -:: To build extensions for 64 bit Python 3, we need to configure environment -:: variables to use the MSVC 2010 C++ compilers from GRMSDKX_EN_DVD.iso of: -:: MS Windows SDK for Windows 7 and .NET Framework 4 (SDK v7.1) -:: -:: To build extensions for 64 bit Python 2, we need to configure environment -:: variables to use the MSVC 2008 C++ compilers from GRMSDKX_EN_DVD.iso of: -:: MS Windows SDK for Windows 7 and .NET Framework 3.5 (SDK v7.0) -:: -:: 32 bit builds do not require specific environment configurations. -:: -:: Note: this script needs to be run with the /E:ON and /V:ON flags for the -:: cmd interpreter, at least for (SDK v7.0) -:: -:: More details at: -:: https://github.com/cython/cython/wiki/64BitCythonExtensionsOnWindows -:: http://stackoverflow.com/a/13751649/163740 -:: -:: Author: Olivier Grisel -:: License: CC0 1.0 Universal: http://creativecommons.org/publicdomain/zero/1.0/ -@ECHO OFF - -SET COMMAND_TO_RUN=%* -SET WIN_SDK_ROOT=C:\Program Files\Microsoft SDKs\Windows - -SET MAJOR_PYTHON_VERSION="%PYTHON_VERSION:~0,1%" -IF %MAJOR_PYTHON_VERSION% == "2" ( - SET WINDOWS_SDK_VERSION="v7.0" -) ELSE IF %MAJOR_PYTHON_VERSION% == "3" ( - SET WINDOWS_SDK_VERSION="v7.1" -) ELSE ( - ECHO Unsupported Python version: "%MAJOR_PYTHON_VERSION%" - EXIT 1 -) - -IF "%PYTHON_ARCH%"=="64" ( - ECHO Configuring Windows SDK %WINDOWS_SDK_VERSION% for Python %MAJOR_PYTHON_VERSION% on a 64 bit architecture - SET DISTUTILS_USE_SDK=1 - SET MSSdk=1 - "%WIN_SDK_ROOT%\%WINDOWS_SDK_VERSION%\Setup\WindowsSdkVer.exe" -q -version:%WINDOWS_SDK_VERSION% - "%WIN_SDK_ROOT%\%WINDOWS_SDK_VERSION%\Bin\SetEnv.cmd" /x64 /release - ECHO Executing: %COMMAND_TO_RUN% - call %COMMAND_TO_RUN% || EXIT 1 -) ELSE ( - ECHO Using default MSVC build environment for 32 bit architecture - ECHO Executing: %COMMAND_TO_RUN% - call %COMMAND_TO_RUN% || EXIT 1 -) diff --git a/testing/test_skipping.py b/testing/test_skipping.py index 6e827cb46..1048c9455 100644 --- a/testing/test_skipping.py +++ b/testing/test_skipping.py @@ -549,6 +549,43 @@ def test_reportchars_error(testdir): 'ERROR*test_foo*', ]) +def test_reportchars_all(testdir): + testdir.makepyfile(""" + import pytest + def test_1(): + assert 0 + @pytest.mark.xfail + def test_2(): + assert 0 + @pytest.mark.xfail + def test_3(): + pass + def test_4(): + pytest.skip("four") + """) + result = testdir.runpytest("-ra") + result.stdout.fnmatch_lines([ + "FAIL*test_1*", + "SKIP*four*", + "XFAIL*test_2*", + "XPASS*test_3*", + ]) + +def test_reportchars_all_error(testdir): + testdir.makepyfile( + conftest=""" + def pytest_runtest_teardown(): + assert 0 + """, + test_simple=""" + def test_foo(): + pass + """) + result = testdir.runpytest('-ra') + result.stdout.fnmatch_lines([ + 'ERROR*test_foo*', + ]) + @pytest.mark.xfail("hasattr(sys, 'pypy_version_info')") def test_errors_in_xfail_skip_expressions(testdir): testdir.makepyfile("""