Changelog ========= * :release:`1.13.0 <01-03-2022>` * :feature:`-` Support python 3.9 * :release:`1.12.0 <24-09-2020>` * :feature:`1032` Allow specifying directories when reading tests from files * :bug:`1034 major` Added filtering during session resume * :bug:`- major` Fix to filter class based test based on the tagging in parameter * :release:`1.11.0 <06-08-2020>` * :bug:`- major` Fix iter_suite_file_paths to get test path of the tests as relative if relative path is provided in suite file * :bug:`899 major` Fix slash.exclude decorator for fixtures * :release:`1.10.0 <21-04-2020>` * :bug:`1013 major` Allow slash.use_fixtures application on other fixtures * :bug:`1007 major` Safe set markers on exceptions * :feature:`-` Require newer emport and dessert versions (use importlib instead of imp) * :release:`1.9.0 <02-12-2019>` * :feature:`998` Choose IPython colors scheme for interactive test * :bug:`991 major` Fix detection of yield-fixture when combined with parametrization * :feature:`241` Support 'slashconf' directory * :bug:`985 major` Fix a bug where Slash did not expand parameterizations used through use_fixture properly * :feature:`982` Read files as binary to avoid decoding errors * :feature:`979` Change Ordered set implementation from orderedset to ordered-set, as the former is not maintained anymore * :feature:`598` Drop support for python version < 3.6 * :feature:`-` Added support for tagging test parameterization values * :feature:`-` Added a plugin which provides links to test logs which have been archived by a CI system * :bug:`- major` Corrected behaviour of float and int test details in xunit output * :release:`1.8.0 <03-07-2019>` * :feature:`945` Drop support for deprecated arguments of ``add_cleanup`` * :feature:`452` Drop support for old-style assertions * :feature:`952` Added support for getting the currently active scope (``test``, ``module`` or ``session``) through the new ``get_current_scope`` API. ``session.scope_manager.current_scope`` is also available. * :feature:`925` Support was added for terminals with light backgrounds by changing ``log.console_theme.dark_background`` configuration * :feature:`950` Slash now emits a log record when handling fatal errors * :feature:`-` Add tests and suite execution time to xunit plugin * :feature:`-` Add ``slash.ignored_warnings`` context * :release:`1.7.10 <30-04-2019>` * :bug:`930` Restore behavior of exceptions propagating out of the test_start or test_end hooks. Correct behavior is for those to fail the test (thanks @pierreluctg) * :bug:`934` Parallel sessions now honor fatal exceptions encountered in worker sessions * :bug:`928` Fixed a bug causing requirements to leak across sibling test classes * :release:`1.7.9 <09-03-2019>` * :bug:`-` Revert console coloring change, as it does not behave consistently across different terminals * :release:`1.7.8 <04-03-2019>` * :bug:`925` Fix background color for session start and test collection messages * :bug:`926` Return code for failed sessions was changed to 1 (from -1) * :release:`1.7.7 <21-01-2019>` * :bug:`907` Fix parallel worker timeout issues * :bug:`-` Fix test_start triggering when exceptions are thrown in class-based tests (thanks @pierreluctg) * :bug:`-` Several Windows-specific fixes (thanks @pierreluctg) * :bug:`-` Fix swallowing of broken-pipe errors from console reporter - will not add errors * :release:`1.7.6 <16-12-2018>` * :bug:`-` Fix state saving of unstarted tests during interruptions * :bug:`-` Fix parallel execution on Windows systems (thanks @pierreluctg!) * :bug:`904` Fix list-plugins output for new normalized names * :bug:`895` Wrap log_file_closed hook with ``handling_exceptions`` * :release:`1.7.5 <23-10-2018>` * :bug:`897` Fix handling of ``-k`` patterns beginning with ``not`` * :release:`1.7.4 <23-10-2018>` * :bug:`-` Fix backslash-python dependency check * :release:`1.7.3 <21-10-2018>` * :bug:`-` Correctly call fixture.test_end on test errors (Thanks @pierreluctg!) * :feature:`-` Resuming sessions now supports ``--failed-only`` and ``--unstarted-only`` to control which tests to resume * :bug:`879` Fix handling exceptions during ``entering_debugger`` hook triggered by ``Application.__exit__()`` * :bug:`878` Fix notification plugin's handling of backslash plugin with no active session * :release:`1.7.2 <11-10-2018>` * :bug:`882` Fix fixture reuse logic regression causing fixtures to be evaluated more than once in some cases * :release:`1.7.1 <7-10-2018>` * :bug:`876` Support disabling convertion of log error to slash-error by extra's ``capture=False`` * :release:`1.7.0 <7-10-2018>` * :feature:`825` Support capturing error logs as actual errors, when ``run.capture.error_logs_as_errors`` is enabled * :bug:`864 major` Fix handling of exceptions during ``_run_single_test()`` before test started * :feature:`12` Added a signal handling plugin (see documentation for more details) * :feature:`836` Resuming sessions now supports ``--failed-first`` and ``--unstarted-first`` to control the resuming priority * :feature:`843` Add ``slash.app_quit`` hook, a hook that is called whenever the Slash process finishes. This is useful to allow certain plugins to perform important cleanups on session-wide errors * :bug:`846 major` Use AND operator between ``ignore_warnings`` parameters * :feature:`648` Add support for use_fixtures decotaror * :feature:`738` Collect warnings that were omitted before session started * :feature:`824` Support API to determine cleanup phase - ``get_current_cleanup_phase()`` and ``is_in_cleanup()`` * :feature:`650` Fixtures can now be tagged the same way as tests * :feature:`803` Add exception class for internal Slash errors: ``SlashInternalError`` * :bug:`804 major` Swallow IO Errors from console reporter * :bug:`812 major` Fixed debug_if_needed when called before session initialized * :bug:`810 major` Fixed handling of notification messages containing curly braces * :feature:`693` Remove backwards compatibility for ``log.errors_subpath`` configuration. Use ``log.highlights_subpath`` configuration instead. * :feature:`799` Tags can now be set more than once on a test, providing that they are set in the same way (same value or without a value) * :feature:`797` Add ability to filter tests of ``slash list`` with ``-k`` * :release:`1.6.5 <2-9-2018>` * :bug:`837` Fix handling exceptions during ``_log_file_handler_context`` * :release:`1.6.4 <19-7-2018>` * :bug:`820` Fix error handling when capturing distilled tracebacks * :release:`1.6.3 <15-7-2018>` * :release:`1.6.1 <1-7-2018>` * :bug:`-` Fix support for Python 3.7 * :release:`1.6.0 <6-5-2018>` * :feature:`771` Keyword arguments to ``registers_on`` now get forwarded to Gossip's ``register`` API * :feature:`769` Added a new configuration flag, ``log.show_raw_param_values``, defaulting to ``False``. If set to True, log lines for beginnings of tests will contain actual parametrization values instead of format-safe strings. * :feature:`528` ``slash.exclude`` can now exclude combinations of parameter values * :bug:`783 major` Session errors in children are now handled and reported when running with parallel * :feature:`785` Plugins can now be marked to indicate whether or not they support parallel execution, using ``slash.plugins.parallel_mode``. To avoid errors, Slash assumes that unmarked plugins do not support parallel execution. * :feature:`779` Added ``config.root.run.project_name``, which can be configured to hold the name of the current project. It defaults to the name of the directory in which your project's .slashrc is located * :bug:`772 major` Fix handling exceptions which raised from None in interactive session * :feature:`782` Added new hooks: ``before_session_cleanup``, ``after_session_end`` * :release:`1.5.1 <10-3-2018>` * :bug:`767` Fixed traceback variable capture for cases where ``self=None`` * :release:`1.5.0 <7-3-2018>` * :feature:`590` Add support for labeling parametrization variations * :feature:`697` Added ``slash.before_interactive_shell`` hook * :feature:`-` Added a configuration option preventing ``slash.g`` from being available in interactive namespaces * :feature:`664` Added ``metadata.set_file_path``, allowing integrations to set a custom file path to be associated with a loaded test * :feature:`752` Added ``slash.ignore_warnings`` to filter unwanted warnings during sessions * :feature:`757` ``slash list tests`` now accepts the ``--warnings-as-errors`` flag, making it treat warnings it encounters as errors * :feature:`755` ``timestamp`` can now be used when formatting log path names * :feature:`747` session.results.global_result.is_success() now returns False if any test in the session isn't successful * :feature:`-` Add ``slash rerun`` - given a session_id, run all the tests of this session * :feature:`740` session.results.current is now a complete synonym for slash.context.result * :feature:`702` Rename log.traceback_level to log.console_traceback_level * :feature:`681` Added a new hook, ``log_file_closed``, and added configuration ``log.cleanup`` to enable removing log files after they are closed * :feature:`719` Added log.core_log_level, allowing limiting the verbosity of logs initiated from Slash itself * :feature:`-` ``-X`` can now be used to turn off stop-on-error behavior. Useful if you have it on by default through a configuration file * :feature:`711` Logs can now optionally be compressed on-the-fly through the ``log.compression.enabled`` configuration parameter * :feature:`723` Add configuration for resume state path location * :bug:`721 major` Add timeout to sending emails through SMTP * :feature:`-` Support fixture keyword arguments for ``generator_fixture`` * :feature:`712` Added ``--pdb-filter`` - a new command-line flag that allows the user to enter pdb only on specific caught exceptions, based on pattern matching (similar to ``-k``) * :bug:`714 major` Session cleanups now happen under the global result object * :bug:`669 major` Session-scoped fixtures now properly register cleanups on session scope as expected * :bug:`710 major` Fix sorting when repeat-all option is use * :feature:`698` By setting ``log.traceback_variables`` to ``True``, traceback variable values will now be written to the debug log upon failures/errors * :feature:`704` Error objects now have their respective ``exc_info`` attribute containing the exception info for the current info (if available). This deprecates the use of the ``locals``/``globals`` attributes on traceback frames. * :feature:`-` During the execution of ``error_added`` hooks, traceback frame objects now have ``python_frame``, containing the original Pythonic frame that yielded them. Those are cleared soon after the hook is called. * :feature:`-` Suite files can now have a ``repeat: X`` marker to make the test run multiple times (Thanks @pierreluctg!) * :bug:`671 major` Help for ``slash resume`` is now more helpful * :feature:`685` use.X is now a shortcut for use('x') for fixture annotations * :feature:`692` Enhance errors summary log to session highlights log (configuration changed: ``log.errors_subpath`` -> ``log.highlights_subpath``) * :feature:`658` Deprecate ``PluginInterface.get_config()`` and rename it to ``PluginInterface.get_default_config()`` * :bug:`- major` Fix tests loading order for some FS types * :feature:`689` Added a new hook, ``interruption_added``, for registering exceptions which cause test/session interruptions * :feature:`686` ``assert_raises`` raises ``ExpectedExceptionNotCaught`` if exception wasn't caught also allowing inspection of the expected exception object * :bug:`684 major` Optimize test loading with ``--repeat-each`` and ``--repeat-all`` * :bug:`679 major` Fix coloring console for non TTY stdout * :feature:`675` Emit native python warnings for logbook warning level * :feature:`661` Support PDB notifications by notifications plugin * :feature:`660` Add configuration for notifications plugin ``--notify-only-on-failure`` * :feature:`662` Change email notification icon based on session success status * :release:`1.4.6 <3-12-2017>` * :bug:`701` Fixed error in coverage reporter cleanup * :bug:`700` Fixed handling of non-exception errors in session scope * :release:`1.4.3 <14-9-2017>` * :bug:`670` Improve handling of interruption exceptions - custom interruption exceptions will now properly cause the session and test to trigger the ``session_interrupt`` and ``test_interrupt`` hooks. Unexpected exceptions like ``SystemExit`` from within tests are now also reported properly instead of silently ignored * :bug:`668` Properly initialize colorama under Windows * :bug:`665` Support overriding notifications plugin's ``from_email`` by configuration * :release:`1.4.2 <13-8-2017>` * :bug:`-` Add ``current_config`` property to plugins * :release:`1.4.1 <9-8-2017>` * :bug:`-` Add ability to include details in email notifications * :bug:`-` Restore default enabled state for Prowl/NMA/Pushbullet notifications * :release:`1.4.0 <8-8-2017>` * :feature:`-` Added new hook ``prepare_notification`` to process notifications before being sent by the notifications plugin * :feature:`662` Improve notifications plugin, add support for email notifications * :feature:`651` Add ``host_fqdn`` and ``host_name`` attributes to session * :feature:`647` Support internal plugins * :feature:`647` Support installing plugins as "internal" -- thus not letting users disable or enable them through the command line * :release:`1.3.0 <24-07-2017>` * :feature:`213` Added parallel execution capability (still considered experimental) - tests can be run in parallel by multiple subprocess "workers". See `the documentation `_ for more information * :feature:`596` Slash now supports a flag to disable assertion introspection on assertions containing messages (``run.message_assertion_introspection``) * :feature:`642` Support multiple registrations on the same plugin method with ``plugins.registers_on`` * :feature:`617` Support ``inhibit_unhandled_exception_traceback`` * :feature:`635` ``slash run`` now supports ``--force-color``/``--no-color`` flags. * :feature:`633` When using the `handling_exceptions`, it is now possible to obtain the exception object that was handled * :feature:`-` Added ``SLASH_USER_SETTINGS=x`` environment variable to give a possibility to override the user slashrc file * :feature:`592` Added ``exception_attributes`` dict to ``Error`` objects * :feature:`600` Use `vintage` package for deprecations * :feature:`595` Add `allowing_exceptions` context letting tests allow specific exceptions in selective context * :bug:`606 major` Swallow python warnings during ast.parse * :feature:`-` Added ``session.results.has_fatal_errors`` to check for fatal errors within a session * :feature:`-` Slash now detects test functions being redefined, hiding previous tests, and warns about it * :feature:`556` Long variable representations are now capped by default when distilling tracebacks * :feature:`-` Assertions coming from plugins and modules loaded from the project's ``.slashrc`` now also have assertion rewriting introspection enabled * :bug:`- major` Honor run.default_sources configuration when using slash list (thanks Pierre-Luc Tessier Gagné) * :bug:`- major` Several Windows-specific fixes (thanks Pierre-Luc Tessier Gagné) * :release:`1.2.5 <19-06-2017>` * :bug:`-` Add exception_str shortcut for future compatibility on error objects * :release:`1.2.4 <19-06-2017>` * :bug:`581` Fix ``slash.exclude`` to work across fixture namespaces * :bug:`580` ``tests_loaded`` hooks now get called with a list of tests including the interactive test if applicable * :release:`1.2.2 <29-05-2017>` * :bug:`564` Fix test collection bug causing tests to not be loaded with some plugins * :release:`1.2.0 <30-04-2017>` * :bug:`551 major` Fix stopping on error behavior when errors are reported on previous tests * :feature:`529` Switch to PBR * :feature:`508` Added optional ``end_message`` argument to ``notify_if_slow_context``, allowing better verbosity of long operations * :bug:`490 major` Fixed behavior of plugin dependencies in cases involving mixed usage of plugin-level and hook-level dependencies * :feature:`544` Added ``debug.debugger`` configuration to enable specifying preferred debugger. You can now pass ``-o debug.debugger=ipdb`` to prefer ipdb over pudb, for example * :feature:`476` ``slash resume`` was greatly improved, and can now also fetch resumed tests from a recorded session in Backslash, if its plugin is configured * :feature:`524` ``slash list``, ``slash list-config`` and ``slash list-plugins`` now supports ``--force-color``/``--no-color`` flags. The default changed from colored to colored only for tty * :bug:`516 major` Fire test_interrupt earlier and properly mark session as interrupted when a test is interrupted * :feature:`513` Add deep parametrization info (including nested fixtures) to the metadata variation info * :feature:`512` ``slash list-config`` now receives a path filter for config paths to display * :feature:`519` Add ``--no-output`` flag for ``slash list`` * :feature:`497` Major overhaul of CLI mechanics -- improve help message and usage, as well as cleaner error exits during the session configuration phase * :feature:`467` Yield fixtures are now automatically detected by Slash -- using ``yield_fixture`` explicitly is no longer required * :feature:`507` Test id can now be obtained via ``slash.context.test.id`` * :bug:`510 major` Explicitly fail fixtures which name is valid for tests (currently: ``test_`` prefix) * :feature:`511` Support adding external logs ``Result.add_extra_log_path`` which will be retrieved by ``Result.get_log_paths()`` * :feature:`502` Added ``session_interrupt`` hook for when sessions are interrupted * :release:`1.1.0 <22-11-2016>` * :feature:`485` xunit plugin now saves the run results even when the session doesn't end gracefully (Thanks @eplaut) * :feature:`369` Add ``slash.exclude`` to only skip specific parametrizations of a specific test or a dependent fixture. See `the cookbook section `_ for more details * :bug:`483 major` Properly handle possible exceptions when examining traceback object attributes * :feature:`484` ``slash list`` now indicates fixtures that are overriding outer fixtures (e.g. from ``slashconf.py``) * :feature:`417` ``add_error``/``add_failure`` can now receive both message and exc_info information * :feature:`359` Add trace logging of fixture values, including dependent fixtures * :feature:`362` Add ability to intervene during test loading and change run order. This is done with a new ``tests_loaded`` hook and a new field in the test metadata controlling the sort order. See `the cookbook `_ for more details * :feature:`352` Suite files can now contain filters on specific items via a comment beginning with ``filter:``, e.g. ``/path/to/test.py # filter: x and not y`` * :feature:`287` Add support for "facts" in test results, intended for coverage reports over relatively narrow sets of values (like OS, product configuration etc.) * :feature:`195` Added ``this.test_start`` and ``this.test_end`` to enable fixture-specific test start and end hooks while they're active * :feature:`384` Accumulate logs in the configuration phase of sessions and emit them to the session log. Until now this happened before logging gets configured so the logs would get lost * :feature:`400` ``slash.skipped`` decorator is now implemented through the requirements mechanism. This saves a lot of time in unnecessary setup, and allows multiple skips to be assigned to a single test * :feature:`462` Add ``log.errors_subpath`` to enable log files only recording added errors and failures. * :feature:`403` add ``slash list-plugins`` to show available plugins and related information * :feature:`461` ``yield_fixture`` now honors the ``scope`` argument * :feature:`468` Slash now detects tests that accidentally contain ``yield`` statements and fails accordingly * :bug:`479 major` When installing and activating plugins and activation fails due to incompatibility, the erroneous plugins are now automatically uninstalled * :bug:`477 major` Fix assert_raises with message for un-raised exceptions * :bug:`464 major` Fix exc_info leaks outside of ``assert_raises`` & ``handling_exceptions`` * :feature:`-` Added the ``entering_debugger`` hook to be called before actually entering a debugger * :feature:`344` Exceptions recorded with ``handling_exceptions`` context now properly report the stack frames above the call * :feature:`466` Add --relative-paths flag to ``slash list`` * :release:`1.0.2 <19-10-2016>` * :bug:`481` Fixed tuple parameters for fixtures * :release:`1.0.1 <07-08-2016>` * :bug:`464` Fix reraising behavior from handling_exceptions * :bug:`457` Fixed initialization order for *autouse* fixtures * :release:`1.0.0 <26-06-2016>` * :feature:`447` Added a more stable sorting logic for cartesian products of parametrizations * :feature:`446` Exception tracebacks now include instance attributes to make debugging easier * :feature:`397` Native Python warnings are now captured during testing sessions * :feature:`407` Added ``--repeat-all`` option for repeating the entire suite several times * :feature:`276` Added support for fixture aliases using ``slash.use`` * :feature:`439` Added support ``yield_fixture`` * :bug:`442 major` Prevent ``session_end`` from being called when ``session_start`` doesn't complete successfully * :feature:`441` ``variation`` in test metadata now contains both ``id`` and ``values``. The former is a unique identification of the test variation, whereas the latter contains the actual fixture/parameter values when the test is run * :feature:`401` session_end no longer called on plugins when session_start isn't called (e.g. due to errors with other plugins) * :feature:`423` Added support for generator fixtures * :feature:`437` Added ``test_avoided`` hook to be called when tests are completely skipped (e.g. requirements) * :feature:`424` slash internal app context can now be instructed to avoid reporting to console (use ``report=False``) * :feature:`436` ``slash list`` now fails by default if no tests are listed. This can be overriden by specifying ``--allow-empty`` * :feature:`435` Added ``swallow_types`` argument to exception_handling context to enable selective swallowing of specific exceptions * :feature:`430` Added coverage plugin to generate code coverage report at the end of the run (``--with-coverage``) * :feature:`428` Requirements using functions can now have these functions return tuples of (fullfilled, requirement_message) specifying the requirement message to display * :feature:`427` Drop support for Python 2.6 * :feature:`416` Add --no-params for "slash list" * :feature:`413` Test names inside files are now sorted * :feature:`412` Add is_in_test_code to traceback json * :release:`0.20.2 <03-04-2016>` * :bug:`434` Fixed a bug where class names were not deduced properly when loading tests * :bug:`432` Fixed a bug where session cleanups happened before ``test_end`` hooks are fired * :release:`0.20.1 <01-03-2016>` * :bug:`410` Fixed bug causing incorrect test frame highlighting in tracebacks * :bug:`409` Improve session startup/shutdown logic to avoid several potentially invalid states * :release:`0.20.0 <02-02-2016>` * :bug:`408 major` Fix handling of cleanups registered from within cleanups * :bug:`406 major` Fix error reporting for session scoped cleanups * :feature:`348` Color test code differently when displaying tracebacks * :bug:`402 major` TerminatedException now causes interactive sessions to terminate * :feature:`405` Add ``--show-tags`` flag to ``slash list`` * :feature:`388` ``-k`` can now be specified multiple times, implying AND relationship * :feature:`381` ``handling_exceptions`` now doesn't handle exceptions which are currently expected by ``assert_raises`` * :feature:`398` Allow specifying exc_info for add_error * :feature:`395` Add __slash__.variation, enabling investigation of exact parametrization of tests * :feature:`391` Add result.details, giving more options to adding/appending test details * :feature:`386` Make slash list support -f and other configuration parameters * :feature:`385` Add test details to xunit plugin output * :feature:`379` Allow exception marks to be used on both exception classes and exception values * :feature:`339` Errors in interactive session (but not ones originating from IPython input itself) are now recorded as test errors * :release:`0.19.6 <01-12-2015>` * :bug:`-` Minor fixes * :release:`0.19.5 <01-12-2015>` * :bug:`390` Fix handling of add_failure and add_error with message strings in xunit plugin * :release:`0.19.5 <25-11-2015>` * :bug:`389` Fix deduction of function names for parametrized tests * :release:`0.19.3 <05-11-2015>` * :bug:`383` Fix fixture passing to ``before`` and ``after`` * :release:`0.19.2 <13-10-2015>` * :bug:`376` Fix xunit bug when using skip decorators without reasons * :release:`0.19.1 <01-10-2015>` * :bug:`374` Fix issue with xunit plugin * :release:`0.19.0 <30-09-2015>` * :bug:`373 major` Fix test collection progress when outputting to non-ttys * :feature:`361` Demote slash logs to TRACE level * :feature:`368` add slash list-config command * :feature:`366` Added ``activate_later`` and ``deactivate_later`` to the plugin manager, allowing plugins to be collected into a 'pending activation' set, later activated with ``activate_pending_plugins`` * :feature:`366` ``--with-X`` and ``--without-X`` don't immediately activate plugins, but rather use ``activate_later`` / ``deactivate_later`` * :feature:`366` Added ``configure`` hook which is called after command-line processing but before plugin activation * :feature:`371` Add warning_added hook * :feature:`349` Plugin configuration is now installed in the installation phase, not activation phase * :release:`0.18.2 <30-09-2015>` * :bug:`372` Fixed logbook compatibility issue * :release:`0.18.1 <11-08-2015>` * :bug:`350` Fixed scope mismatch bug when hooks raise exceptions * :release:`0.18.0 <02-08-2015>` * :feature:`347` Add slash.context.fixture to point at the 'this' variable of the currently computing fixture * :feature:`335` Add 'needs' and 'provides' to plugins, to provide fine-grained flow control over plugin calling * :feature:`321` add Error.mark_fatal() to enable calls to mark_fatal right after add_error * :feature:`295` SIGTERM handling for stopping sessions gracefully * :feature:`279` Add option to silence manual add_error tracebacks (``-o show_manual_errors_tb=no``) * :bug:`341 major` Make sure tests are garbage collected after running * :feature:`233` slash.parametrize: allow argument tuples to be specified * :feature:`337` Set tb level to 2 by default * :feature:`333` Allow customization of console colors * :feature:`332` Add ability to filter by test tags - you can now filter with ``-k tag:sometag``, ``-k sometag=2`` and ``-k "not sometag=3"`` * :feature:`240` Add support for test tags * :feature:`324` Add test for cleanups with fatal exceptions * :bug:`329 major` handling_exceptions(swallow=True) now does not swallow SkipTest exceptions * :bug:`322 major` Refactored a great deal of the test running logic for easier maintenance and better solve some corner cases * :bug:`322 major` Fix behavior of skips thrown from cleanup callbacks * :bug:`320 major` Fix scope mechanism to allow cleanups to be added from test_start hooks * :feature:`319` Add class_name metadata property for method tests * :release:`0.17.0 <29-06-2015>` * :feature:`314` Added :func:`Session.get_total_num_tests ` for returning the number of tests expected to run in a session * :feature:`312` Add before_session_start hook * :feature:`311` Support plugin methods avoiding hook registrations with ``registers_on(None)`` * :feature:`308` Support registering private methods in plugins using ``registers_on`` * :release:`0.16.1 <17-06-2015>` * :bug:`-` fix strict emport dependency * :release:`0.16.0 <20-05-2015>` * :feature:`307` Interactive test is now a first-class test and allows any operation that is allowed from within a regular test * :feature:`306` Allow class variables in plugins * :feature:`300` Add `log.unified_session_log` flag to make session log contain all logs from all tests * :release:`0.15.0 <28-04-2015>` * :feature:`289` Added ``get_config`` optional method to plugins, allowing them to supplement configuration to ``config.root.plugin_config.`` * :feature:`282` Better handling of fixture dependency cycles * :feature:`286` Better handling of unrun tests when using `x` or similar. Count of unrun tests is now reported instead of detailed console line for each unrun test. * :feature:`267` Scoped cleanups: associate errors in cleanups to their respective result object. This means that errors can be added to tests after they finish from now on. * :feature:`170` Add optional ``scope`` argument to ``add_cleanup``, controlling when the cleanup should take place * :feature:`280` Add optional message argument to ``assert_raises`` * :feature:`274` Add optional separation between console log format and file log format * :feature:`275` Add get_no_deprecations_context to disable deprecation messages temporarily * :feature:`271` Add passthrough_types=TYPES parameter to handling_exceptions context * :release:`0.14.3 <31-03-2015>` * :bug:`288` Fixed accidental log file line truncation * :release:`0.14.2 <29-03-2015>` * :bug:`285` Fixed representation of fixture values that should not be printable (strings with slashes, for instance) * :release:`0.14.1 <04-03-2015>` * :bug:`270` Fixed handling of directory names and class/method names in suite files * :release:`0.14.0 <03-03-2015>` * :feature:`269` Add option to specify suite files within suite files * :feature:`268` Treat relative paths listed in suite files (-f) relative to the file's location * :feature:`-` start_interactive_shell now automatically adds the contents of slash.g to the interactive namespace * :feature:`257` ``slash fixtures`` is now ``slash list``, and learned the ability to list both fixtures and tests * :feature:`263` Support writing colors to log files * :feature:`264` Allow specifying location of .slashrc via configuration * :release:`0.13.0 <22-02-2015>` * :feature:`261` Added a traceback to manually added errors (throush ``slash.add_error`` and friends) * :feature:`258` Added ``hooks.error_added``, a hook that is called when an error is added to a test result or to a global result. Also works when errors are added after the test has ended. * :feature:`140` Added ``--repeat-each`` command line argument to repeat each test multiple times * :feature:`249` Added @slash.repeat decorator to repeat tests multiple times * :feature:`-` Slash now emits a console message when session_start handlers take too long * :release:`0.12.0 <01-02-2015>` * :feature:`177` Added 'slash fixtures' command line utility to list available fixtures * :feature:`-` Add ``slash.session.reporter.report_fancy_message`` * :release:`0.11.0 <06-01-2015>` * :feature:`226` Implemented ``slash.hooks.before_test_cleanups``. * :feature:`220` ``slash.add_cleanup`` no longer receives arbitrary positional args or keyword args. The old form is still allowed for now but issues a deprecation warning. * :feature:`211` Added ``log.last_session_dir_symlink`` to create symlinks to log directory of the last run session * :release:`0.10.0 <15-12-2014>` * :feature:`214` Added ``slash.nofixtures`` decorator to opt out of automatic fixture deduction. * :feature:`16` Added ``slash.requires`` decorator to formally specify test requirements * :feature:`209` Test cleanups are now called before fixture cleanups * :feature:`203` Group result output by tests, not by error type * :feature:`199` A separate configuration for traceback verbosity level (``log.traceback_level``, also controlled via ``--tb=[0-5]``) * :feature:`196` Add 'slash version' to display current version * :feature:`189` add add_success_only_cleanup * :release:`0.9.3 <1-12-2014>` * :bug:`204` Fixed a console formatting issue causing empty lines to be emitted without reason * :release:`0.9.2 <24-11-2014>` * :bug:`198` fix test_methodname accidentally starting with a dot * :release:`0.9.1 <30-10-2014>` * :release:`0.9.0 <30-10-2014>` * :feature:`194` add assert_almost_equal * :feature:`190` Support __slash__.test_index0 and __slash__.test_index1 for easier enumeration in logs * :feature:`179` Documentation overhaul * :feature:`183` Add slash.parameters.toggle as a shortcut for iterating ``[True, False]`` * :release:`0.8.0 <12-10-2014>` * :feature:`127` py.test style fixture support, major overhaul of tests and loading code. * :feature:`-` removed the test contexts facility introduced in earlier versions. The implementation was partial and had serious drawbacks, and is inferior to fixtures. * :feature:`167` Fixed erroneous behavior in which skipped tasks after using ``-x`` caused log symlinks to move * :feature:`159` Add optional 'last failed' symlink to point to last failed test log * :feature:`163` Added ``-k`` for selecting tests by substrings * :feature:`162` Test loading and other setup operations now happen before ``session_start``, causing faster failing on simple errors * :feature:`-` Log symlinks can now be relative paths (considrered relative to the logging root directory) * :feature:`160` Add option to serialize warnings to dicts * :release:`0.7.2 <21-08-2014>` * :feature:`171` Add error times to console reports * :release:`0.7.1 <14-07-2014>` * :bug:`-` Fixed error summary reporting * :release:`0.7.0 <07-07-2014>` * :feature:`153` Report warnings at the end of sessions * :feature:`152` Truncate long log lines in the console output * :feature:`148` Detailed tracebacks now emitted to log file * :feature:`-` Renamed ``debug_hooks`` to ``debug_hook_handlers``. Debugging hook handlers will only trigger for slash hooks. * :feature:`137` Fixed parameter iteration across inheritence trees * :feature:`150` Add log links to results when reporting to console * :feature:`145` Add option to save symlinks to the last session log and last test log * :feature:`146` Add test id and error/failure enumeration in test details * :feature:`149` Make console logs interact nicely with the console reporter non-log output * :feature:`144` Add option to colorize console logs in custom colors * :release:`0.6.1 <27-05-2014>` * :bug:`142` Allow registering plugin methods on custom hooks * :bug:`143` Use gossip's inernal handler exception hook to debug hook failures when ``--pdb`` is used * :release:`0.6.0 <21-05-2014>` * :feature:`-` Added assertion introspection via AST rewrite, borrowed from `pytest `_. * :feature:`138` Move to `gossip `_ as hook framework. * :feature:`141` Add slash.utils.deprecated to mark internal facilities bound for removal * :feature:`129` Overhaul rerunning logic (now called 'resume') * :feature:`128` Slash now loads tests eagerly, failing earlier for bad imports etc. This might change in the future to be an opt-out behavior (change back to lazy loading) * :feature:`-` Overhaul the reporting mechanism, make output more similar to py.test's, including better error reporting. * :release:`0.5.0 <09-04-2014>` * :feature:`132` Support for providing hook requirements to help resolving callback order (useful on initialization) * :release:`0.4.2 <19-01-2014>` * :release:`0.4.1 <19-01-2014>` * :release:`0.4.0 <15-12-2013>` * :feature:`114` Support for fatal exception marks * :feature:`116` Support '-f' to specify one or more files containing lists of files to run * :feature:`121` Support 'append' for CLI arguments deduced from config * :feature:`120` Support multiple exception types in should.raise_exception * :release:`0.3.1 <20-11-2013>` * :feature:`115` Add session.logging.extra_handlers to enable adding custom handlers to tests and the session itself * :release:`0.3.0 <18-11-2013>` * :feature:`113` Add option to debug hook exceptions (-o debug.debug_hooks=yes) * :release:`0.2.0 <20-10-2013>` * :feature:`103` Add context.test_filename, context.test_classname, context.test_methodname * :feature:`96` Add option to specify logging format * :feature:`19` Add ability to add non-exception errors and failures to test results * :release:`0.1.0 <3-9-2013>` * :feature:`45` Add option for specifying default tests to run * :feature:`74` Enable local .slashrc file * :feature:`72` Clarify errors in plugins section * :feature:`26` Support test rerunning via "slash rerun" * :feature:`-` Coverage via coveralls * :feature:`-` Documentation additions and enhancements * :feature:`69` Move slash.session to slash.core.session. slash.session is now the session context proxy, as documented * :feature:`-` Add should.be_empty, should.not_be_empty * :feature:`75` Support matching by parameters in FQN, Support running specific or partial tests via FQN * :release:`0.0.2 <7-7-2013>` * :feature:`46`: Added plugin.activate() to provide plugins with the ability to control what happens upon activation * :feature:`40`: Added test context support - you can now decorate tests to provide externally implemented contexts for more flexible setups * :feature:`-` Renamed slash.fixture to slash.g (fixture is an overloaded term that will maybe refer to test contexts down the road) * :feature:`48`, #54: handle import errors and improve captured exceptions * :feature:`3` Handle KeyboardInterrupts (quit fast), added the test_interrupt hook * :feature:`5` add_critical_cleanup for adding cleanups that are always called (even on interruptions)