- Significantly improved performance of creating strategies using the functions
from the hypothesis.strategies module by deferring the calculation of their
repr until it was needed. This is unlikely to have been an performance issue
for you unless you were using flatmap, composite or stateful testing, but for
some cases it could be quite a significant impact.
- A number of cases where the repr of strategies build from lambdas is improved
- Add dates() and times() strategies to hypothesis.extra.datetimes
- Add new 'profiles' mechanism to the settings system
- Deprecates mutability of Settings, both the Settings.default top level
property and individual settings.
- A Settings object may now be directly initialized from a parent Settings.
- @given should now give a better error message if you attempt to use it with a
function that uses destructuring arguments (it still won't work, but it will
error more clearly),
- A number of spelling corrections in error messages
- py.test should no longer display the intermediate modules Hypothesis
generates when running in verbose mode
- Hypothesis should now correctly handle printing objects with non-ascii reprs
on python 3 when running in a locale that cannot handle ascii printing to
stdout.
- Add a unique=True argument to lists(). This is equivalent to unique_by=lambda
x: x, but offers a more convenient syntax.
- pytest.mark.qt_log_ignore now supports an extend parameter that will extend
the list of regexes used to ignore Qt messages (defaults to False).
- Fixed internal error when interacting with other plugins that raise an error,
hiding the original exception.
- When combining data files, unreadable files will now generate a warning
instead of failing the command. This is more in line with the older
coverage.py v3.7.1 behavior, which silently ignored unreadable files.
- The --skip-covered option would skip reporting on 100% covered files, but
also skipped them when calculating total coverage. This was wrong, it should
only remove lines from the report, not change the final answer. This is now
fixed.
- In 4.0, the data file recorded a summary of the system on which it was run.
Combined data files would keep all of those summaries. This could lead to
enormous data files consisting of mostly repetitive useless information. That
summary is now gone. If you want summary information,
get in touch, and we'll figure out a better way to do it.
- Test suites that mocked os.path.exists would experience strange failures, due
to coverage.py using their mock inadvertently. This is now fixed.
- Importing a ``__init__`` module explicitly would lead to an error:
``AttributeError: 'module' object has no attribute '__path__'``. This is now
fixed.
- Code that uses ``sys.settrace(sys.gettrace())`` used to incur a more than 2x
speed penalty. Now there's no penalty at all.
- Pyexpat C code will no longer be recorded as a source file.
- The source kit now contains all of the files needed to have a complete source
tree.
* configuration: have a stable order for sections
* testlib: clean out deprecated TestCase methods, move pytest specifics to pytest.py
* fix a few python3 bugs in umessage, configuration and optik_ext modules
* testlib: report failures and skips in generative tests properly
* optik_ext: return bytes as ints and not floats
- Colour progressbar correctly for low number of tests
- Fix error case when deactivating pytest-sugar using --lf together with
--nosugar
- --nosugar deprecated, use -p no:sugar
Upstream changelog:
New Features
- Added the D104 error code - "Missing docstring in public package". This new
error is turned on by default. Missing docstring in __init__.py files which
previously resulted in D100 errors ("Missing docstring in public module")
will now result in D104.
- Added the D105 error code - "Missing docstring in magic method'. This new
error is turned on by default. Missing docstrings in magic method which
previously resulted in D102 error ("Missing docstring in public method") will
now result in D105. Note that exceptions to this rule are variadic magic
methods - specifically __init__, __call__ and __new__, which will be
considered non-magic and missing docstrings in them will result in D102.
- Support the option to exclude all error codes. Running pep257 with --select=
(or select= in the configuration file) will exclude all errors which could
then be added one by one using add-select. Useful for projects new to pep257.
- Added check D211: No blank lines allowed before class docstring. This change
is a result of a change to the official PEP257 convention. Therefore, D211
will now be checked by default instead of D203, which required a single blank
line before a class docstring.
- Configuration files are now handled correctly. The closer a configuration
file is to a checked file the more it matters. Configuration files no longer
support explain, source, debug, verbose or count.
Bug Fixes
- On Python 2.x, D302 ("Use u""" for Unicode docstrings") is not reported if
unicode_literals is imported from __future__.
- Fixed a bug where there was no executable for pep257 on Windows.
Upstream changelog:
- Improve the performance of `six.int2byte` on Python 3.
- Don't add the `winreg` module to `six.moves` on non-Windows platforms.
- Add `six.moves.getcwd` and `six.moves.getcwdu`.
- Add `create_unbound_method` to create unbound methods.
Upstream changelog:
* Added support for changing working directory in tests. Previously changing
working directory would disable coverage measurements in suprocesses.
* Fixed broken handling for ``--cov-report=annotate``.
Upstream changelog:
* Fixed a bug that deranged the tree when part of it was
removed. Thanks to Eric Weiser for the patch and John Wiseman for a
test.
* Fixed a parse bug with the html5lib tree-builder. Thanks to Roel
Kramer for the patch.
* Improved the implementation of CSS selector grouping. Thanks to
Orangain for the patch.
* Fixed the test_detect_utf8 test so that it works when chardet is
installed.
* Corrected the output of Declaration objects.
- Hide modifications Hypothesis needs to make to sys.path by undoing them after
we've imported the relevant modules. This is a workaround for issues
cryptography experienced on windows.
- Slightly improved performance of drawing from sampled_from on large lists of
alternatives.
- Significantly improved performance of drawing from one_of or strategies using
| (note this includes a lot of strategies internally - floats() and
integers() both fall into this category). There turned out to be a massive
performance regression introduced in 1.10.0 affecting these which probably
would have made tests using Hypothesis significantly slower than they should
have been.
- Better argument validation for datetimes() strategy - previously setting
max_year < datetime.MIN_YEAR or min_year > datetime.MAX_YEAR would not have
raised an InvalidArgument error and instead would have behaved confusingly.
- Compatibility with being run on pytest < 2.7 (achieved by disabling the
plugin).
Bug fixes:
- Settings(database=my_db) would not be correctly inherited when used as a
default setting, so that newly created settings would use the database_file
setting and create an SQLite example database.
- Settings.default.database = my_db would previously have raised an error and
now works.
- Timeout could sometimes be significantly exceeded if during simplification
there were a lot of examples tried that didn't trigger the bug.
- When loading a heavily simplified example using a basic() strategy from the
database this could cause Python to trigger a recursion error.
- Remove use of deprecated API in pytest plugin so as to not emit warning
Misc:
- hypothesis-pytest is now part of hypothesis core. This should have no
externally visible consequences, but you should update your dependencies to
remove hypothesis-pytest and depend on only Hypothesis.
- Better repr for hypothesis.extra.datetimes() strategies.
- Add .close() method to abstract base class for Backend (it was already
present in the main implemnetation).
Changelog:
Backward incompatibilities:
- Python versions supported are now:
- CPython 2.6, 2.7, 3.3, 3.4 and 3.5
- PyPy2 2.4, 2.6
- PyPy3 2.4
- The original command line switches (-x to run a program, etc) are no longer
supported.
- The COVERAGE_OPTIONS environment variable is no longer supported. It was a
hack for --timid before configuration files were available.
- The original module-level function interface to coverage.py is no longer
supported. You must now create a coverage.Coverage object, and use methods on
it.
- The Coverage.use_cache method is no longer supported.
- The private method Coverage._harvest_data is now called Coverage.get_data(),
and returns the CoverageData containing the collected data.
- Coverage.py is now licensed under the Apache 2.0 license. See NOTICE.txt for
details.
- Coverage.py kits no longer include tests and docs. If you were using them,
get in touch and let me know how.
Major new features:
- Plugins: third parties can write plugins to add file support for non-Python
files, such as web application templating engines, or languages that compile
down to Python. See Plugins for how to use plugins, and Plugin classes for
details of how to write them. A plugin for measuring Django template coverage
is available: django_coverage_plugin
- Gevent, eventlet, and greenlet are now supported. The [run] concurrency
setting, or the --concurrency command line switch, specifies the concurrency
library in use. Huge thanks to Peter Portante for initial implementation, and
to Joe Jevnik for the final insight that completed the work.
- The data storage has been re-written, using JSON instead of pickle. The
CoverageData class is a new supported API to the contents of the data file.
Data files from older versions of coverage.py can be converted to the new
format with python -m coverage.pickle2json.
- Wildly experimental: support for measuring processes started by the
multiprocessing module. To use, set --concurrency=multiprocessing, either on
the command line or in the .coveragerc file. Thanks, Eduardo Schettino.
Currently, this does not work on Windows.
New features:
- Options are now also read from a setup.cfg file, if any. Sections are
prefixed with “coverage:”, so the [run] options will be read from the
[coverage:run] section of setup.cfg.
- The HTML report now has filtering. Type text into the Filter box on the index
page, and only modules with that text in the name will be shown. Thanks,
Danny Allen.
- A new option: coverage report --skip-covered (or [report] skip_covered) will
reduce the number of files reported by skipping files with 100% coverage.
Thanks, Krystian Kichewko. This means that empty __init__.py files will be
skipped, since they are 100% covered.
- You can now specify the --fail-under option in the .coveragerc file as the
[report] fail_under option.
- The report -m command now shows missing branches when reporting on branch
coverage. Thanks, Steve Leonard.
- The coverage combine command now accepts any number of directories or files
as arguments, and will combine all the data from them. This means you don’t
have to copy the files to one directory before combining. Thanks, Christine
Lytwynec.
- A new configuration option for the XML report: [xml] package_depth controls
which directories are identified as packages in the report. Directories
deeper than this depth are not reported as packages. The default is that all
directories are reported as packages. Thanks, Lex Berezhny.
- A new configuration option, [run] note, lets you set a note that will be
stored in the runs section of the data file. You can use this to annotate the
data file with any information you like.
- The COVERAGE_DEBUG environment variable can be used to set the [run] debug
configuration option to control what internal operations are logged.
- A new version identifier is available, coverage.version_info, a plain tuple
of values similar to sys.version_info.
Improvements:
- Coverage.py now always adds the current directory to sys.path, so that
plugins can import files in the current directory.
- Coverage.py now accepts a directory name for coverage run and will run a
__main__.py found there, just like Python will. Thanks, Dmitry Trofimov.
- The --debug switch can now be used on any command.
- Reports now use file names with extensions. Previously, a report would
describe a/b/c.py as “a/b/c”. Now it is shown as “a/b/c.py”. This allows for
better support of non-Python files.
- Missing branches in the HTML report now have a bit more information in the
right-hand annotations. Hopefully this will make their meaning clearer.
- The XML report now contains a <source> element. Thanks Stan Hu.
- The XML report now includes a missing-branches attribute. Thanks, Steve Peak.
This is not a part of the Cobertura DTD, so the XML report no longer
references the DTD.
- The XML report now reports each directory as a package again. This was a bad
regression, I apologize.
- In parallel mode, coverage erase will now delete all of the data files.
- A new warning is possible, if a desired file isn’t measured because it was
imported before coverage.py was started.
- The coverage.process_startup() function now will start coverage measurement
only once, no matter how many times it is called. This fixes problems due to
unusual virtualenv configurations.
- Unrecognized configuration options will now print an error message and stop
coverage.py. This should help prevent configuration mistakes from passing
silently.
API changes:
- The class defined in the coverage module is now called Coverage instead of
coverage, though the old name still works, for backward compatibility.
- You can now programmatically adjust the configuration of coverage.py by
calling Coverage.set_option() after construction. Coverage.get_option() reads
the configuration values.
- If the config_file argument to the Coverage constructor is specified as
”.coveragerc”, it is treated as if it were True. This means setup.cfg is also
examined, and a missing file is not considered an error.
Bug fixes:
- The textual report and the HTML report used to report partial branches
differently for no good reason. Now the text report’s “missing branches”
column is a “partial branches” column so that both reports show the same
numbers. This closes issue 342.
- The fail-under value is now rounded the same as reported results, preventing
paradoxical results, fixing issue 284.
- Branch coverage couldn’t properly handle certain extremely long files. This
is now fixed, closing issue 359.
- Branch coverage didn’t understand yield statements properly. Mickie Betz
persisted in pursuing this despite Ned’s pessimism. Fixes issue 308 and issue
324.
- Files with incorrect encoding declaration comments are no longer ignored by
the reporting commands.
- Empty files are now reported as 100% covered in the XML report, not 0%
covered.
- The XML report will now create the output directory if need be. Thanks, Chris
Rose.
- HTML reports no longer raise UnicodeDecodeError if a Python file has
undecodable characters.
- The annotate command will now annotate all files, not just ones relative to
the current directory.
Changes:
- Don't mark shadowing variable as 'used'.
- Test that used variable in loop is considered used
- Don't report UnusedImport when binding global name
- Support Python 3.5 async/await statements for Pyflakes.
- Use os.linesep for Windows compatibility
- os.chmod() supports only read-only flag operations on Windows
Bug fixes:
- When running Hypothesis tests in parallel (e.g. using pytest-xdist) there was
a race condition caused by code generation.
- Example databases are now cached per thread so as to not use sqlite
connections from multiple threads. This should make Hypothesis now entirely
thread safe.
- floats() with only min_value or max_value set would have had a very bad
distribution.
- Running on 3.5, Hypothesis would have emitted deprecation warnings because of
use of inspect.getargspec
Changelog:
- Allow 'dev', 'rc', or other non-integer version strings in `importorskip`.
Thanks to Eric Hunsberger for the PR.
- fix issue856: consider --color parameter in all outputs (for example
--fixtures). Thanks Barney Gale for the report and Bruno Oliveira for the PR.
- fix issue855: passing str objects as `plugins` argument to pytest.main
is now interpreted as a module name to be imported and registered as a
plugin, instead of silently having no effect.
Thanks xmo-odoo for the report and Bruno Oliveira for the PR.
- fix issue744: fix for ast.Call changes in Python 3.5+. Thanks
Guido van Rossum, Matthias Bussonnier, Stefan Zimmermann and
Thomas Kluyver.
- fix issue842: applying markers in classes no longer propagate this markers
to superclasses which also have markers.
Thanks xmo-odoo for the report and Bruno Oliveira for the PR.
- preserve warning functions after call to pytest.deprecated_call. Thanks
Pieter Mulder for PR.
- fix issue854: autouse yield_fixtures defined as class members of
unittest.TestCase subclasses now work as expected.
Thannks xmo-odoo for the report and Bruno Oliveira for the PR.
- fix issue833: --fixtures now shows all fixtures of collected test files, instead of just the
fixtures declared on the first one.
Thanks Florian Bruhin for reporting and Bruno Oliveira for the PR.
- fix issue863: skipped tests now report the correct reason when a skip/xfail
condition is met when using multiple markers.
Thanks Raphael Pierzina for reporting and Bruno Oliveira for the PR.
- optimized tmpdir fixture initialization, which should make test sessions
faster (specially when using pytest-xdist). The only visible effect
is that now pytest uses a subdirectory in the $TEMP directory for all
directories created by this fixture (defaults to $TEMP/pytest-$USER).
Thanks Bruno Oliveira for the PR.
- Reduced verbosity when exceptions are captured in virtual methods.
- `pytestqt.plugin` has been split in several files and tests have been
moved out of the `pytestqt` package. This should not affect users, but it
is worth mentioning nonetheless.
- `QApplication.processEvents()` is now called before and after other fixtures
and teardown hooks, to better try to avoid non-processed events from leaking
from one test to the next.
- Show Qt/PyQt/PySide versions in pytest header.
- Disconnect SignalBlocker functions after its loop exits to ensure second
emissions that call the internal functions on the now-garbage-collected
SignalBlocker instance.
Changelog:
- text() with a non-string alphabet would have used the repr() of the the
alphabet instead of its contexts. This is obviously silly. It now works with
any sequence of things convertible to unicode strings.
- @given will now work on methods whose definitions contains no explicit
positional arguments, only varargs. This may have some knock on effects
because it means that @given no longer changes the argspec of functions other
than by adding defaults.
- Introduction of new @composite feature for more natural definition of
strategies you'd previously have used flatmap for.
Upstream changelog:
* lists(elements, unique_by=some_function, min_size=n) would have raised a
ValidationError if n > Settings.default.average_list_length because it would
have wanted to use an average list length shorter than the minimum size of
the list, which is impossible. Now it instead defaults to twice the minimum
size in these circumstances.
* basic() strategy would have only ever produced at most ten distinct values
per run of the test (which is bad if you e.g. have it inside a list). This
was obviously silly. It will now produce a much better distribution of data,
both duplicated and non duplicated.
* star imports from hypothesis should now work correctly.
* example quality for examples using flatmap will be better, as the way it had
previously been implemented was causing problems where Hypothesis was
erroneously labelling some examples as being duplicates.
- The environment to run unittests is now called py34 as that's the common
thing used, and will also allow us to run the tests with Python 3.5.
- The default tests now also run coverage.py and do a coverage check (on
Linux).
- The smoke tests are now part of the default environment.
This is just a bugfix and performance release, but it changes some semi-public
APIs, hence the minor version bump.
- Significant performance improvements for strategies which are one_of() many
branches. In particular this included recursive() strategies. This should
take the case where you use one recursive() strategy as the base strategy of
another from unusably slow (tens of seconds per generated example) to
reasonably fast.
- Better handling of just() and sampled_from() for values which have an
incorrect __repr__ implementation that returns non-ASCII unicode on Python 2.
- Better performance for flatmap from changing the internal morpher API to be
significantly less general purpose.
- Introduce a new semi-public BuildContext/cleanup API. This allows strategies
to register cleanup activities that should run once the example is complete.
Note that this will interact somewhat weirdly with find.
- Better simplification behaviour for streaming strategies.
- Don't error on lambdas which use destructuring arguments in Python 2.
- Add some better reprs for a few strategies that were missing good ones.
- The Random instances provided by randoms() are now copyable.
- Slightly more debugging information about simplify when using a debug
verbosity level.
- Support using given for functions with varargs, but not passing arguments to
it as positional.
Changelog:
Filter out YES nodes when creating a temporary class for the with_metaclass
hack.
Having an YES node in a class bases will lead to a crash with a TypeError
when trying to obtain the ancestors of the given class, because .ancestors()
will try to iterate each inferred node from the bases, thus will try to
iterate over an YES node.
Upstream changelog:
Exceptions are now captured also during test tear down, as delayed events will
get processed then and might raise exceptions in virtual methods; this is
specially problematic in PyQt5.5, which changed the behavior to call abort by
default, which will crash the interpreter.
Changelog:
* Added --cov-fail-under, akin to the new fail_under option in coverage-4.0
(automatically activated if there's a [report] fail_under = ... in
.coveragerc).
* Changed --cov-report=term to automatically upgrade to
--cov-report=term-missing if there's [run] show_missing = True in
.coveragerc.
* Changed --cov so it can be used with no path argument (in wich case the
source settings from .coveragerc will be used instead).
* Fixed .pth installation to work in all cases (install, easy_install, wheels,
develop etc).
* Fixed .pth uninstallation to work for wheel installs.
* Support for coverage 4.0.
* Data file suffixing changed to use coverage's data_suffix=True option
(instead of the custom suffixing).
* Avoid warning about missing coverage data (just like
coverage.control.process_startup).
* Fixed a race condition when running with xdist (all the workers tried to
combine the files). It's possible that this issue is not present in
pytest-cov 1.8.X.
Changelog:
Codename: The great bundling.
This release contains two fairly major changes.
The first is the deprecation of the hypothesis-extra mechanism. From now on all
the packages that were previously bundled under it other than hypothesis-pytest
(which is a different beast and will remain separate). The functionality
remains unchanged and you can still import them from exactly the same location,
they just are no longer separate packages.
The second is that this introduces a new way of building strategies which lets
you build up strategies recursively from other strategies.
It also contains the minor change that calling .example() on a strategy object
will give you examples that are more representative of the actual data you'll
get. There used to be some logic in there to make the examples artificially
simple but this proved to be a bad idea.
Upstream changelog:
New Features
* Added support for more flexible error selections using --ignore, --select,
--convention, --add-ignore and --add-select (#96, #123).
Bug Fixes
* Property setter and deleter methods are now treated as private and do not
require docstrings separate from the main property method (#69, #107).
* Fixed an issue where pep257 did not accept docstrings that are both
unicode and raw in Python 2.x (#116, #119).
* Fixed an issue where Python 3.x files with Unicode encodings were
not read correctly (#118).
Upstream changelog:
Especially important changes:
* Added a warning when you instantiate a BeautifulSoup object without
explicitly naming a parser. [bug=1398866]
* __repr__ now returns an ASCII bytestring in Python 2, and a Unicode
string in Python 3, instead of a UTF8-encoded bytestring in both
versions. In Python 3, __str__ now returns a Unicode string instead
of a bytestring. [bug=1420131]
* The `text` argument to the find_* methods is now called `string`,
which is more accurate. `text` still works, but `string` is the
argument described in the documentation. `text` may eventually
change its meaning, but not for a very long time. [bug=1366856]
* Changed the way soup objects work under copy.copy(). Copying a
NavigableString or a Tag will give you a new NavigableString that's
equal to the old one but not connected to the parse tree. Patch by
Martijn Peters. [bug=1307490]
* Started using a standard MIT license. [bug=1294662]
* Added a Chinese translation of the documentation by Delong .w.
New features:
* Introduced the select_one() method, which uses a CSS selector but
only returns the first match, instead of a list of
matches. [bug=1349367]
* You can now create a Tag object without specifying a
TreeBuilder. Patch by Martijn Pieters. [bug=1307471]
* You can now create a NavigableString or a subclass just by invoking
the constructor. [bug=1294315]
* Added an `exclude_encodings` argument to UnicodeDammit and to the
Beautiful Soup constructor, which lets you prohibit the detection of
an encoding that you know is wrong. [bug=1469408]
* The select() method now supports selector grouping. Patch by
Francisco Canas [bug=1191917]
Bug fixes:
* Fixed yet another problem that caused the html5lib tree builder to
create a disconnected parse tree. [bug=1237763]
* Force object_was_parsed() to keep the tree intact even when an element
from later in the document is moved into place. [bug=1430633]
* Fixed yet another bug that caused a disconnected tree when html5lib
copied an element from one part of the tree to another. [bug=1270611]
* Fixed a bug where Element.extract() could create an infinite loop in
the remaining tree.
* The select() method can now find tags whose names contain
dashes. Patch by Francisco Canas. [bug=1276211]
* The select() method can now find tags with attributes whose names
contain dashes. Patch by Marek Kapolka. [bug=1304007]
* Improved the lxml tree builder's handling of processing
instructions. [bug=1294645]
* Restored the helpful syntax error that happens when you try to
import the Python 2 edition of Beautiful Soup under Python
3. [bug=1213387]
* In Python 3.4 and above, set the new convert_charrefs argument to
the html.parser constructor to avoid a warning and future
failures. Patch by Stefano Revera. [bug=1375721]
* The warning when you pass in a filename or URL as markup will now be
displayed correctly even if the filename or URL is a Unicode
string. [bug=1268888]
* If the initial <html> tag contains a CDATA list attribute such as
'class', the html5lib tree builder will now turn its value into a
list, as it would with any other tag. [bug=1296481]
* Fixed an import error in Python 3.5 caused by the removal of the
HTMLParseError class. [bug=1420063]
* Improved docstring for encode_contents() and
decode_contents(). [bug=1441543]
* Fixed a crash in Unicode, Dammit's encoding detector when the name
of the encoding itself contained invalid bytes. [bug=1360913]
* Improved the exception raised when you call .unwrap() or
.replace_with() on an element that's not attached to a tree.
* Raise a NotImplementedError whenever an unsupported CSS pseudoclass
is used in select(). Previously some cases did not result in a
NotImplementedError.
* It's now possible to pickle a BeautifulSoup object no matter which
tree builder was used to create it. However, the only tree builder
that survives the pickling process is the HTMLParserTreeBuilder
('html.parser'). If you unpickle a BeautifulSoup object created with
some other tree builder, soup.builder will be None. [bug=1231545]
pylint changelog:
- Support for logilab-common 1.0.0
logilab-common changelog:
- remove unused/deprecated modules: cli, contexts, corbautils, dbf, pyro_ext,
xmlrpcutils. __pkginfo__ is no longer installed.
- major layout change
- use setuptools exclusively
- 'logilab' is now a proper namespace package
- modutils: basic support for namespace packages
- registry: ambiguous selects now raise a specific exception
- testlib: better support for non-pytest launchers
- testlib: Tags() now work with py3k
Upstream changelog:
* Fixed log line number in messages, and provide better contextual information
in Qt5 (#55, thanks @The-Compiler);
* Fixed issue where exceptions inside a `waitSignals` or `waitSignal`
with-statement block would be swallowed and a `SignalTimeoutError` would be
raised instead. (#59, thanks @The-Compiler for bringing up the issue and
providing a test case);
* Fixed issue where the first usage of `qapp` fixture would return `None`.
Thanks to @gqmelo for noticing and providing a PR;
* New `qtlog` now sports a context manager method, `disabled` (#58). Thanks
@The-Compiler for the idea and testing;
pytest upstream changelog
=========================
- fix issue767: pytest.raises value attribute does not contain the exception
instance on Python 2.6. Thanks Eric Siegerman for providing the test
case and Bruno Oliveira for PR.
- Automatically create directory for junitxml and results log.
Thanks Aron Curzon.
- fix issue713: JUnit XML reports for doctest failures.
Thanks Punyashloka Biswal.
- fix issue735: assertion failures on debug versions of Python 3.4+
Thanks Benjamin Peterson.
- fix issue114: skipif marker reports to internal skipping plugin;
Thanks Floris Bruynooghe for reporting and Bruno Oliveira for the PR.
- fix issue748: unittest.SkipTest reports to internal pytest unittest plugin.
Thanks Thomas De Schampheleire for reporting and Bruno Oliveira for the PR.
- fix issue718: failed to create representation of sets containing unsortable
elements in python 2. Thanks Edison Gustavo Muenz
- fix issue756, fix issue752 (and similar issues): depend on py-1.4.29
which has a refined algorithm for traceback generation.
py upstream changelog
=====================
- fix issue55: revert a change to the statement finding algorithm
which is used by pytest for generating tracebacks.
Thanks Daniel Hahler for initial analysis.
- fix pytest issue254 for when traceback rendering can't
find valid source code. Thanks Ionel Cristian Maries.
Upstream changelog:
- Messages sent by qDebug, qWarning, qCritical are captured and displayed when
tests fail, similar to pytest-catchlog. Also, tests can be configured to
automatically fail if an unexpected message is generated. (See docs).
- New method waitSignals: will block untill all signals given are triggered, see
docs (thanks @The-Compiler for idea and complete PR).
- New parameter raising to waitSignals and waitSignals: when True (defaults to
False) will raise a qtbot.SignalTimeoutError exception when timeout is reached,
see docs (thanks again to @The-Compiler for idea and complete PR).
- pytest-qt now requires pytest version >= 2.7.
Internal changes to improve memory management
- QApplication.exit() is no longer called at the end of the test session and
the QApplication instance is not garbage collected anymore;
- QtBot no longer receives a QApplication as a parameter in the constructor,
always referencing QApplication.instance() now; this avoids keeping an extra
reference in the qtbot instances.
- deleteLater is called on widgets added in QtBot.addWidget at the end of each
test;
- QApplication.processEvents() is called at the end of each test to make sure
widgets are cleaned up;
Upstream changelog:
- Fix issue #6 - support PEP263 for source file encoding.
- Clarified license to be MIT like pytest-pep8 from which this is derived.
Upstream changelog:
Stop dynamic computation of install_requires in setup.py: this doesn't work
well in the presence of the pip 7 wheel cache. Use PEP-426 environment
markers instead (this means we now require setuptools version 0.7 or
newer).
Upstream changelog:
1.3.1:
Fix encoding issue in Python 3
1.3:
Bump version number to 1.3
Simplify example in README
Show extra content in report regardless of test result
Support extra content in JSON format
Upstream changelog:
- fix issue59: point to new repo site
- allow a new ensuresyspath="append" mode for py.path.local.pyimport()
so that a neccessary import path is appended instead of prepended to
sys.path
- strike undocumented, untested argument to py.path.local.pypkgpath
- speed up py.path.local.dirpath by a factor of 10
- Don't use old PYTHONPATH in tox.ini.
PYTHONPATH should be unset anyways, so it's okay to ignore the old value.
- Don't use config interpolation for unittests.
This shows a "command not found" error for some reason.