Hello community,

here is the log from the commit of package python-nose2 for openSUSE:Factory 
checked in at 2020-03-05 23:17:09
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-nose2 (Old)
 and      /work/SRC/openSUSE:Factory/.python-nose2.new.26092 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-nose2"

Thu Mar  5 23:17:09 2020 rev:7 rq:780971 version:0.9.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-nose2/python-nose2.changes        
2019-11-22 10:21:52.541330438 +0100
+++ /work/SRC/openSUSE:Factory/.python-nose2.new.26092/python-nose2.changes     
2020-03-05 23:17:21.921146133 +0100
@@ -1,0 +2,8 @@
+Mon Mar  2 13:22:27 UTC 2020 - Tomáš Chvátal <[email protected]>
+
+- Update to 0.9.2:
+  * Add --junit-xml-path to the junit plugin argument list
+  * 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)
+
+-------------------------------------------------------------------

Old:
----
  nose2-0.9.1.tar.gz

New:
----
  nose2-0.9.2.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-nose2.spec ++++++
--- /var/tmp/diff_new_pack.D5o9Io/_old  2020-03-05 23:17:23.357146946 +0100
+++ /var/tmp/diff_new_pack.D5o9Io/_new  2020-03-05 23:17:23.409146975 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-nose2
 #
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,11 +18,10 @@
 
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-nose2
-Version:        0.9.1
+Version:        0.9.2
 Release:        0
 Summary:        Second generation of the "nose" Python testing framework
 License:        BSD-2-Clause AND Python-2.0
-Group:          Development/Languages/Python
 URL:            https://github.com/nose-devs/nose2
 Source:         
https://files.pythonhosted.org/packages/source/n/nose2/nose2-%{version}.tar.gz
 Patch0:         remove_unittest2.patch

++++++ nose2-0.9.1.tar.gz -> nose2-0.9.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nose2-0.9.1/PKG-INFO new/nose2-0.9.2/PKG-INFO
--- old/nose2-0.9.1/PKG-INFO    2019-04-02 18:30:07.000000000 +0200
+++ new/nose2-0.9.2/PKG-INFO    2020-02-02 01:58:55.000000000 +0100
@@ -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 [email protected]
@@ -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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nose2-0.9.1/README.rst new/nose2-0.9.2/README.rst
--- old/nose2-0.9.1/README.rst  2019-03-31 22:52:47.000000000 +0200
+++ new/nose2-0.9.2/README.rst  2020-02-02 01:56:37.000000000 +0100
@@ -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 [email protected]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nose2-0.9.1/docs/changelog.rst 
new/nose2-0.9.2/docs/changelog.rst
--- old/nose2-0.9.1/docs/changelog.rst  2019-04-02 17:53:47.000000000 +0200
+++ new/nose2-0.9.2/docs/changelog.rst  2020-02-02 01:51:37.000000000 +0100
@@ -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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nose2-0.9.1/docs/dev/writing_plugins.rst 
new/nose2-0.9.2/docs/dev/writing_plugins.rst
--- old/nose2-0.9.1/docs/dev/writing_plugins.rst        2018-10-29 
22:48:32.000000000 +0100
+++ new/nose2-0.9.2/docs/dev/writing_plugins.rst        2019-07-12 
04:07:31.000000000 +0200
@@ -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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nose2-0.9.1/docs/plugins/coverage.rst 
new/nose2-0.9.2/docs/plugins/coverage.rst
--- old/nose2-0.9.1/docs/plugins/coverage.rst   2018-10-29 22:48:32.000000000 
+0100
+++ new/nose2-0.9.2/docs/plugins/coverage.rst   2019-12-09 05:57:52.000000000 
+0100
@@ -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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nose2-0.9.1/docs/plugins/mp.rst 
new/nose2-0.9.2/docs/plugins/mp.rst
--- old/nose2-0.9.1/docs/plugins/mp.rst 2018-10-29 22:48:32.000000000 +0100
+++ new/nose2-0.9.2/docs/plugins/mp.rst 2019-12-09 05:57:52.000000000 +0100
@@ -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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nose2-0.9.1/nose2/_version.py 
new/nose2-0.9.2/nose2/_version.py
--- old/nose2-0.9.1/nose2/_version.py   2019-04-02 17:53:47.000000000 +0200
+++ new/nose2-0.9.2/nose2/_version.py   2020-02-02 01:51:37.000000000 +0100
@@ -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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nose2-0.9.1/nose2/plugins/coverage.py 
new/nose2-0.9.2/nose2/plugins/coverage.py
--- old/nose2-0.9.1/nose2/plugins/coverage.py   2018-12-01 20:30:24.000000000 
+0100
+++ new/nose2-0.9.2/nose2/plugins/coverage.py   2019-12-20 23:59:40.000000000 
+0100
@@ -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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nose2-0.9.1/nose2/plugins/junitxml.py 
new/nose2-0.9.2/nose2/plugins/junitxml.py
--- old/nose2-0.9.1/nose2/plugins/junitxml.py   2019-04-02 14:51:57.000000000 
+0200
+++ new/nose2-0.9.2/nose2/plugins/junitxml.py   2019-12-20 23:59:40.000000000 
+0100
@@ -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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nose2-0.9.1/nose2/plugins/mp.py 
new/nose2-0.9.2/nose2/plugins/mp.py
--- old/nose2-0.9.1/nose2/plugins/mp.py 2019-03-17 05:23:00.000000000 +0100
+++ new/nose2-0.9.2/nose2/plugins/mp.py 2019-12-20 23:59:40.000000000 +0100
@@ -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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nose2-0.9.1/nose2/session.py 
new/nose2-0.9.2/nose2/session.py
--- old/nose2-0.9.1/nose2/session.py    2019-03-17 05:23:00.000000000 +0100
+++ new/nose2-0.9.2/nose2/session.py    2019-12-20 23:59:40.000000000 +0100
@@ -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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/nose2-0.9.1/nose2/tests/functional/support/scenario/junitxml/non_default_path/test_junitxml_non_default_path.py
 
new/nose2-0.9.2/nose2/tests/functional/support/scenario/junitxml/non_default_path/test_junitxml_non_default_path.py
--- 
old/nose2-0.9.1/nose2/tests/functional/support/scenario/junitxml/non_default_path/test_junitxml_non_default_path.py
 1970-01-01 01:00:00.000000000 +0100
+++ 
new/nose2-0.9.2/nose2/tests/functional/support/scenario/junitxml/non_default_path/test_junitxml_non_default_path.py
 2019-12-20 23:59:40.000000000 +0100
@@ -0,0 +1,9 @@
+# -*- coding: utf-8 -*-
+
+import unittest
+
+
+class Test(unittest.TestCase):
+
+    def test(self):
+        pass
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/nose2-0.9.1/nose2/tests/functional/support/scenario/junitxml/non_default_path/unittest.cfg
 
new/nose2-0.9.2/nose2/tests/functional/support/scenario/junitxml/non_default_path/unittest.cfg
--- 
old/nose2-0.9.1/nose2/tests/functional/support/scenario/junitxml/non_default_path/unittest.cfg
      1970-01-01 01:00:00.000000000 +0100
+++ 
new/nose2-0.9.2/nose2/tests/functional/support/scenario/junitxml/non_default_path/unittest.cfg
      2019-07-12 18:40:55.000000000 +0200
@@ -0,0 +1,2 @@
+[junit-xml]
+path = a.xml
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/nose2-0.9.1/nose2/tests/functional/support/scenario/test_coverage_config/nose2cfg/nose2.cfg
 
new/nose2-0.9.2/nose2/tests/functional/support/scenario/test_coverage_config/nose2cfg/nose2.cfg
--- 
old/nose2-0.9.1/nose2/tests/functional/support/scenario/test_coverage_config/nose2cfg/nose2.cfg
     2018-10-29 22:48:32.000000000 +0100
+++ 
new/nose2-0.9.2/nose2/tests/functional/support/scenario/test_coverage_config/nose2cfg/nose2.cfg
     2019-12-20 23:21:45.000000000 +0100
@@ -1,2 +1,4 @@
 [coverage]
+always-on = True
 coverage-report = term-missing
+coverage = covered_lib_nose2cfg/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nose2-0.9.1/nose2/tests/functional/test_coverage.py 
new/nose2-0.9.2/nose2/tests/functional/test_coverage.py
--- old/nose2-0.9.1/nose2/tests/functional/test_coverage.py     2018-12-01 
20:30:24.000000000 +0100
+++ new/nose2-0.9.2/nose2/tests/functional/test_coverage.py     2019-12-20 
23:59:40.000000000 +0100
@@ -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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/nose2-0.9.1/nose2/tests/functional/test_junitxml_plugin.py 
new/nose2-0.9.2/nose2/tests/functional/test_junitxml_plugin.py
--- old/nose2-0.9.1/nose2/tests/functional/test_junitxml_plugin.py      
2019-04-02 14:51:57.000000000 +0200
+++ new/nose2-0.9.2/nose2/tests/functional/test_junitxml_plugin.py      
2019-12-20 23:59:40.000000000 +0100
@@ -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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nose2-0.9.1/nose2.egg-info/PKG-INFO 
new/nose2-0.9.2/nose2.egg-info/PKG-INFO
--- old/nose2-0.9.1/nose2.egg-info/PKG-INFO     2019-04-02 18:30:05.000000000 
+0200
+++ new/nose2-0.9.2/nose2.egg-info/PKG-INFO     2020-02-02 01:58:55.000000000 
+0100
@@ -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 [email protected]
@@ -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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nose2-0.9.1/nose2.egg-info/SOURCES.txt 
new/nose2-0.9.2/nose2.egg-info/SOURCES.txt
--- old/nose2-0.9.1/nose2.egg-info/SOURCES.txt  2019-04-02 18:30:05.000000000 
+0200
+++ new/nose2-0.9.2/nose2.egg-info/SOURCES.txt  2020-02-02 01:58:55.000000000 
+0100
@@ -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


Reply via email to