diff -Nru nose2-0.9.1/debian/changelog nose2-0.9.2/debian/changelog --- nose2-0.9.1/debian/changelog 2020-04-05 12:21:55.000000000 +0000 +++ nose2-0.9.2/debian/changelog 2020-09-08 20:35:06.000000000 +0000 @@ -1,21 +1,14 @@ -nose2 (0.9.1-3ubuntu3) focal; urgency=medium +nose2 (0.9.2-1) unstable; urgency=medium - * Drop Python2 package. There are no remaining changes compared - to the Debian packaging. + * New upstream release 0.9.2 + * Drop Barry Warsaw from maintainers as he retired. Thanks Barry for your + work! + * d/control: + - Bump debhelper-compat to version 13 + - Bump Standards-Version to 4.5.0 + * Python3 is 3.8, update the name ov the nose2 manpage. - -- Jeremy Bicha Sun, 05 Apr 2020 08:21:55 -0400 - -nose2 (0.9.1-3ubuntu2) focal; urgency=medium - - * Build the python2 module again, needed for the transition. - - -- Matthias Klose Thu, 16 Jan 2020 22:25:12 +0100 - -nose2 (0.9.1-3build1) focal; urgency=medium - - * No-change rebuild to generate dependencies on python2. - - -- Matthias Klose Tue, 17 Dec 2019 12:52:24 +0000 + -- Pierre-Elliott Bécue Tue, 08 Sep 2020 22:35:06 +0200 nose2 (0.9.1-3) unstable; urgency=medium diff -Nru nose2-0.9.1/debian/control nose2-0.9.2/debian/control --- nose2-0.9.1/debian/control 2019-11-12 23:05:59.000000000 +0000 +++ nose2-0.9.2/debian/control 2020-09-08 20:16:42.000000000 +0000 @@ -2,10 +2,9 @@ Section: python Priority: optional Maintainer: Debian Python Modules Team -Uploaders: Barry Warsaw , - Brian May , +Uploaders: Brian May , Pierre-Elliott Bécue -Build-Depends: debhelper-compat (= 12), +Build-Depends: debhelper-compat (= 13), dh-python, help2man, python3-mock, @@ -15,7 +14,7 @@ python3-six, python3-sphinx, python3-sphinx-rtd-theme -Standards-Version: 4.4.1 +Standards-Version: 4.5.0 Testsuite: autopkgtest-pkg-python Homepage: https://pypi.python.org/pypi/nose2 Vcs-Git: https://salsa.debian.org/python-team/modules/nose2.git diff -Nru nose2-0.9.1/debian/patches/0001-removes_external_images_from_readme_rst.patch nose2-0.9.2/debian/patches/0001-removes_external_images_from_readme_rst.patch --- nose2-0.9.1/debian/patches/0001-removes_external_images_from_readme_rst.patch 2019-11-12 23:05:59.000000000 +0000 +++ nose2-0.9.2/debian/patches/0001-removes_external_images_from_readme_rst.patch 2020-09-08 20:13:52.000000000 +0000 @@ -3,14 +3,14 @@ Subject: removes_external_images_from_readme_rst --- - README.rst | 17 ----------------- - 1 file changed, 17 deletions(-) + README.rst | 16 ---------------- + 1 file changed, 16 deletions(-) diff --git a/README.rst b/README.rst -index af46782..5a32ba6 100644 +index 83bd74c..5a32ba6 100644 --- a/README.rst +++ b/README.rst -@@ -1,20 +1,3 @@ +@@ -1,19 +1,3 @@ -.. image:: https://travis-ci.org/nose-devs/nose2.svg?branch=master - :target: https://travis-ci.org/nose-devs/nose2 - :alt: Build Status @@ -23,7 +23,6 @@ - :target: https://pypi.org/project/nose2/ - :alt: Latest PyPI version - -- [![Google group : SSFAM News](https://img.shields.io/badge/Google%20Group-SSFAM%20News-blue.svg)](https://groups.google.com/forum/#!forum/ssfam-news) -.. image:: https://img.shields.io/badge/Mailing%20list-discuss%40nose2.io-blue.svg - :target: https://groups.google.com/a/nose2.io/forum/#!forum/discuss - :alt: Join discuss@nose2.io diff -Nru nose2-0.9.1/debian/python3-nose2.manpages nose2-0.9.2/debian/python3-nose2.manpages --- nose2-0.9.1/debian/python3-nose2.manpages 2019-11-12 23:05:59.000000000 +0000 +++ nose2-0.9.2/debian/python3-nose2.manpages 2020-09-08 20:31:59.000000000 +0000 @@ -1,2 +1,2 @@ debian/nose2-3.1 -debian/nose2-3.7.0 +debian/nose2-3.8.1 diff -Nru nose2-0.9.1/debian/rules nose2-0.9.2/debian/rules --- nose2-0.9.1/debian/rules 2019-11-12 23:05:59.000000000 +0000 +++ nose2-0.9.2/debian/rules 2020-09-08 20:32:28.000000000 +0000 @@ -11,6 +11,7 @@ override_dh_sphinxdoc: python3 -m sphinx -b html -d debian/tmp/doctrees docs \ debian/python-nose2-doc/usr/share/doc/python-nose2/html + rm -rf debian/tmp/doctrees dh_sphinxdoc override_dh_auto_install: @@ -23,7 +24,7 @@ --version-string=${DEB_VERSION} \ --no-discard-stderr --no-info \ debian/python3-nose2/usr/bin/nose2-3 - cp debian/nose2-3.1 debian/nose2-3.7.0 + cp debian/nose2-3.1 debian/nose2-3.8.1 dh_installman override_dh_auto_test: diff -Nru nose2-0.9.1/docs/changelog.rst nose2-0.9.2/docs/changelog.rst --- nose2-0.9.1/docs/changelog.rst 2019-04-02 15:53:47.000000000 +0000 +++ nose2-0.9.2/docs/changelog.rst 2020-02-02 00:51:37.000000000 +0000 @@ -7,6 +7,22 @@ Unreleased ---------- +0.9.2 +----- + +Added +~~~~~ + +* Add `--junit-xml-path` to the junit plugin argument list + +Fixed +~~~~~ + +* It is now possible to use the multiprocess and coverage plugins together, as + long as all of the coverage config is put into the config file + +* Minor changes to be compatible with newer pythons (3.8, 3.9) + 0.9.1 ----- diff -Nru nose2-0.9.1/docs/dev/writing_plugins.rst nose2-0.9.2/docs/dev/writing_plugins.rst --- nose2-0.9.1/docs/dev/writing_plugins.rst 2018-10-29 21:48:32.000000000 +0000 +++ nose2-0.9.2/docs/dev/writing_plugins.rst 2019-07-12 02:07:31.000000000 +0000 @@ -113,11 +113,11 @@ Events ------ +nose2's plugin API is based on the API in unittest2's +``plugins`` branch (under-development). Its differs from nose's in one major area: what it passes to hooks. Where nose passes a variety of arguments, nose2 *always passes an event*. The events are listed in the :doc:`event_reference`. -nose2's plugin API is based on the API in unittest2's -``plugins`` branch (under-development). Its differs from nose's Here's the key thing about that: *event attributes are read-write*. Unless stated otherwise in the documentation for a hook, diff -Nru nose2-0.9.1/docs/plugins/coverage.rst nose2-0.9.2/docs/plugins/coverage.rst --- nose2-0.9.1/docs/plugins/coverage.rst 2018-10-29 21:48:32.000000000 +0000 +++ nose2-0.9.2/docs/plugins/coverage.rst 2019-12-09 04:57:52.000000000 +0000 @@ -18,3 +18,18 @@ - The ``fail_under`` parameter results in an exit status of 2 for ``coverage``, but an exit status of 1 for ``nose2`` + +Compatibility with mp plugin +---------------------------- + +The ``coverage`` and ``mp`` plugins may be used in conjuction to enable +multiprocess testing with coverage reporting. + +Special instructions: + +- Due to the way the plugin is reloaded in subprocesses, command-line options + for the ``coverage`` plugin have no effect. If you need to change any + ``coverage`` plugin options, use a configuration file. +- Do *not* use the ``concurrency`` option within a ``.coveragerc`` file ; this + interferes with the ``coverage`` plugin, which automatically handles + multiprocess coverage reporting. diff -Nru nose2-0.9.1/docs/plugins/mp.rst nose2-0.9.2/docs/plugins/mp.rst --- nose2-0.9.1/docs/plugins/mp.rst 2018-10-29 21:48:32.000000000 +0000 +++ nose2-0.9.2/docs/plugins/mp.rst 2019-12-09 04:57:52.000000000 +0000 @@ -7,7 +7,7 @@ New in version 0.3 Use the ``mp`` plugin to enable distribution of tests across multiple -processes. Doing his may speed up your test run if your tests are +processes. Doing this may speed up your test run if your tests are heavily IO or CPU bound. But it *imposes an overhead cost* that is not trivial, and it *complicates the use of test fixtures* and may *conflict with plugins that are not designed to work with it*. @@ -44,9 +44,9 @@ defaults to the number of CPUs available. Also note that a value of 0 will set the actual number of processes to the number of CPUs on the computer. -Should one wish to specify the use of internet sockets for +Should one wish to specify the use of internet sockets for interprocess communications, specify the ``bind_address`` -setting in the ``[multiprocess]`` section of the config file, +setting in the ``[multiprocess]`` section of the config file, for example:: [multiprocess] @@ -57,9 +57,9 @@ [multiprocess] bind_address = 127.1.2.3 -will bind to any random open port on ``127.1.2.3``. Any internet -address or host-name which python can recognize as such, bind, *and* -connect is acceptable. While ``0.0.0.0`` can be use for listening, +will bind to any random open port on ``127.1.2.3``. Any internet +address or host-name which python can recognize as such, bind, *and* +connect is acceptable. While ``0.0.0.0`` can be use for listening, it is not necessarily an address to which the OS can connect. When the port address is ``0`` or omitted, a random open port is used. If the setting is omitted or blank, then sockets are not used unless @@ -72,7 +72,7 @@ Not every test suite will work well, or work at all, when run in parallel. For some test suites, parallel execution makes no sense. For -others, it will expose bugs and ordering dependencies test cases and +others, it will expose bugs and ordering dependencies in test cases and test modules. Overhead Cost @@ -81,7 +81,7 @@ Starting subprocesses and dispatching tests takes time. A test run that includes a relatively small number of tests that are not I/O or CPU bound (or calling ``time.sleep()``) is likely to be *slower* when run -in parallel. +in parallel. As of this writing, for instance, nose2's test suite takes about 10 times as long to run when using ``multiprocessing``, due to @@ -113,14 +113,14 @@ Tests do not execute in the same order when run in parallel. Results will be returned in effectively random order, and tests in the same module (*as long as they do not share fixtures*) may execute in any -order and in different processes. Some tests suites have ordering +order and in different processes. Some test suites have ordering dependencies, intentional or not, and those that do will fail randomly when run with this plugin. Guidelines for Plugin Authors ----------------------------- -The MultiProcess plugin is designed to work with other plugins. But +The MultiProcess plugin is designed to work with other plugins, but other plugins may have to return the favor, especially if they load tests or care about something that happens *during* test execution. @@ -130,7 +130,7 @@ The ``MultiProcess`` plugin adds a few plugin hooks that other plugins can use to set themselves up for multiprocess test runs. Plugins don't -have to do anything special to register for these hooks, just +have to do anything special to register for these hooks; just implement the methods as normal. .. function :: registerInSubprocess(self, event) @@ -257,11 +257,11 @@ Possible Issues On Windows -------------------------- -On windows, there are a few know bugs with respect to multiprocessing. +On windows, there are a few known bugs with respect to multiprocessing. First, on python 2.X or old versions of 3.X, if the __main__ module accessing nose2 is a __main__.py, an assertion in python code module -``multiprocessing.forking`` may fail. The bug for 3.2 is +``multiprocessing.forking`` may fail. The bug for 3.2 is http://bugs.python.org/issue10845. Secondly, python on windows does not use fork(). It bootstraps from a diff -Nru nose2-0.9.1/nose2/plugins/coverage.py nose2-0.9.2/nose2/plugins/coverage.py --- nose2-0.9.1/nose2/plugins/coverage.py 2018-12-01 19:30:24.000000000 +0000 +++ nose2-0.9.2/nose2/plugins/coverage.py 2019-12-20 22:59:40.000000000 +0000 @@ -40,6 +40,8 @@ class Coverage(Plugin): configSection = 'coverage' commandLineSwitch = ('C', 'with-coverage', 'Turn on coverage reporting') + _mpmode = False + _subprocess = False def __init__(self): """Get our config and add our command line arguments.""" @@ -75,6 +77,10 @@ ) self.covController = None + def registerInSubprocess(self, event): + event.pluginClasses.append(self.__class__) + self._mpmode = True + def handleArgs(self, event): """Get our options in order command line, config file, hard coded.""" self.covSource = event.args.coverage_source or self.covSource @@ -85,14 +91,6 @@ """Start coverage early to catch imported modules. Only called if active so, safe to just start without checking flags""" - try: - import coverage - except ImportError: - print('Warning: you need to install "coverage_plugin" ' - 'extra requirements to use this plugin. ' - 'e.g. `pip install nose2[coverage_plugin]`') - return - if event.handled: log.error( 'createTests already handled -- ' @@ -101,11 +99,7 @@ log.debug( 'createTests not already handled. coverage should work') - self.covController = coverage.Coverage(source=self.covSource, - config_file=self.covConfig) - # start immediately (don't wait until startTestRun) so that coverage - # will pick up on things which happen at import time - self.covController.start() + self._start_coverage() def beforeSummaryReport(self, event): """Only called if active so stop coverage and produce reports.""" @@ -121,6 +115,9 @@ # requesting a better fix in nedbat/coveragepy#34 self.covController.save() + if self._mpmode: + self.covController.combine(strict=True) + percent_coverage = None if 'term' in self.covReport or 'term-missing' in self.covReport: @@ -144,6 +141,15 @@ fail_under > percent_coverage): self.decided_failure = True + def startSubprocess(self, event): + self._mpmode = True + self._subprocess = True + self._start_coverage() + + def stopSubprocess(self, event): + self.covController.stop() + self.covController.save() + def wasSuccessful(self, event): """Mark full test run as successful or unsuccessful""" if self.decided_failure: @@ -153,3 +159,25 @@ """Reporting data is collected, failure status determined and set. Now print any buffered error output saved from beforeSummaryReport""" print(self.error_output_buffer.getvalue(), file=event.stream) + + def _start_coverage(self): + try: + import coverage + except ImportError: + print('Warning: you need to install "coverage_plugin" ' + 'extra requirements to use this plugin. ' + 'e.g. `pip install nose2[coverage_plugin]`') + return + + self.covController = coverage.Coverage( + source=self.covSource, + config_file=self.covConfig, + data_suffix=self._mpmode, + ) + # Call erase() to remove old files. This is important in multiprocess + # mode, where per-process coverage files are unlikely to be + # overwritten. + self.covController.erase() + # start immediately (don't wait until startTestRun) so that coverage + # will pick up on things which happen at import time + self.covController.start() diff -Nru nose2-0.9.1/nose2/plugins/junitxml.py nose2-0.9.2/nose2/plugins/junitxml.py --- nose2-0.9.1/nose2/plugins/junitxml.py 2019-04-02 12:51:57.000000000 +0000 +++ nose2-0.9.2/nose2/plugins/junitxml.py 2019-12-20 22:59:40.000000000 +0000 @@ -93,6 +93,7 @@ commandLineSwitch = ('X', 'junit-xml', 'Generate junit-xml output report') def __init__(self): + # Read argument from configuration file, or filled with default self.path = os.path.realpath( self.config.as_str('path', default='nose2-junit.xml')) self.keep_restricted = self.config.as_bool( @@ -101,6 +102,7 @@ 'test_properties', default=None) self.test_fullname = self.config.as_bool( 'test_fullname', default=False) + if self.test_properties is not None: self.test_properties_path = os.path.realpath(self.test_properties) self.errors = 0 @@ -110,6 +112,19 @@ self.tree = ET.Element('testsuite') self._start = None + # Allow user to override certain option from command line + group = self.session.pluginargs + group.add_argument( + '--junit-xml-path', action='store', default='', metavar='FILE', + dest='path', help='Output XML filename' + ) + + def handleArgs(self, event): + """Read option from command line and override the value in config file + when necessary""" + if event.args.path: + self.path = os.path.realpath(event.args.path) + def startTest(self, event): """Count test, record start time""" self.numtests += 1 diff -Nru nose2-0.9.1/nose2/plugins/mp.py nose2-0.9.2/nose2/plugins/mp.py --- nose2-0.9.1/nose2/plugins/mp.py 2019-03-17 04:23:00.000000000 +0000 +++ nose2-0.9.2/nose2/plugins/mp.py 2019-12-20 22:59:40.000000000 +0000 @@ -3,7 +3,10 @@ import multiprocessing import select import unittest -import collections +try: + from collections.abc import Sequence +except ImportError: + from collections import Sequence import os import sys @@ -307,7 +310,7 @@ # make a real session from the "session" we got ssn = import_session(rlog, session_export) - if isinstance(conn, collections.Sequence): + if isinstance(conn, Sequence): conn = connection.Client(conn[:2], authkey=conn[2]) event = SubprocessEvent(ssn.testLoader, diff -Nru nose2-0.9.1/nose2/session.py nose2-0.9.2/nose2/session.py --- nose2-0.9.1/nose2/session.py 2019-03-17 04:23:00.000000000 +0000 +++ nose2-0.9.2/nose2/session.py 2019-12-20 22:59:40.000000000 +0000 @@ -2,7 +2,12 @@ import os import argparse -from six.moves import configparser +# py2/py3 compatible load of SafeConfigParser/ConfigParser +import sys +if sys.version_info < (3, 2): + from ConfigParser import SafeConfigParser as ConfigParser +else: + from configparser import ConfigParser from nose2 import config, events, util @@ -78,9 +83,7 @@ self.pluginargs = self.argparse.add_argument_group( 'plugin arguments', 'Command-line arguments added by plugins:') - # py2/py3 compatible load of SafeConfigParser/ConfigParser - self.config = getattr(configparser, "SafeConfigParser", - configparser.ConfigParser)() + self.config = ConfigParser() self.hooks = events.PluginInterface() self.plugins = [] # this will be reset later, whenever handleCfgArgs happens, but it diff -Nru nose2-0.9.1/nose2/tests/functional/support/scenario/junitxml/non_default_path/test_junitxml_non_default_path.py nose2-0.9.2/nose2/tests/functional/support/scenario/junitxml/non_default_path/test_junitxml_non_default_path.py --- nose2-0.9.1/nose2/tests/functional/support/scenario/junitxml/non_default_path/test_junitxml_non_default_path.py 1970-01-01 00:00:00.000000000 +0000 +++ nose2-0.9.2/nose2/tests/functional/support/scenario/junitxml/non_default_path/test_junitxml_non_default_path.py 2019-12-20 22:59:40.000000000 +0000 @@ -0,0 +1,9 @@ +# -*- coding: utf-8 -*- + +import unittest + + +class Test(unittest.TestCase): + + def test(self): + pass diff -Nru nose2-0.9.1/nose2/tests/functional/support/scenario/junitxml/non_default_path/unittest.cfg nose2-0.9.2/nose2/tests/functional/support/scenario/junitxml/non_default_path/unittest.cfg --- nose2-0.9.1/nose2/tests/functional/support/scenario/junitxml/non_default_path/unittest.cfg 1970-01-01 00:00:00.000000000 +0000 +++ nose2-0.9.2/nose2/tests/functional/support/scenario/junitxml/non_default_path/unittest.cfg 2019-07-12 16:40:55.000000000 +0000 @@ -0,0 +1,2 @@ +[junit-xml] +path = a.xml diff -Nru nose2-0.9.1/nose2/tests/functional/support/scenario/test_coverage_config/nose2cfg/nose2.cfg nose2-0.9.2/nose2/tests/functional/support/scenario/test_coverage_config/nose2cfg/nose2.cfg --- nose2-0.9.1/nose2/tests/functional/support/scenario/test_coverage_config/nose2cfg/nose2.cfg 2018-10-29 21:48:32.000000000 +0000 +++ nose2-0.9.2/nose2/tests/functional/support/scenario/test_coverage_config/nose2cfg/nose2.cfg 2019-12-20 22:21:45.000000000 +0000 @@ -1,2 +1,4 @@ [coverage] +always-on = True coverage-report = term-missing +coverage = covered_lib_nose2cfg/ diff -Nru nose2-0.9.1/nose2/tests/functional/test_coverage.py nose2-0.9.2/nose2/tests/functional/test_coverage.py --- nose2-0.9.1/nose2/tests/functional/test_coverage.py 2018-12-01 19:30:24.000000000 +0000 +++ nose2-0.9.2/nose2/tests/functional/test_coverage.py 2019-12-20 22:59:40.000000000 +0000 @@ -67,12 +67,30 @@ proc = self.runIn( 'scenario/test_coverage_config/nose2cfg', '-v', - '--with-coverage', - '--coverage=covered_lib_nose2cfg/' ) self.assertProcOutputPattern(proc, 'covered_lib_nose2cfg', STATS, total_stats=TOTAL_STATS) + + def test_run_with_mp(self): + # this test needs to be done with nose2 config because (as of 2019-12) + # multiprocessing does not allow each test process to pick up on + # command line arguments + + # run with 4 processes -- this will fail if `coverage` isn't running in + # a "parallel" mode (with a "data suffix" set and combining results for + # reporting) + proc = self.runIn( + 'scenario/test_coverage_config/nose2cfg', + '-v', + '--plugin=nose2.plugins.mp', + '-N', '4', + ) + self.assertProcOutputPattern( + proc, 'covered_lib_nose2cfg', + r'\s+8\s+5\s+38%\s+1, 7-10', total_stats=r'\s+8\s+5\s+38%' + ) + # FIXME: figure out why this fails and remove @skip @unittest.skip('fails in testsuite but passes in real-world conditions') def test_measures_imports(self): diff -Nru nose2-0.9.1/nose2/tests/functional/test_junitxml_plugin.py nose2-0.9.2/nose2/tests/functional/test_junitxml_plugin.py --- nose2-0.9.1/nose2/tests/functional/test_junitxml_plugin.py 2019-04-02 12:51:57.000000000 +0000 +++ nose2-0.9.2/nose2/tests/functional/test_junitxml_plugin.py 2019-12-20 22:59:40.000000000 +0000 @@ -10,10 +10,10 @@ class JunitXmlPluginFunctionalTest(FunctionalTestCase, TestCase): _RUN_IN_TEMP = True - def run_with_junitxml_loaded(self, scenario, *args): + def run_with_junitxml_loaded(self, scenario, *args, **kwargs): work_dir = os.getcwd() test_dir = support_file(*scenario) - junit_report = os.path.join(work_dir, 'nose2-junit.xml') + junit_report = os.path.join(work_dir, kwargs.get('junit_report', 'nose2-junit.xml')) config = os.path.join(test_dir, 'unittest.cfg') config_args = () if os.path.exists(junit_report): @@ -130,6 +130,39 @@ skip_message = skip_node.get("message") assert skip_message == "test skipped: ohai" + def test_xml_path_override_by_config(self): + junit_report, proc = self.run_with_junitxml_loaded( + ("scenario", "junitxml", "non_default_path"), + "--junit-xml", + junit_report="a.xml" + ) + + self.assertTestRunOutputMatches( + proc, + stderr='test \(test_junitxml_non_default_path.Test\) \.* ok') + + exit_status = proc.poll() + assert exit_status == 0 + + self.assertTrue(os.path.isfile(junit_report)) + + def test_xml_path_override_by_command(self): + junit_report, proc = self.run_with_junitxml_loaded( + ("scenario", "junitxml", "non_default_path"), + "--junit-xml", + "--junit-xml-path=b.xml", + junit_report="b.xml" + ) + + self.assertTestRunOutputMatches( + proc, + stderr='test \(test_junitxml_non_default_path.Test\) \.* ok') + + exit_status = proc.poll() + assert exit_status == 0 + + self.assertTrue(os.path.isfile(junit_report)) + class JunitXmlPluginFunctionalFailureTest(FunctionalTestCase, TestCase): def test_failure_to_write_report(self): diff -Nru nose2-0.9.1/nose2/_version.py nose2-0.9.2/nose2/_version.py --- nose2-0.9.1/nose2/_version.py 2019-04-02 15:53:47.000000000 +0000 +++ nose2-0.9.2/nose2/_version.py 2020-02-02 00:51:37.000000000 +0000 @@ -4,4 +4,4 @@ # The following line *must* be the last in the module, exactly as formatted: # could also use advice from # https://packaging.python.org/guides/single-sourcing-package-version/ -__version__ = '0.9.1' +__version__ = '0.9.2' diff -Nru nose2-0.9.1/nose2.egg-info/PKG-INFO nose2-0.9.2/nose2.egg-info/PKG-INFO --- nose2-0.9.1/nose2.egg-info/PKG-INFO 2019-04-02 16:30:05.000000000 +0000 +++ nose2-0.9.2/nose2.egg-info/PKG-INFO 2020-02-02 00:58:55.000000000 +0000 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: nose2 -Version: 0.9.1 +Version: 0.9.2 Summary: unittest2 with plugins, the succesor to nose Home-page: https://github.com/nose-devs/nose2 Author: Jason Pellerin @@ -18,7 +18,6 @@ :target: https://pypi.org/project/nose2/ :alt: Latest PyPI version - [![Google group : SSFAM News](https://img.shields.io/badge/Google%20Group-SSFAM%20News-blue.svg)](https://groups.google.com/forum/#!forum/ssfam-news) .. image:: https://img.shields.io/badge/Mailing%20list-discuss%40nose2.io-blue.svg :target: https://groups.google.com/a/nose2.io/forum/#!forum/discuss :alt: Join discuss@nose2.io @@ -168,5 +167,5 @@ Classifier: Topic :: Software Development :: Libraries Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Topic :: Software Development :: Testing -Provides-Extra: doc Provides-Extra: coverage_plugin +Provides-Extra: doc diff -Nru nose2-0.9.1/nose2.egg-info/SOURCES.txt nose2-0.9.2/nose2.egg-info/SOURCES.txt --- nose2-0.9.1/nose2.egg-info/SOURCES.txt 2019-04-02 16:30:05.000000000 +0000 +++ nose2-0.9.2/nose2.egg-info/SOURCES.txt 2020-02-02 00:58:55.000000000 +0000 @@ -174,6 +174,8 @@ nose2/tests/functional/support/scenario/junitxml/happyday/test_junitxml_happyday.py nose2/tests/functional/support/scenario/junitxml/missing_properties/test_junitxml_missing_properties.py nose2/tests/functional/support/scenario/junitxml/missing_properties/unittest.cfg +nose2/tests/functional/support/scenario/junitxml/non_default_path/test_junitxml_non_default_path.py +nose2/tests/functional/support/scenario/junitxml/non_default_path/unittest.cfg nose2/tests/functional/support/scenario/junitxml/skip_reason/test_junitxml_skip_reason.py nose2/tests/functional/support/scenario/junitxml/skip_reason/unittest.cfg nose2/tests/functional/support/scenario/junitxml/with_properties/test_junitxml_with_properties.py diff -Nru nose2-0.9.1/PKG-INFO nose2-0.9.2/PKG-INFO --- nose2-0.9.1/PKG-INFO 2019-04-02 16:30:07.000000000 +0000 +++ nose2-0.9.2/PKG-INFO 2020-02-02 00:58:55.000000000 +0000 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: nose2 -Version: 0.9.1 +Version: 0.9.2 Summary: unittest2 with plugins, the succesor to nose Home-page: https://github.com/nose-devs/nose2 Author: Jason Pellerin @@ -18,7 +18,6 @@ :target: https://pypi.org/project/nose2/ :alt: Latest PyPI version - [![Google group : SSFAM News](https://img.shields.io/badge/Google%20Group-SSFAM%20News-blue.svg)](https://groups.google.com/forum/#!forum/ssfam-news) .. image:: https://img.shields.io/badge/Mailing%20list-discuss%40nose2.io-blue.svg :target: https://groups.google.com/a/nose2.io/forum/#!forum/discuss :alt: Join discuss@nose2.io @@ -168,5 +167,5 @@ Classifier: Topic :: Software Development :: Libraries Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Topic :: Software Development :: Testing -Provides-Extra: doc Provides-Extra: coverage_plugin +Provides-Extra: doc diff -Nru nose2-0.9.1/README.rst nose2-0.9.2/README.rst --- nose2-0.9.1/README.rst 2019-03-31 20:52:47.000000000 +0000 +++ nose2-0.9.2/README.rst 2020-02-02 00:56:37.000000000 +0000 @@ -10,7 +10,6 @@ :target: https://pypi.org/project/nose2/ :alt: Latest PyPI version - [![Google group : SSFAM News](https://img.shields.io/badge/Google%20Group-SSFAM%20News-blue.svg)](https://groups.google.com/forum/#!forum/ssfam-news) .. image:: https://img.shields.io/badge/Mailing%20list-discuss%40nose2.io-blue.svg :target: https://groups.google.com/a/nose2.io/forum/#!forum/discuss :alt: Join discuss@nose2.io