887 lines
40 KiB
Text
887 lines
40 KiB
Text
|
1.3.7
|
||
|
|
||
|
- Fix loading packages from capitalised package on Windows
|
||
|
Patch by Thomas Kluyver
|
||
|
|
||
|
1.3.6
|
||
|
|
||
|
- Re-release of 1.3.5 with wheels fixed.
|
||
|
|
||
|
1.3.5
|
||
|
|
||
|
- Fix #875: nose doesn't collect tests when subpackage is given as arg
|
||
|
- Fix #809: tests not discovered for namespace packages on Windows
|
||
|
- Fix #815: "ValueError: unsupported pickle protocol" with --with-id
|
||
|
- Wrap the working dir path name in quotes when reporting an error.
|
||
|
Patch by Őry Máté.
|
||
|
- Fix #887: Fix a discrepancy in test names between Python 2 and Python 3
|
||
|
- Fix #131: Use os.stat() to check if file is executable
|
||
|
Patch by Arnon Yaari.
|
||
|
- Fix #820 and #719: Fix coverage plugin with multiprocess
|
||
|
Patch by Nicolas Grasset.
|
||
|
|
||
|
1.3.4
|
||
|
|
||
|
- Recognize doctest options defined in other plugins
|
||
|
Patch by Daniel Lepage
|
||
|
- Another fix for Python 3.4: Call super in LazySuite to access
|
||
|
_removed_tests variable
|
||
|
Patch by Robert Kuska
|
||
|
- Fix for try_run when using bound methods
|
||
|
Patch by Christian Lyder Jacobsen
|
||
|
|
||
|
1.3.3
|
||
|
|
||
|
- Fixed a minor issue with the reported version number.
|
||
|
|
||
|
1.3.2
|
||
|
|
||
|
- Fixed an issue where build_ext was not working under setup.py nosetest
|
||
|
Patch by Michael Crusoe
|
||
|
- Fixed #786: generator method fails with callable instance
|
||
|
Patch by Antoine Dechaume
|
||
|
- Fixed a traceback when using string exceptions
|
||
|
- Fixed #792: "Not a directory" error when using python setup.py nosetests
|
||
|
- Fixed #779: xunit report file is written in --where directory
|
||
|
- Fixed #782: Test failures with Python >= 3.3
|
||
|
Patch by Dmitry Shachnev
|
||
|
- Fixed #780: Fix a regression with Python 3
|
||
|
- Fixed #783: try_run is broken with Python 3.4
|
||
|
|
||
|
1.3.1
|
||
|
|
||
|
- The log capture plugin now correctly applies filters that were added
|
||
|
using `addFilter`.
|
||
|
Patch by Malthe Borch.
|
||
|
- Corrected a reference to the multiprocessing plugin in the documentation.
|
||
|
Patch by Nick Loadholtes.
|
||
|
- Fixed #447: doctests fail when getpackage() returns None
|
||
|
Patch by Matthew Brett.
|
||
|
- Fixed #749: xunit exceeds recursion limit
|
||
|
Patch by André Caron.
|
||
|
- Fixed a number of unicode-related issues.
|
||
|
Patch by John Szakmeister.
|
||
|
- Added the ability to ignore config files via an environment variable
|
||
|
Patch by Lukasz Balcerzak
|
||
|
- Fixed #720: nose with detailed errors raises encoding error
|
||
|
Patch by John Szakmeister. Thanks to Guillaume Ayoub for the test case.
|
||
|
- Fixed #692: UnicodeDecodeError in xunit when capturing stdout and stderr
|
||
|
Patch by John Szakmeister.
|
||
|
- Fixed #693: Python 2.4 incompatibilities
|
||
|
Patch by John Szakmeister.
|
||
|
- Don't save zero-byte xunit test reports
|
||
|
Patch by Dan Savilonis.
|
||
|
- Fix Importer.importFromPath to be able to import modules whose names start
|
||
|
with __init__
|
||
|
Patch by Paul Bonser.
|
||
|
- Add a fake isatty() method to Tee
|
||
|
Patch by Jimmy Wennlund.
|
||
|
- Fix #700: Tee is missing the writelines() method
|
||
|
Patch by John Szakmeister.
|
||
|
- Fix #649: UnicodeDecodeError when an exception contains encoded strings
|
||
|
Patch by John Szakmeister.
|
||
|
- Fix #687: verbosity is not a flag
|
||
|
Patch by John Szakmeister.
|
||
|
- Fixed a suppressed deprecation warning
|
||
|
Patch by Arnon Yaari.
|
||
|
- Fixed some broken links in the documentation
|
||
|
Patch by Arnon Yaari.
|
||
|
- Add missing format parameter in error message
|
||
|
Patch by Etienne Millon.
|
||
|
- Switched docs to point at the GitHub site for the issue tracker
|
||
|
Patch by Daniel Beck.
|
||
|
- Fix #447: doctests fail when getpackage() returns None
|
||
|
Patch by Matthew Brett.
|
||
|
- Fix #366: make --pdb report on errors and failures. Use --pdb-error to get
|
||
|
the old behavior.
|
||
|
Patch by Arnon Yaari.
|
||
|
- Fix #501: Imported test generators are misrecognized as simple test
|
||
|
functions
|
||
|
Patch by John Szakmeister.
|
||
|
- Added a test for issue #501
|
||
|
Patch by Michael Killough.
|
||
|
- Use SkipTest from unittest2, if available, for better integration with
|
||
|
testtools
|
||
|
Patch by Ian Wienand.
|
||
|
- Fix #759: Test failures with Python 3.4
|
||
|
Patch by Barry Warsaw.
|
||
|
- Add a note about executable files in the usage, and how to workaround it
|
||
|
Patch by Michael Dunn.
|
||
|
- Fix #743: fix an incorrect regex in writing_tests.rst
|
||
|
Patch by Anne Moroney.
|
||
|
- Fix #690: Don't traceback when coverage reports fail.
|
||
|
Patch by John Szakmeister.
|
||
|
- Display the report summary and stack traces even if Ctrl-C was pressed
|
||
|
during the test run.
|
||
|
Patch by Kevin Qiu.
|
||
|
- Fix #771: attr plugin is broken when parent and child share same method
|
||
|
name with different attributes
|
||
|
Patch by John Szakmeister. Test case provided by Thomas Grainger.
|
||
|
- Fix #728: attrib plugin rejects any staticmethod
|
||
|
Patch by John Szakmesiter. Test case provided by Thomas Kluyver.
|
||
|
- Fix the plugin testing example.
|
||
|
Patch by Charlie Dominio.
|
||
|
- Instruct coverage instance to cover requested packages only.
|
||
|
|
||
|
1.3.0
|
||
|
|
||
|
- Fix #556: fix selecting specific tests in the setuptools command.
|
||
|
Patch by Andrey Golovizin.
|
||
|
- Fixed timed decorator to return the result of the wrapped function.
|
||
|
Patch by Praful Mathur.
|
||
|
- Fixed #513: exception in test generator leads to a TypeError.
|
||
|
Patch by Dmitry Shachnev.
|
||
|
- Fixed #535: nose.importer causes bizarre import errors if sys.path includes
|
||
|
symlinks.
|
||
|
Patch by Antoine Pitrou.
|
||
|
- Added support for Python 3.3.
|
||
|
Patch by John Szakmeister and Bradley Froehle.
|
||
|
- Added the ability to skip generating .pyc files with --no-byte-complie.
|
||
|
Patch by John Szakmeister.
|
||
|
- Suppress tracebacks caused by configuration errors (#401).
|
||
|
Patch by Andrea Corbellini.
|
||
|
- Fixed doctest failures under Python 3 (#519).
|
||
|
Patch by John Szakmeister.
|
||
|
- Fixed test_address's checking for builtins to work with Python 2 and 3.
|
||
|
Patch by Joe Mathes and John Szakmeister.
|
||
|
- Fixed a bug where nose.tools was not being installed on systems without
|
||
|
setuptools. (#554)
|
||
|
Patch by Bradley Froehle.
|
||
|
- Fixed a bug in xunit that was causing it to die ungracefully under
|
||
|
Python 3. (#134)
|
||
|
Patch by John Szakmeister.
|
||
|
- Fixed #561: logcapture shouldn't buffer records, breaks %r point-in-time
|
||
|
formatting.
|
||
|
Patch by Santeri Paavolainen.
|
||
|
- Taught xunit to capture stdout and stderr in the xunit report.
|
||
|
Patch by John Szakmeister.
|
||
|
- Repopulate nose.tools.__all__ so that the autodocs generate correctly.
|
||
|
Patch by Taavi Burns.
|
||
|
- Fixed a bug where nose was failing to parse the NOSE_COVER_PACKAGE
|
||
|
environment variable correctly. (#109)
|
||
|
Patch by Churkin Oleg.
|
||
|
- Taught nose to lookup it's usage text according to PEP-302.
|
||
|
Patch by Bradely Froehle.
|
||
|
- Fixed an ugly traceback when a test class was imported from another module,
|
||
|
but was missing a method. (#595)
|
||
|
Patch by Michael Williamson.
|
||
|
- Fix formatFailure expection if missing tb in exc_info. (#603)
|
||
|
Patch by Sascha Peilicke.
|
||
|
- Taught the test suite to skip coverage tests if the coverage module is not
|
||
|
available. (#597)
|
||
|
Patch by Dmitry Shachnev.
|
||
|
- Fix #135: ResultProxy._prepareErr mangles error output in some cases.
|
||
|
Patch by Arnon Yaari.
|
||
|
- Updated plugin documentation to fix numerous typos and incorrect names.
|
||
|
Patch by Arnon Yaari.
|
||
|
- Added the ability to run nose as a module.
|
||
|
Patch by Stefano Rivera.
|
||
|
- Fix installing Nose under Windows with Python 3.3.
|
||
|
Patch by John Szakmeister.
|
||
|
- Added documentation for --processes=0 and the default value of
|
||
|
--process-timeout.
|
||
|
Patch by Takafumi Arakaki.
|
||
|
- Fixed broken references to non-existent documentation.
|
||
|
Patch by Dmitry Shachnev.
|
||
|
- Fix --cover-min-percentage with --cover-branches. (#626)
|
||
|
Patch by B. W. Baugh.
|
||
|
- Fix --cover-min-percentage with single packages.
|
||
|
Patch by John Szakmeister.
|
||
|
- Fixed reference to PEP 8 to use Sphinx construct for better linking.
|
||
|
Patch by Mahhtijs van der Vleuten.
|
||
|
- Fixed a reference to --cover-packages to use the correct option name.
|
||
|
Patch by Wesley Baugh.
|
||
|
- Updated Nose to avoid using the deprecated compiler module when possible.
|
||
|
Patch by Kim Scheilbel.
|
||
|
- Updated docstrings of formatFailure() and formatError().
|
||
|
Patch by Daniel Abel.
|
||
|
- Several man page fixes for better formatting.
|
||
|
Patches by Dmitry Shachnev.
|
||
|
- Fixed a bug causing Nose to crash in directories that end in '.py'. (#612)
|
||
|
Patch by Arnon Yaari.
|
||
|
- Fixed a traceback when a test raises SystemExit and has captured
|
||
|
output. (#526)
|
||
|
Patch by Arnon Yaari.
|
||
|
- Fixed ImportError running nosetests on namespace package in a subdirectory
|
||
|
on Windows. (#19)
|
||
|
Patch by Arnon Yaari.
|
||
|
|
||
|
1.2.1
|
||
|
|
||
|
- Correct nose.__version__ (#549). Thanks to Chris Withers for the bug report.
|
||
|
|
||
|
1.2.0
|
||
|
|
||
|
- Fixed issue where plugins included with `addplugins` keyword could
|
||
|
be overridden by built-in plugins (or third-party plugins registered
|
||
|
with setuptools) of the same name (#466).
|
||
|
Patch by Brendan McCollam
|
||
|
- Adds :option:`--cover-xml` and :option:`--cover-xml-file` (#311).
|
||
|
Patch by Timothée Peignier.
|
||
|
- Adds support for :option:`--cover-branches` (related to #370).
|
||
|
Patch by Timothée Peignier.
|
||
|
- Fixed Unicode issue on Python 3.1 with coverage (#442)
|
||
|
- fixed class level fixture handling in multiprocessing plugin
|
||
|
- Clue in the ``unittest`` module so it no longer prints traceback frames for
|
||
|
our clones of their simple assertion helpers (#453). Patch by Erik Rose.
|
||
|
- Stop using the ``assert`` statement in ``ok_`` and ``eq_`` so they work under
|
||
|
``python -O`` (#504). Patch by Erik Rose.
|
||
|
- Add loglevel option to logcapture plugin (#493). Patch by Arach Tchoupani.
|
||
|
- Add doctest options flag (#7 from google code tracker). Patch by Michael
|
||
|
Forbes.
|
||
|
- Add support for using 2to3 with the nosetests setuptools command. Patch by
|
||
|
Andrey Golovizin.
|
||
|
- Add --cover-min-percentage flag to force test runs without sufficient
|
||
|
coverage to fail (#540). Patch by Domen Kožar.
|
||
|
- Add travis-ci configuraion (#545). Patch by Domen Kožar.
|
||
|
- Call reactor.stop from twisted thread (#301). Patch by Adi Roiban.
|
||
|
|
||
|
|
||
|
1.1.2
|
||
|
|
||
|
- Fixed regression where the .coverage file was not saved (#439).
|
||
|
Patch by Timothée Peignier.
|
||
|
|
||
|
1.1.1
|
||
|
|
||
|
- Fixed missing nose.sphinx module in source distribution (#436).
|
||
|
|
||
|
1.1.0
|
||
|
|
||
|
- Revised multiprocessing implementation so that it works for test generators
|
||
|
(#399). Thanks to Rosen Diankov for the patch.
|
||
|
- More fixes to multiprocessing implemented by Buck Golemon and Gary Donovan
|
||
|
(also part of #399).
|
||
|
- Lots of improvements to the attrib plugin by Bobby Impollonia (#412, #411,
|
||
|
#324 and #381)
|
||
|
- Code coverage plugin now uses native HTML generation when coverage 3 is
|
||
|
installed (#264). Thanks to Timothée Peignier for the patch.
|
||
|
- Xunit plugin now shows test run time in fractions of a second (#317)
|
||
|
- @attr (from nose.plugins.attrib) can now be used as a class decorator (#292)
|
||
|
- Fixes Xunit plugin to handle non-UTF8 characters (#395)
|
||
|
- Fixes Xunit plugin for reporting generator tests (#369)
|
||
|
- Fixed problems with SkipTest in Python 3.2 (#389)
|
||
|
- Fixed bug in doctest plugin under python 3. Thanks to Thomas Kluyver
|
||
|
for the patch. (#391)
|
||
|
- Fixes mishandling of custom exceptions during failures (#405)
|
||
|
- Fixed subtle bug in :option:`--first-package-wins` that made it
|
||
|
unpredictable (#293)
|
||
|
- Fixes case where teardown_class() was called more than once (#408). Thanks
|
||
|
to Heng Liu for the patch.
|
||
|
- Fixes coverage module names -- 'cal' used to also match calendar which was a
|
||
|
bug (#433)
|
||
|
- Fixes capture plugin when exception message contains non-ascii chars (#402)
|
||
|
- Fixed bug in tests for twisted tools. Thanks to Thomas Kluyver
|
||
|
for the patch.
|
||
|
- Makes :option:`--plugins` more succinct when there are no options (#235)
|
||
|
|
||
|
1.0.0
|
||
|
|
||
|
- Made nose compatible with python 3. **Huge** thanks to Alex "foogod"
|
||
|
Stewart!
|
||
|
|
||
|
0.11.4
|
||
|
|
||
|
- Made nose compatible with Python 2.7.
|
||
|
|
||
|
0.11.3
|
||
|
|
||
|
- Fixed default plugin manager's use of plugin overriding. Thanks to
|
||
|
rob.daylife for the bug report and patch. (#323).
|
||
|
|
||
|
0.11.2
|
||
|
|
||
|
- Changed plugin loading so that external plugins loaded via extension
|
||
|
points can override builtin plugins with the same name.
|
||
|
- Updated multiprocess plugin and nose's packaging to allow multiprocess
|
||
|
plugin to work on Windows (#265).
|
||
|
- Fixed bug in xunit plugin's interaction with suites and errors in
|
||
|
module-level setup. Thanks to Mark McCague for the bug report (#279).
|
||
|
- Fixed bug in nose.loader.TestLoader that allowed Test classes that raise
|
||
|
exceptions in __init__ to crash the test run (#269).
|
||
|
- Fixed bugs in nose's test suite that caused spurious failures on Windows.
|
||
|
- Fixed bug in twisted tools: delayed calls were not shut down on
|
||
|
reactor stop. Thanks to abbeyj for the patch (#278).
|
||
|
- Fixed bug where root log handlers were not cleared. For example, this was
|
||
|
emitting unwanted messages when testing Google App Engine websites.
|
||
|
- Fixed bug in test names output by xunit plugin. Thanks to Philip
|
||
|
Jenvey for the bug report and patch (#280).
|
||
|
- Fixed bug in profile plugin that caused stats to fail to print under Python
|
||
|
2.5 and later. Thanks to djs at n-cube dot org for the bug report (#285).
|
||
|
- Improved logcapture filtering, with default setting to filter out log
|
||
|
messages from nose itself. Thanks to gfxmonk for the patch (#277).
|
||
|
- The xunit plugin now tags skipped tests with a <skipped> testcase tag, and
|
||
|
prevents the XML from containing invalid control characters.
|
||
|
- Updated nose to be compatible with python 2.7 (#305).
|
||
|
- Updated loading of usage document to allow nose to run from within
|
||
|
an egg archive (#288).
|
||
|
- Fixed IronPython checks to make nose compatible with more versions
|
||
|
of IronPython. Thanks to Kevin Mitchell for the patch (#316).
|
||
|
|
||
|
0.11.1
|
||
|
|
||
|
- Fixed bug in xunit plugin xml escaping. Thanks to Nat Williams for the bug
|
||
|
report (#266).
|
||
|
- Fixed bug in xunit plugin that could cause test run to crash after certain
|
||
|
types of errors or actions by other plugins.
|
||
|
- Fixed bug in testid plugin that could cause test run to crash after certain
|
||
|
types of errors or actions by other plugins.
|
||
|
- Fixed bug in collect only plugin that caused it to fail when collecting from
|
||
|
test generators.
|
||
|
- Fixed some broken html in docs.
|
||
|
|
||
|
0.11
|
||
|
|
||
|
- **All new documentation!** nose's documentation is now generated by
|
||
|
Sphinx. And thanks to Pam Zerbinos, it is much better organized and easier
|
||
|
to use and read.
|
||
|
- Two new core commandline options can help with testing namespace
|
||
|
packages. :option:`--first-package-wins` is useful when you want to test one
|
||
|
part of a namespace package that uses another part; in previous versions of
|
||
|
nose, the other part of the namespace package would be evicted from
|
||
|
sys.modules when the 2nd loaded. :option:`--traverse-namespace` is useful if
|
||
|
you want nose to discover tests across entries in a package's
|
||
|
__path__. (This was formerly the default behavior).
|
||
|
- To make it easier to use custom plugins without needing setuptools,
|
||
|
:func:`nose.core.main` and :func:`nose.core.run` now support an
|
||
|
:doc:`addplugins <doc_tests/test_addplugins/test_addplugins>` keyword
|
||
|
argument that takes a list of additional plugins to make available. **Note**
|
||
|
that adding a plugin to this list **does not** activate or enable the
|
||
|
plugin, only makes it available to be enabled via command-line or
|
||
|
config file settings.
|
||
|
- Thanks to Kevin Mitchell, nose is now more compatible with
|
||
|
IronPython. IronPython is still not fully supported, but it should work. If
|
||
|
you'd like to improve nose's support for IronPython further, please join the
|
||
|
nose developer's list and volunteer to become the IronPython maintainer for
|
||
|
nose!
|
||
|
- Added multiprocess plugin that allows tests to be run in parallel
|
||
|
across multiple processes.
|
||
|
- Added logcapture plugin that captures logging messages and prints them with
|
||
|
failing tests. Thanks to Max Ischenko for the implementation.
|
||
|
- Added optional HTML coverage reports to coverage plugin. Thanks to Augie
|
||
|
Fackler for the patch.
|
||
|
- Added plugin that enables collection of tests in all modules. Thanks to
|
||
|
Peter Fein for the patch (#137).
|
||
|
- Added --failed option to testid plugin. When this option is in effect, if
|
||
|
any tests failed in the previous test run (so long as testid was active for
|
||
|
that test run) only the failed tests will run.
|
||
|
- Made it possible to 'yield test' in addition to 'yield test,' from test
|
||
|
generators. Thanks to Chad Whitacre for the patch (#230).
|
||
|
- Fixed bug that caused traceback inspector to fail when source code file
|
||
|
could not be found. Thanks to Philip Jenvey for the bug report and patch
|
||
|
(#236).
|
||
|
- Fixed some issues limiting compatibility with IronPython. Thanks to Kevin
|
||
|
Mitchell for the patch.
|
||
|
- Added support for module and test case fixtures in doctest files (#60).
|
||
|
- Added --traverse-namespace commandline option that restores old default
|
||
|
behavior of following all package __path__ entries when loading tests from
|
||
|
packages. Thanks to Philip Jenvey for the patch (#167).
|
||
|
- Added --first-package-wins commandline option to better support testing
|
||
|
parts of namespace packages. Thanks to Jason Coombs for the bug report
|
||
|
(#197).
|
||
|
- Added versioned nosetests scripts (#123).
|
||
|
- Fixed bug that would cause context teardown to fail to run in some
|
||
|
cases. Thanks to John Shaw for the bug report and patch (#234).
|
||
|
- Enabled doctest plugin to use variable other than "_" as the default result
|
||
|
variable. Thanks to Matt Good for the patch (#163).
|
||
|
- Fixed bug that would cause unicode output to crash output capture. Thanks to
|
||
|
schickb for the bug report (#227).
|
||
|
- Added setUp and tearDown as valid names for module-level fixtures. Thanks to
|
||
|
AgilityNerd for the patch (#211).
|
||
|
- Fixed bug in list of valid names for package-level fixtures. Thanks to
|
||
|
Philip Jenvey for the patch (#237).
|
||
|
- Updated man page generation using hacked up manpage writer from
|
||
|
docutils sandbox. Thanks grubert@users.sourceforge.net for the
|
||
|
original module.
|
||
|
|
||
|
0.10.4
|
||
|
|
||
|
- nose is now compatible with python 2.6.
|
||
|
|
||
|
0.10.3
|
||
|
|
||
|
- Fixed bug in nosetests setup command that caused an exception to be raised
|
||
|
if run with options. Thanks to Philip Jenvey for the bug report (#191).
|
||
|
- Raised score of coverage plugin to 200, so that it will execute before
|
||
|
default-score plugins, and so be able to catch more import-time code. Thanks
|
||
|
to Ned Batchelder for the bug report and patch (#190).
|
||
|
|
||
|
0.10.2
|
||
|
|
||
|
- nose now runs under jython (jython svn trunk only at this time). Thanks to
|
||
|
Philip Jenvey, Pam Zerbinos and the other pycon sprinters (#160).
|
||
|
- Fixed bugs in loader, default plugin manager, and other modules that
|
||
|
caused plugin exceptions to be swallowed (#152, #155). Thanks to John J
|
||
|
Lee for the bug report and patch.
|
||
|
- Added selftest.py script, used to test a non-installed distribution of
|
||
|
nose (#49). Thanks to Antoine Pitrou and John J Lee for the bug report and
|
||
|
patches.
|
||
|
- Fixed bug in nose.importer that caused errors with namespace
|
||
|
packages. Thanks to Philip Jenvey for the bug report and patch (#164).
|
||
|
- Fixed bug in nose.tools.with_setup that prevented use of multiple
|
||
|
@with_setup decorators. Thanks to tlesher for the bug report (#151).
|
||
|
- Fixed bugs in handling of context fixtures for tests imported into a
|
||
|
package. Thanks to Gary Bernhardt for the bug report (#145).
|
||
|
- Fixed bugs in handling of config files and config file options for plugins
|
||
|
excluded by a RestrictedPluginManager. Thanks to John J Lee and Philip
|
||
|
Jenvey for the bug reports and patches (#158, #166).
|
||
|
- Updated ErrorClass exception reporting to be shorter and more clear. Thanks
|
||
|
to John J Lee for the patch (#142).
|
||
|
- Allowed plugins to load tests from modules starting with '_'. Thanks to John
|
||
|
J Lee for the patch (#82).
|
||
|
- Updated documentation about building as rpm (#127).
|
||
|
- Updated config to make including executable files the default on
|
||
|
IronPython as well as on Windows. Thanks to sanxiyn for the bug
|
||
|
report and patch (#183).
|
||
|
- Fixed a python 2.3 incompatibility in errorclass_failure.rst
|
||
|
(#173). Thanks to Philip Jenvey for the bug report and patch.
|
||
|
- Classes with metaclasses can now be collected as tests (#153).
|
||
|
- Made sure the document tree in the selector plugin test is accurate
|
||
|
and tested (#144). Thanks to John J Lee for the bug report and
|
||
|
patch.
|
||
|
- Fixed stack level used when dropping into pdb in a doctest
|
||
|
(#154). Thanks to John J Lee for the bug report and patch.
|
||
|
- Fixed bug in ErrorClassPlugin that made some missing keyword
|
||
|
argument errors obscure (#159). Thanks to Philip Jenvey for the bug
|
||
|
report and patch.
|
||
|
|
||
|
0.10.1
|
||
|
|
||
|
- Fixed bug in capture plugin that caused it to record captured output
|
||
|
on the test in the wrong attribute (#113).
|
||
|
- Fixed bug in result proxy that caused tests to fail if they accessed
|
||
|
certain result attibutes directly (#114). Thanks to Neilen Marais
|
||
|
for the bug report.
|
||
|
- Fixed bug in capture plugin that caused other error formatters
|
||
|
changes to be lost if no output was captured (#124). Thanks to
|
||
|
someone at ilorentz.org for the bug report.
|
||
|
- Fixed several bugs in the nosetests setup command that made some
|
||
|
options unusable and the command itself unusable when no options
|
||
|
were set (#125, #126, #128). Thanks to Alain Poirier for the bug
|
||
|
reports.
|
||
|
- Fixed bug in handling of string errors (#130). Thanks to schl... at
|
||
|
uni-oldenburg.de for the bug report.
|
||
|
- Fixed bug in coverage plugin option handling that prevented
|
||
|
--cover-package=mod1,mod2 from working (#117). Thanks to Allen
|
||
|
Bierbaum for the patch.
|
||
|
- Fixed bug in profiler plugin that prevented output from being
|
||
|
produced when output capture was enabled on python 2.5
|
||
|
(#129). Thanks to James Casbon for the patch.
|
||
|
- Fixed bug in adapting 0.9 plugins to 0.10 (#119 part one). Thanks to
|
||
|
John J Lee for the bug report and tests.
|
||
|
- Fixed bug in handling of argv in config and plugin test utilities
|
||
|
(#119 part two). Thanks to John J Lee for the bug report and patch.
|
||
|
- Fixed bug where Failure cases due to invalid test name
|
||
|
specifications were passed to plugins makeTest (#120). Thanks to
|
||
|
John J Lee for the bug report and patch.
|
||
|
- Fixed bugs in doc css that mangled display in small windows. Thanks
|
||
|
to Ben Hoyt for the bug report and Michal Kwiatkowski for the fix.
|
||
|
- Made it possible to pass a list or comma-separated string as
|
||
|
defaultTest to main(). Thanks to Allen Bierbaum for the suggestion
|
||
|
and patch.
|
||
|
- Fixed a bug in nose.selector and nose.util.getpackage that caused
|
||
|
directories with names that are not legal python identifiers to be
|
||
|
collected as packages (#143). Thanks to John J Lee for the bug
|
||
|
report.
|
||
|
|
||
|
0.10.0
|
||
|
|
||
|
- Fixed bug that broke plugins with names containing underscores or
|
||
|
hyphens. Thanks to John J Lee for the bug report and patch (Issue
|
||
|
#81).
|
||
|
- Fixed typo in nose.__all__. Thanks to John J Lee for the bug report.
|
||
|
- Fixed handling of test descriptions that are multiline
|
||
|
docstrings. Thanks to James Casbon for the patch (Issue #50).
|
||
|
- Improved documentation of doctest plugin to make it clear that
|
||
|
entities may have doctests, or themselves be tests, but not
|
||
|
both. Thanks to John J Lee for the bug report and patch (Issue #84).
|
||
|
- Made __file__ available in non-python-module doctests.
|
||
|
- Fixed bug that made it impossible for plugins to exclude package
|
||
|
directories from test discovery (Issue #89). Thanks to John J Lee
|
||
|
for the bug report and patch.
|
||
|
- Fixed bug that swallowed TypeError and AttributeError exceptions
|
||
|
raised in some plugin calls (Issue #95). Thanks to John J Lee for
|
||
|
the bug report.
|
||
|
- Fixed inconsistencies in many interfaces and docs. Thanks to John J
|
||
|
Lee for many bug reports.
|
||
|
- Fixed bugs in rpm generation (Issue #96). Thanks to Mike Verdone for
|
||
|
the bug report and http://bugs.python.org/issue644744 for the fix.
|
||
|
- Fixed inconsisent use of os.environ in plugin testing
|
||
|
utilities. Thanks to John J Lee for the bug report and patch (Issue
|
||
|
#97).
|
||
|
- Fixed bug in test_address that prevented use of nose.case.Test in
|
||
|
doctests (Issue #100). Thanks to John J Lee for the bug report.
|
||
|
- Fixed bug in error class plugin that caused string exceptions to be
|
||
|
masked (#Issue 101). Thanks to depaula for the bug report.
|
||
|
- Fixed bugs in tests and the profiler plugin when running under
|
||
|
Windows (Issue #103). Thanks to Sidnei Da Silva for the bug report.
|
||
|
- Fixed bugs in plugin calls that caused exception swallowing (Issue
|
||
|
#107). Thanks to John L Lee for the bug report and patch.
|
||
|
- Added more plugin example doctests. Thanks to Kumar McMillan and
|
||
|
John L Lee for patches and lots of help.
|
||
|
- Changed default location of id file for TestId plugin from ~/.noseids to
|
||
|
.noseids in the configured working directory.
|
||
|
|
||
|
0.10.0b1
|
||
|
|
||
|
- Added support for a description attribute on tests in function and
|
||
|
method test cases. Most useful for generators: set the description
|
||
|
attribute on the yielded function.
|
||
|
- Fixed incorrect signature of addSuccess() method in
|
||
|
IPluginInterface. Thanks to nosexunit for the bug report. (Issue
|
||
|
#68).
|
||
|
- Fixed isclass() function in nose.util so that it will not raise an
|
||
|
exception when examining instances that have no accessible __bases__
|
||
|
attribute. (Issue #65).
|
||
|
- Fixed passing of tests to result; the test itself and not the
|
||
|
wrapper was being passed, resulting in test description plugin hooks
|
||
|
not being called. (Issue #71).
|
||
|
- Fixed bugs in FailureDetail and Capture plugins, and plugin manager
|
||
|
and proxy uses of chainable plugin calls. Thanks to Ian Bicking for
|
||
|
the bug report (Issue #72).
|
||
|
- Improved documentation.
|
||
|
|
||
|
0.10.0a2
|
||
|
|
||
|
- Changed entry point name to nose.plugins.0.10 -- dashes and other
|
||
|
non-word characters besides . are not allowed in entry point names.
|
||
|
(Issue #67)
|
||
|
- Fixed loading of plugins from that entry point.
|
||
|
- Fixed backwards-compatibility issue in nose.util (is_generator was
|
||
|
renamed isgenerator). (Issue #64)
|
||
|
- Fixed bug in --logging-config option. Thanks to anton_kr... at yahoo
|
||
|
com for the bug report. (Issue #62)
|
||
|
- Fixed bug in handling of --where argument: first --where was not
|
||
|
passed to loader as workingDir. Thanks to nosexunit for the bug
|
||
|
report. (Issue #63).
|
||
|
|
||
|
0.10.0a1
|
||
|
|
||
|
- Rewrote test loader to be more drop-in compatible with
|
||
|
unittest.TestLoader and to support a more user-friendly command
|
||
|
line.
|
||
|
- Rewrote test runner and result classes to reduce duplication of effort.
|
||
|
- Revised configuration system to be less convoluted.
|
||
|
- Added nose.case.TestCase as universal wrapper for all
|
||
|
testcases. Plugins always see instances of this class.
|
||
|
- Added a management layer to the plugin system, allowing for easy use
|
||
|
of different plugin loading schemes. The default manager loads
|
||
|
builtin plugins, 0.10 plugins under the setuptools entrypoint
|
||
|
nose.plugins.0-10 and provides limited support for legacy plugins
|
||
|
loaded under the entrypoint nose.plugins.
|
||
|
- Added plugin hooks in all phases of discovery, running and description.
|
||
|
- Converted several formely core features to plugins: output capture,
|
||
|
assert introspection, pdb, and skipped and deprecated test support.
|
||
|
- Added id plugin that allows for easier specification of tests on the
|
||
|
command line.
|
||
|
- Added ErrorClassPlugin base class to allow for easier authoring of
|
||
|
plugins that handle errors, like the builtin skipped and deprecated
|
||
|
test plugins.
|
||
|
- Added support for loading doctests from non-module files for all
|
||
|
supported python versions.
|
||
|
- Added score property to plugins to allow plugins to execute in a
|
||
|
defined order (higher score execute first).
|
||
|
- Expanded nose's own test suite to include a variety of functional tests.
|
||
|
- Fixed many bugs.
|
||
|
|
||
|
0.9.3
|
||
|
|
||
|
- Added support for user configuration files. Thanks to Antoine Pitrou for the
|
||
|
patch.
|
||
|
- Fixed bug that caused profiler plugin to leak 0-byte temp files. Thanks to
|
||
|
Antoine Pitrou for the patch.
|
||
|
- Made usage of temp files in profiler plugin more sensible. Thanks to Michael
|
||
|
Sclenker for the bug report.
|
||
|
- Fixed bug that stopped loading of twisted TestCase tests. Thanks to Kumar
|
||
|
McMillan for the bug report.
|
||
|
- Corrected man page location. Thanks to luke macken for the bug report and
|
||
|
patch.
|
||
|
- Added with_setup to nose.tools.__all__. Thanks to Allen Bierbaum for the bug
|
||
|
report.
|
||
|
- Altered plugin loading so that builtin plugins can be loaded without
|
||
|
setuptools. Thanks to Allen Bierbaum for the suggestion.
|
||
|
- Fixed a bug in the doctests plugin that caused an error when multiple
|
||
|
exclude arguments were specified. Thanks to mbeachy for the bug report and
|
||
|
patch.
|
||
|
|
||
|
0.9.2
|
||
|
|
||
|
- Added nosetests setuptools command. Now you can run python setup.py
|
||
|
nosetests and have access to all nose features and plugins. Thanks to James
|
||
|
Casbon for the patch.
|
||
|
- Added make_decorator function to nose.tools. Used to construct decorator
|
||
|
functions that are well-behaved and preserve as much of the original
|
||
|
function's metadata as possible. Thanks to Antoine Pitrou for the patch.
|
||
|
- Added nose.twistedtools, contributed by Antoine Pitrou. This module adds
|
||
|
@deferred decorator that makes it simple to write deferred tests, with or
|
||
|
without timeouts.
|
||
|
- Added monkeypatch to doctests that keeps doctest from stepping on coverage
|
||
|
when the two plugins are used together. Thanks to David Avraamides for the
|
||
|
bug report.
|
||
|
- Added isolation plugin. Use this plugin to automatically restore sys.modules
|
||
|
after each test module or package. Thanks to Michal Kwiatkowski for the
|
||
|
feature request.
|
||
|
- Fixed bug where -vvvv turned off verbose logging instead of making it even
|
||
|
more verbose. Thanks to Ian Bicking for the bug report.
|
||
|
- Fixed bug where assert inspection would fail when the trailing """ of a
|
||
|
docstring was one of the inspected lines. Thanks to cito at online dot de
|
||
|
for the bug report.
|
||
|
- Updated attrib plugin to allow selection of test methods by attributes of
|
||
|
the test case class. Thanks to Jason Hildebrand for the patch.
|
||
|
- Improved compatibility with python 2.2. Thanks to Chad Whitacre for the
|
||
|
patch.
|
||
|
- Fixed bug in handling of options from setup.cfg. Thanks to Kumar McMillan for
|
||
|
the patch.
|
||
|
- Fixed bug in generator methods, where a generator method using an inline
|
||
|
funciton would result in an AttributeError. Thanks to Antoine Pitrou for the
|
||
|
bug report.
|
||
|
- Updated coverage plugin to ignore lines tagged with #pragma: no cover,
|
||
|
matching the behavior of coverage.py on the command line. Thanks to Bill
|
||
|
Zingler for the bug report.
|
||
|
- Added a man page for nosetests. Thanks to Gustavo Noronha Silva for the
|
||
|
request and providing an example.
|
||
|
|
||
|
0.9.1
|
||
|
|
||
|
- New function nose.runmodule() finds and runs tests only in a
|
||
|
single module, which defaults to __main__ (like unittest.main() or
|
||
|
doctest.runmodule()). Thanks Greg Wilson for the suggestion.
|
||
|
- Multiple -w (--where) arguments can now be used in one command line,
|
||
|
to find and run tests in multiple locations. Thanks Titus Brown for
|
||
|
the suggestion.
|
||
|
- Multiple --include and --exclude arguments are now accepted in one command
|
||
|
line. Thanks Michal Kwiatkowski for the feature request.
|
||
|
- Coverage will now include modules not imported by any test when
|
||
|
using the new --cover-inclusive switch. Thanks James Casbon for the
|
||
|
patch.
|
||
|
- module:TestClass test selections now properly select all tests in the test
|
||
|
class.
|
||
|
- startTest and stopTest are now called in plugins at the beginning and end of
|
||
|
test suites, including test modules, as well as individual tests. Thanks
|
||
|
Michal Kwiatkowski for the suggestion.
|
||
|
- Fix bug in test selection when run as ``python setup.py test``: 'test' was
|
||
|
passing through and being used as the test name selection. Thanks Kumar
|
||
|
McMillan for the bug report.
|
||
|
- Fix bug in handling of -x/--stop option where the test run would stop on
|
||
|
skipped or deprecated tests. Thanks Kumar McMillan for the bug report.
|
||
|
- Fix bug in loading tests from projects with layouts that place modules in
|
||
|
/lib or /src dirs and tests in a parallel /tests dir.
|
||
|
- Fix bug in python version detection. Thanks Kevin Dangoor for the bug report
|
||
|
and fix.
|
||
|
- Fix log message in selector that could raise IndexError. Thanks Kumar
|
||
|
McMillan for the bug report and patch.
|
||
|
- Fix bug in handling doctest extension arguments specified in environment and
|
||
|
on command line. Thanks Ian Bicking for the bug report.
|
||
|
- Fix bug in running fixtures (setup/teardown) that are not functions, and
|
||
|
report a better error message when a fixture is not callable. Thanks Ian
|
||
|
Bicking for the bug report.
|
||
|
|
||
|
0.9.0
|
||
|
|
||
|
- More unit tests and better test coverage. Numerous bugfixes deriving from
|
||
|
same.
|
||
|
- Make --exe option do what it says, and turn it on by default on
|
||
|
Windows. Add --noexe option so windows users can turn if off.Thanks
|
||
|
richard at artsalliancemedia dot com for the bug reports.
|
||
|
- Handle a working directory that happens to be in the middle of a package
|
||
|
more gracefully. Thanks Max Ischenko for the bug report and test case.
|
||
|
- Fix bugs in test name comparison when a test module is specified whose name
|
||
|
overlaps that of a non-test module. Thanks Max Ischenko for the bug report
|
||
|
and test case.
|
||
|
- Fix warning spam when a non-existent test file is requested on the command
|
||
|
line. Thanks Max Ischenko for the bug report.
|
||
|
|
||
|
0.9.0b2
|
||
|
|
||
|
- Allow --debug to set any logger to DEBUG. Thanks to casbon at gmail dot com
|
||
|
for the patch.
|
||
|
- Fix doctest help, which was missing notes about the environment variables
|
||
|
that it accepts. Thanks to Kumar McMillan for the patch.
|
||
|
- Restore sys.stdout after run() in nose.core. Thanks to Titus Brown for the
|
||
|
bug report.
|
||
|
- Correct handling of trailing comma in attrib plugin args. Thanks Titus Brown
|
||
|
for the patch.
|
||
|
|
||
|
0.9.0b1
|
||
|
|
||
|
- Fix bug in handling of OR conditions in attrib plugin. Thanks to Titus
|
||
|
Brown for the bug report.
|
||
|
- Fix bug in nose.importer that would cause an attribute error when a local
|
||
|
module shadowed a builtin, or other object in sys.modules, without a
|
||
|
__file__ attribute. Thanks to casbon at gmail dot com for the bug report.
|
||
|
- Fix bug in nose.tools decorators that would cause decorated tests to appear
|
||
|
with incorrect names in result output.
|
||
|
|
||
|
0.9.0a2
|
||
|
|
||
|
- In TestLoader, use inspect's isfunction() and ismethod() to filter functions
|
||
|
and methods, instead of callable(). Thanks to Kumar McMillan for reporting
|
||
|
the bug.
|
||
|
- Fix doctest plugin: return an empty iterable when no tests are found in a
|
||
|
directory instead of None. Thanks to Kumar McMillan for the bug report and
|
||
|
patch.
|
||
|
- Ignore executable python modules, unless run with --exe file. This is a
|
||
|
partial defense against nose causing trouble by loading python modules that
|
||
|
are not import-safe. The full defense: don't write modules that aren't
|
||
|
import safe!
|
||
|
- Catch and warn about errors on plugin load instead of dying.
|
||
|
- Renamed builtin profile module from nose.plugins.profile to
|
||
|
nose.plugins.prof to avoid shadowing stdlib profile.py module.
|
||
|
|
||
|
0.9.0a1
|
||
|
|
||
|
- Add support for plugins, with hooks for selecting, loading and reporting on
|
||
|
tests. Doctest and coverage are now plugins.
|
||
|
- Add builtin plugins for profiling with hotshot, selecting tests by
|
||
|
attribute (contributed by Mika Eloranta), and warning of missed tests
|
||
|
specified on command line.
|
||
|
- Change command line test selection syntax to match unittest. Thanks to Titus
|
||
|
Brown for the suggestion.
|
||
|
- Option to drop into pdb on error or failure.
|
||
|
- Option to stop running on first error or failure. Thanks to Kevin Dangoor
|
||
|
for the suggestion.
|
||
|
- Support for doctests in files other than python modules (python 2.4 only)
|
||
|
- Reimplement base test selection as single self-contained class.
|
||
|
- Reimplement test loading as unittest-compatible TestLoader class.
|
||
|
- Remove all monkeypatching.
|
||
|
- Reimplement output capture and assert introspection support in
|
||
|
unittest-compatible Result class.
|
||
|
- Better support for multiline constructions in assert introspection.
|
||
|
- More context output with assert introspections.
|
||
|
- Refactor setuptools test command support to use proxied result, which
|
||
|
enables output capture and assert introspection support without
|
||
|
monkeypatching. Thanks to Philip J. Eby for the suggestion and skeleton
|
||
|
implementation.
|
||
|
- Add support for generators in test classes. Thanks to Jay Parlar for the
|
||
|
suggestion and patch.
|
||
|
- Add nose.tools package with some helpful test-composition functions and
|
||
|
decorators, including @raises, contributed by Scot Doyle.
|
||
|
- Reimplement nose.main (TestProgram) to have unittest-compatible signature.
|
||
|
- All-new import path handling. You can even turn it off! (If you don't,
|
||
|
nose will ensure that all directories from which it imports anything are on
|
||
|
sys.path before the import.)
|
||
|
- Logging package used for verbose logging.
|
||
|
- Support for skipped and deprecated tests.
|
||
|
- Configuration is no longer global.
|
||
|
|
||
|
0.8.7
|
||
|
|
||
|
- Add support for py.test-style test generators. Thanks to Jay Parlar for
|
||
|
the suggestion.
|
||
|
- Fix bug in doctest discovery. Thanks to Richard Cooper for the bug report.
|
||
|
- Fix bug in output capture being appended to later exceptions. Thanks to
|
||
|
Titus Brown for the patch that uncovered the bug.
|
||
|
- Fix bug(?) in Exception patch that caused masked hasattr/__getattr__ loops
|
||
|
to either become actual infinite loops, or at least take so long to finally
|
||
|
error out that they might as well be infinite.
|
||
|
- Add -m option to restrict test running to only tests in a particular package
|
||
|
or module. Like the -f option, -m does not restrict test *loading*, only
|
||
|
test *execution*.
|
||
|
- When loading and running a test module, ensure that the module's path is in
|
||
|
sys.path for the duration of the run, not just while importing the module.
|
||
|
- Add id() method to all callable test classes, for greater unittest
|
||
|
compatibility.
|
||
|
|
||
|
0.8.6
|
||
|
|
||
|
- Fix bug with coverage output when sys.modules contains entries without
|
||
|
__file__ attributes
|
||
|
- Added -p (--cover-packages) switch that may be used to restrict coverage
|
||
|
report to modules in the indicated package(s)
|
||
|
|
||
|
0.8.5
|
||
|
|
||
|
- Output capture and verbose assertion errors now work when run like
|
||
|
'python setup.py test', as advertised.
|
||
|
- Code coverage improvements: now coverage will be output for all modules
|
||
|
imported by any means that were not in sys.modules at the start of the test
|
||
|
run. By default, test modules will be excluded from the coverage report, but
|
||
|
you can include them with the -t (--cover-tests) option.
|
||
|
|
||
|
0.8.4
|
||
|
|
||
|
- Fix bugs in handling of setup/teardown fixtures that could cause TypeError
|
||
|
exceptions in fixtures to be silently ignored, or multiple fixtures of the
|
||
|
same type to run. Thanks to Titus Brown for the bug report.
|
||
|
|
||
|
0.8.3
|
||
|
|
||
|
- Add -V (--version) switch to nosetests
|
||
|
- Fix bug where sys.path would not be set up correctly when running some
|
||
|
tests, producing spurious import errors (Thanks to Titus Brown and Mike
|
||
|
Thomson for the bug reports)
|
||
|
- For test classses not derived from unittest.TestCase, output (module.Class)
|
||
|
"doc string" as test description, when method doc string is available
|
||
|
(Thanks to David Keeney for the suggestion, even if this isn't quite what he
|
||
|
meant)
|
||
|
|
||
|
0.8.2
|
||
|
|
||
|
- Revise import to bypass sys.path and manipulate sys.modules more
|
||
|
intelligently, ensuring that the test module we think we are loading is the
|
||
|
module we actually load, and that modules loaded by other imports are not
|
||
|
reloaded without cause
|
||
|
- Allow test directories inside of packages. Formerly directories matching
|
||
|
testMatch but lacking an __init__.py would cause an ImportError when located
|
||
|
inside of packages
|
||
|
- Fix bugs in different handling of -f switch in combination with -w and -o
|
||
|
|
||
|
0.8.1
|
||
|
|
||
|
- Fix bug in main() that resulted in incorrect exit status for nosetests
|
||
|
script when tests fail
|
||
|
- Add missing test files to MANIFEST.in
|
||
|
- Miscellaneous pylint cleanups
|
||
|
|
||
|
0.8
|
||
|
|
||
|
- Add doctest support
|
||
|
- Add optional code coverage support, using Ned Batchelder's coverage.py;
|
||
|
activate with --coverage switch or NOSE_COVERAGE environment variable
|
||
|
- More informative error message on import error
|
||
|
- Fix bug where module setup could be called twice and teardown skipped
|
||
|
for certain setup method names.
|
||
|
- main() returns success value, does not exit. run_exit() added to support
|
||
|
old behavior; nosetests script now calls nose.run_exit()
|
||
|
|
||
|
0.7.5
|
||
|
|
||
|
- Fix bus error on exit
|
||
|
- Discover tests inside of non-TestCase classes that match testMatch
|
||
|
- Reorganize selftest: now selftest tests the output of a full nose run
|
||
|
- Add test_with_setup.py contributed by Kumar McMillan
|
||
|
|
||
|
0.7.2
|
||
|
|
||
|
- Refactor and correct bugs in discovery and test loading
|
||
|
- Reorganize and expand documentation
|
||
|
- Add -f (run this test file only) switch
|
||
|
|
||
|
0.7.1
|
||
|
|
||
|
- Bugfix release: test files in root of working directory were not being
|
||
|
stripped of file extension before import.
|
||
|
|
||
|
0.7
|
||
|
|
||
|
- Change license to LGPL
|
||
|
- Major rework of output capture and assert introspection
|
||
|
- Improve test discovery: now finds tests in packages
|
||
|
- Replace -n switch ('no cwd') with -w switch ('look here')
|
||
|
|
||
|
0.6
|
||
|
|
||
|
- New nosetests script
|
||
|
- Allow specification of names on command line that are loadable but not
|
||
|
directly loadable as modules (eg nosetests -o path/to/tests.py)
|
||
|
- Add optional py.test-like assert introspection. Thanks to Kevin Dangoor
|
||
|
for the suggestion.
|
||
|
- Improvements to selftest
|
||
|
|
||
|
0.5.1
|
||
|
|
||
|
- Increased compatibility with python 2.3 (and maybe earlier)
|
||
|
- Increased compatibility with tests written for py.test: now calls
|
||
|
module.setup_module(module) if module.setup_module() fails
|
||
|
|