Merge master into features (#5319)

This commit is contained in:
Daniel Hahler 2019-05-28 02:15:15 +02:00 committed by GitHub
commit 6061ecf95a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
188 changed files with 415 additions and 106 deletions

4
.github/FUNDING.yml vendored Normal file
View File

@ -0,0 +1,4 @@
# info:
# * https://help.github.com/en/articles/displaying-a-sponsor-button-in-your-repository
# * https://tidelift.com/subscription/how-to-connect-tidelift-with-github
tidelift: pypi/pytest

View File

@ -1,7 +1,7 @@
<!--
Thanks for submitting a PR, your contribution is really appreciated!
Here's a quick checklist that should be present in PRs.
Here is a quick checklist that should be present in PRs.
(please delete this text from the final description, this is just a guideline)
-->

View File

@ -13,10 +13,11 @@ repos:
additional_dependencies: [black==19.3b0]
language_version: python3
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v2.1.0
rev: v2.2.2
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: fix-encoding-pragma
- id: check-yaml
- id: debug-statements
exclude: _pytest/debugging.py

View File

@ -9,6 +9,7 @@ Abhijeet Kasurde
Adam Johnson
Adam Uhlir
Ahn Ki-Wook
Akiomi Kamakura
Alan Velasco
Alexander Johnson
Alexei Kozlenok

View File

@ -1630,7 +1630,7 @@ Bug Fixes
- `#2220 <https://github.com/pytest-dev/pytest/issues/2220>`_: Fix a bug where fixtures overridden by direct parameters (for example parametrization) were being instantiated even if they were not being used by a test.
- `#3695 <https://github.com/pytest-dev/pytest/issues/3695>`_: Fix ``ApproxNumpy`` initialisation argument mixup, ``abs`` and ``rel`` tolerances were flipped causing strange comparsion results.
- `#3695 <https://github.com/pytest-dev/pytest/issues/3695>`_: Fix ``ApproxNumpy`` initialisation argument mixup, ``abs`` and ``rel`` tolerances were flipped causing strange comparison results.
Add tests to check ``abs`` and ``rel`` tolerances for ``np.array`` and test for expecting ``nan`` with ``np.array()``

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
import sys
if __name__ == "__main__":

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
# 10000 iterations, just for relative comparison
# 2.7.5 3.3.2
# FilesCompleter 75.1109 69.2116

View File

@ -1,2 +1,3 @@
# -*- coding: utf-8 -*-
for i in range(1000):
exec("def test_func_%d(): pass" % i)

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
import pytest

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
from six.moves import range
import pytest

View File

@ -0,0 +1 @@
The debugging plugin imports the wrapped ``Pdb`` class (``--pdbcls``) on-demand now.

View File

@ -0,0 +1 @@
The ``pytest_enter_pdb`` hook gets called with post-mortem (``--pdb``).

View File

@ -0,0 +1 @@
Pytest's internal python plugin can be disabled using ``-p no:python`` again.

View File

@ -0,0 +1 @@
Fix issue with ``disable_test_id_escaping_and_forfeit_all_rights_to_community_support`` option doesn't work when using a list of test IDs in parametrized tests.

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
# flasky extensions. flasky pygments style based on tango style
from pygments.style import Style
from pygments.token import Comment

View File

@ -1 +1,2 @@
# -*- coding: utf-8 -*-
collect_ignore = ["conf.py"]

View File

@ -50,6 +50,7 @@ Full pytest documentation
projects
faq
contact
tidelift
.. only:: html

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
import _pytest._code
import pytest
from pytest import raises

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
import py
import pytest

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
hello = "world"

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
import py
failure_demo = py.path.local(__file__).dirpath("failure_demo.py")

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
def setup_module(module):
module.TestStateFullThing.classcount = 0

View File

@ -1 +1,2 @@
# -*- coding: utf-8 -*-
collect_ignore = ["nonpython"]

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
import pytest

View File

@ -1 +1,2 @@
# -*- coding: utf-8 -*-
#

View File

@ -1,2 +1,3 @@
# -*- coding: utf-8 -*-
def test_quick(setup):
pass

View File

@ -1 +1,2 @@
# -*- coding: utf-8 -*-
#

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
def test_something(setup):
assert setup.timecostly == 1

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
"""
module containing a parametrized tests testing cross-python
serialization via the pickle module.

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
# content of conftest.py
import pytest

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
import sys
import pytest

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
def test_exception_syntax():
try:
0 / 0

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
# run this with $ pytest --collect-only test_collectonly.py
#

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
import pytest
xfail = pytest.mark.xfail

View File

@ -1179,6 +1179,8 @@ Given the tests file structure is:
conftest.py
# content of tests/conftest.py
import pytest
@pytest.fixture
def username():
return 'username'

View File

@ -7,16 +7,20 @@ Python 3.4's last release is scheduled for
`March 2019 <https://www.python.org/dev/peps/pep-0429/#release-schedule>`__. pytest is one of
the participating projects of the https://python3statement.org.
We plan to drop support for Python 2.7 and 3.4 at the same time with the release of **pytest 5.0**,
scheduled to be released by **mid-2019**. Thanks to the `python_requires <https://packaging.python.org/guides/distributing-packages-using-setuptools/#python-requires>`__ ``setuptools`` option,
The **pytest 4.6** series will be the last to support Python 2.7 and 3.4, and is scheduled
to be released by **mid-2019**. **pytest 5.0** and onwards will support only Python 3.5+.
Thanks to the `python_requires`_ ``setuptools`` option,
Python 2.7 and Python 3.4 users using a modern ``pip`` version
will install the last compatible pytest ``4.X`` version automatically even if ``5.0`` or later
will install the last pytest ``4.6`` version automatically even if ``5.0`` or later
are available on PyPI.
During the period **from mid-2019 and 2020**, the pytest core team plans to make
bug-fix releases of the pytest ``4.X`` series by back-porting patches to the ``4.x-maintenance``
branch.
While pytest ``5.0`` will be the new mainstream and development version, until **January 2020**
the pytest core team plans to make bug-fix releases of the pytest ``4.6`` series by
back-porting patches to the ``4.6-maintenance`` branch that affect Python 2 users.
**After 2020**, the core team will no longer actively back port-patches, but the ``4.x-maintenance``
branch will continue to exist so the community itself can contribute patches. The
core team will be happy to accept those patches and make new ``4.X`` releases **until mid-2020**.
**After 2020**, the core team will no longer actively backport patches, but the ``4.6-maintenance``
branch will continue to exist so the community itself can contribute patches. The core team will
be happy to accept those patches and make new ``4.6`` releases **until mid-2020**.
.. _`python_requires`: https://packaging.python.org/guides/distributing-packages-using-setuptools/#python-requires>

4
doc/en/tidelift.rst Normal file
View File

@ -0,0 +1,4 @@
.. include:: ../../TIDELIFT.rst

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
import json
import py

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
import sys
from distutils.core import setup

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
"""
Invoke development tasks.
"""

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
from setuptools import setup
# TODO: if py gets upgrade to >=1.6,

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
__all__ = ["__version__"]
try:

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
"""allow bash-completion for argparse with argcomplete if installed
needs argcomplete>=0.5.6 for python 3.2/3.3 (older versions fail
to find the magic string, so _ARGCOMPLETE env. var is never set, and

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
""" python inspection/code generation API """
from __future__ import absolute_import
from __future__ import division

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
# copied from python-2.7.3's traceback.py
# CHANGES:
# - some_str is replaced, trying to create unicode strings

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
@ -564,10 +565,11 @@ class ExceptionInfo(object):
def match(self, regexp):
"""
Match the regular expression 'regexp' on the string representation of
the exception. If it matches then True is returned (so that it is
possible to write 'assert excinfo.match()'). If it doesn't match an
AssertionError is raised.
Check whether the regular expression 'regexp' is found in the string
representation of the exception using ``re.search``. If it matches
then True is returned (so that it is possible to write
``assert excinfo.match()``). If it doesn't match an AssertionError is
raised.
"""
__tracebackhide__ = True
if not re.search(regexp, str(self.value)):

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
import pprint
from six.moves import reprlib

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
"""
support for presenting detailed information in failing assertions.
"""

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
"""Rewrite assertion AST to produce nice error messages"""
from __future__ import absolute_import
from __future__ import division
@ -60,7 +61,10 @@ class AssertionRewritingHook(object):
def __init__(self, config):
self.config = config
try:
self.fnpats = config.getini("python_files")
except ValueError:
self.fnpats = ["test_*.py", "*_test.py"]
self.session = None
self.modules = {}
self._rewritten_names = set()

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
"""
Utilities for truncating assertion output.

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
"""Utilities for assertion debugging"""
from __future__ import absolute_import
from __future__ import division

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
"""
merged implementation of the cache provider

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
"""
per-test stdout/stderr capturing mechanism.
@ -358,8 +359,7 @@ class CaptureFixture(object):
self._captured_err = self.captureclass.EMPTY_BUFFER
def _start(self):
# Start if not started yet
if getattr(self, "_capture", None) is None:
if self._capture is None:
self._capture = MultiCapture(
out=True, err=True, in_=False, Capture=self.captureclass
)
@ -389,10 +389,12 @@ class CaptureFixture(object):
def _suspend(self):
"""Suspends this fixture's own capturing temporarily."""
if self._capture is not None:
self._capture.suspend_capturing()
def _resume(self):
"""Resumes this fixture's own capturing temporarily."""
if self._capture is not None:
self._capture.resume_capturing()
@contextlib.contextmanager

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
"""
python version compatibility code
"""

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
""" command line options, ini-file and conftest.py processing. """
from __future__ import absolute_import
from __future__ import division
@ -115,16 +116,16 @@ def directory_arg(path, optname):
# Plugins that cannot be disabled via "-p no:X" currently.
essential_plugins = (
essential_plugins = ( # fmt: off
"mark",
"main",
"runner",
"python",
"fixtures",
"helpconfig", # Provides -p.
)
) # fmt: on
default_plugins = essential_plugins + (
"python",
"terminal",
"debugging",
"unittest",

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
import argparse
import warnings

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
class UsageError(Exception):
""" error in pytest usage or invocation"""

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
import os
import py

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
""" interactive debugging with PDB, the Python Debugger. """
from __future__ import absolute_import
from __future__ import division
@ -48,7 +49,57 @@ def pytest_addoption(parser):
)
def _import_pdbcls(modname, classname):
def pytest_configure(config):
if config.getvalue("trace"):
config.pluginmanager.register(PdbTrace(), "pdbtrace")
if config.getvalue("usepdb"):
config.pluginmanager.register(PdbInvoke(), "pdbinvoke")
pytestPDB._saved.append(
(pdb.set_trace, pytestPDB._pluginmanager, pytestPDB._config)
)
pdb.set_trace = pytestPDB.set_trace
pytestPDB._pluginmanager = config.pluginmanager
pytestPDB._config = config
# NOTE: not using pytest_unconfigure, since it might get called although
# pytest_configure was not (if another plugin raises UsageError).
def fin():
(
pdb.set_trace,
pytestPDB._pluginmanager,
pytestPDB._config,
) = pytestPDB._saved.pop()
config._cleanup.append(fin)
class pytestPDB(object):
""" Pseudo PDB that defers to the real pdb. """
_pluginmanager = None
_config = None
_saved = []
_recursive_debug = 0
@classmethod
def _is_capturing(cls, capman):
if capman:
return capman.is_capturing()
return False
@classmethod
def _import_pdb_cls(cls):
if not cls._config:
# Happens when using pytest.set_trace outside of a test.
return pdb.Pdb
pdb_cls = cls._config.getvalue("usepdb_cls")
if not pdb_cls:
return pdb.Pdb
modname, classname = pdb_cls
try:
__import__(modname)
mod = sys.modules[modname]
@ -64,55 +115,6 @@ def _import_pdbcls(modname, classname):
value = ":".join((modname, classname))
raise UsageError("--pdbcls: could not import {!r}: {}".format(value, exc))
def pytest_configure(config):
pdb_cls = config.getvalue("usepdb_cls")
if pdb_cls:
pdb_cls = _import_pdbcls(*pdb_cls)
else:
pdb_cls = pdb.Pdb
if config.getvalue("trace"):
config.pluginmanager.register(PdbTrace(), "pdbtrace")
if config.getvalue("usepdb"):
config.pluginmanager.register(PdbInvoke(), "pdbinvoke")
pytestPDB._saved.append(
(pdb.set_trace, pytestPDB._pluginmanager, pytestPDB._config, pytestPDB._pdb_cls)
)
pdb.set_trace = pytestPDB.set_trace
pytestPDB._pluginmanager = config.pluginmanager
pytestPDB._config = config
pytestPDB._pdb_cls = pdb_cls
# NOTE: not using pytest_unconfigure, since it might get called although
# pytest_configure was not (if another plugin raises UsageError).
def fin():
(
pdb.set_trace,
pytestPDB._pluginmanager,
pytestPDB._config,
pytestPDB._pdb_cls,
) = pytestPDB._saved.pop()
config._cleanup.append(fin)
class pytestPDB(object):
""" Pseudo PDB that defers to the real pdb. """
_pluginmanager = None
_config = None
_pdb_cls = pdb.Pdb
_saved = []
_recursive_debug = 0
@classmethod
def _is_capturing(cls, capman):
if capman:
return capman.is_capturing()
return False
@classmethod
def _init_pdb(cls, *args, **kwargs):
""" Initialize PDB debugging, dropping any IO capturing. """
@ -143,7 +145,9 @@ class pytestPDB(object):
else:
tw.sep(">", "PDB set_trace")
class PytestPdbWrapper(cls._pdb_cls, object):
pdb_cls = cls._import_pdb_cls()
class PytestPdbWrapper(pdb_cls, object):
_pytest_capman = capman
_continued = False
@ -212,10 +216,22 @@ class pytestPDB(object):
self._pytest_capman.suspend_global_capture(in_=True)
return ret
def get_stack(self, f, t):
stack, i = super(PytestPdbWrapper, self).get_stack(f, t)
if f is None:
# Find last non-hidden frame.
i = max(0, len(stack) - 1)
while i and stack[i][0].f_locals.get(
"__tracebackhide__", False
):
i -= 1
return stack, i
_pdb = PytestPdbWrapper(**kwargs)
cls._pluginmanager.hook.pytest_enter_pdb(config=cls._config, pdb=_pdb)
else:
_pdb = cls._pdb_cls(**kwargs)
pdb_cls = cls._import_pdb_cls()
_pdb = pdb_cls(**kwargs)
return _pdb
@classmethod
@ -298,22 +314,8 @@ def _postmortem_traceback(excinfo):
return excinfo._excinfo[2]
def _find_last_non_hidden_frame(stack):
i = max(0, len(stack) - 1)
while i and stack[i][0].f_locals.get("__tracebackhide__", False):
i -= 1
return i
def post_mortem(t):
class Pdb(pytestPDB._pdb_cls, object):
def get_stack(self, f, t):
stack, i = super(Pdb, self).get_stack(f, t)
if f is None:
i = _find_last_non_hidden_frame(stack)
return stack, i
p = Pdb()
p = pytestPDB._init_pdb()
p.reset()
p.interaction(None, t)
if p.quitting:

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
"""
This module contains deprecation messages and bits of code used elsewhere in the codebase
that is planned to be removed in the next pytest release.

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
""" discover and run doctests in modules and test files."""
from __future__ import absolute_import
from __future__ import division

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
@ -1073,6 +1074,15 @@ def pytestconfig(request):
return request.config
def pytest_addoption(parser):
parser.addini(
"usefixtures",
type="args",
default=[],
help="list of default fixtures to be used with this project",
)
class FixtureManager(object):
"""
pytest fixtures definitions and information is stored and managed

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
"""
Provides a function to report all internal modules for using freezing tools
pytest

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
""" version info, help messages, tracing configuration. """
from __future__ import absolute_import
from __future__ import division

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
""" hook specifications for pytest plugins, invoked from main.py and builtin plugins. """
from pluggy import HookspecMarker

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
"""
report test results in JUnit-XML format,
for use with Jenkins and build integration servers.

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
""" Access and control log capturing. """
from __future__ import absolute_import
from __future__ import division

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
""" core implementation of testing process: init, session, runtest loop. """
from __future__ import absolute_import
from __future__ import division

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
""" generic mechanism for marking and selecting python functions. """
from __future__ import absolute_import
from __future__ import division

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
import os
import platform
import sys

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
"""
this is a place where we put datastructures used by legacy apis
we hope ot remove

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
import inspect
import warnings
from collections import namedtuple

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
""" monkeypatching and mocking functionality. """
from __future__ import absolute_import
from __future__ import division

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
""" run test suites written for nose. """
from __future__ import absolute_import
from __future__ import division

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
"""
exception classes and constants handling test outcomes
as well as functions creating them

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
""" submit failure or test session information to a pastebin service. """
from __future__ import absolute_import
from __future__ import division

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
import atexit
import errno
import fnmatch

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
"""(disabled by default) support for testing pytest and pytest plugins."""
from __future__ import absolute_import
from __future__ import division

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
""" Python test discovery, setup and run of test functions. """
from __future__ import absolute_import
from __future__ import division
@ -79,15 +80,10 @@ def pytest_addoption(parser):
default=False,
help="show fixtures per test",
)
parser.addini(
"usefixtures",
type="args",
default=[],
help="list of default fixtures to be used with this project",
)
parser.addini(
"python_files",
type="args",
# NOTE: default is also used in AssertionRewritingHook.
default=["test_*.py", "*_test.py"],
help="glob-style file patterns for Python test module discovery",
)
@ -1217,7 +1213,7 @@ def _idvalset(idx, parameterset, argnames, idfn, ids, item, config):
]
return "-".join(this_id)
else:
return ascii_escaped(ids[idx])
return _ascii_escaped_by_config(ids[idx], config)
def idmaker(argnames, parametersets, idfn=None, ids=None, config=None, item=None):

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
import math
@ -559,7 +560,7 @@ def raises(expected_exception, *args, **kwargs):
:kwparam match: if specified, a string containing a regular expression,
or a regular expression object, that is tested against the string
representation of the exception using ``re.match``. To match a literal
representation of the exception using ``re.search``. To match a literal
string that may contain `special characters`__, the pattern can
first be escaped with ``re.escape``.

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
""" recording warnings during test function execution. """
from __future__ import absolute_import
from __future__ import division

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
from pprint import pprint
import py

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
""" log machine-parseable test session result information in a plain
text file.
"""

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
""" basic collect and runtest protocol implementations """
from __future__ import absolute_import
from __future__ import division

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

View File

@ -1,4 +1,4 @@
# coding=utf8
# -*- coding: utf-8 -*-
""" support for skip/xfail functions and markers. """
from __future__ import absolute_import
from __future__ import division

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
import pytest

View File

@ -1,4 +1,4 @@
# encoding: utf-8
# -*- coding: utf-8 -*-
""" terminal reporting of the full testing process.
This is a good source for looking at the various reporting hooks.

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
""" support for providing temporary directories to test functions. """
from __future__ import absolute_import
from __future__ import division

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
""" discovery and running of std-library "unittest" style tests. """
from __future__ import absolute_import
from __future__ import division

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
import attr

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
# PYTHON_ARGCOMPLETE_OK
"""
pytest: unit and functional testing with Python.

View File

@ -1,4 +1,4 @@
# coding: utf-8
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
import pytest

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
"""Reproduces issue #3774"""
try:

Some files were not shown because too many files have changed in this diff Show More