Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-django-coverage-plugin for 
openSUSE:Factory checked in at 2023-02-10 14:36:16
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-django-coverage-plugin (Old)
 and      /work/SRC/openSUSE:Factory/.python-django-coverage-plugin.new.1848 
(New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-django-coverage-plugin"

Fri Feb 10 14:36:16 2023 rev:5 rq:1064240 version:3.0.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-django-coverage-plugin/python-django-coverage-plugin.changes
      2022-09-15 22:58:08.661038191 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-django-coverage-plugin.new.1848/python-django-coverage-plugin.changes
    2023-02-10 14:36:23.162302611 +0100
@@ -1,0 +2,7 @@
+Fri Feb 10 12:37:29 UTC 2023 - Dirk Müller <dmuel...@suse.com>
+
+- update to 3.0.0:
+  * Dropped support for Python 2.7, Python 3.6, and Django 1.8.
+  * Declare our support for Python 3.11 and Django 4.1.
+
+-------------------------------------------------------------------

Old:
----
  django_coverage_plugin-2.0.3.tar.gz

New:
----
  django_coverage_plugin-3.0.0.tar.gz

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

Other differences:
------------------
++++++ python-django-coverage-plugin.spec ++++++
--- /var/tmp/diff_new_pack.SaT220/_old  2023-02-10 14:36:23.590305168 +0100
+++ /var/tmp/diff_new_pack.SaT220/_new  2023-02-10 14:36:23.594305192 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-django-coverage-plugin
 #
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
 
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-django-coverage-plugin
-Version:        2.0.3
+Version:        3.0.0
 Release:        0
 Summary:        Django template coveragepy plugin
 License:        Apache-2.0

++++++ django_coverage_plugin-2.0.3.tar.gz -> 
django_coverage_plugin-3.0.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/django_coverage_plugin-2.0.3/.github/workflows/tests.yml 
new/django_coverage_plugin-3.0.0/.github/workflows/tests.yml
--- old/django_coverage_plugin-2.0.3/.github/workflows/tests.yml        
2022-05-04 12:35:32.000000000 +0200
+++ new/django_coverage_plugin-3.0.0/.github/workflows/tests.yml        
2022-12-06 10:56:26.000000000 +0100
@@ -12,11 +12,18 @@
     # week, Sundays at 6:00 UTC.
     - cron: "0 6 * * 0"
 
+concurrency:
+  group: "${{ github.workflow }}-${{ github.ref }}"
+  cancel-in-progress: true
 
 defaults:
   run:
     shell: bash
 
+env:
+  PIP_DISABLE_PIP_VERSION_CHECK: 1
+  FORCE_COLOR: 1    # Get colored pytest output
+
 jobs:
   tests:
     name: "Python ${{ matrix.python-version }} on ${{ matrix.os }}"
@@ -31,16 +38,11 @@
         python-version:
           # When changing this list, be sure to check the [gh-actions] list in
           # tox.ini so that tox will run properly.
-          - "2.7"
-          - "3.6"
           - "3.7"
           - "3.8"
           - "3.9"
           - "3.10"
-        exclude:
-          # Windows 2.7 doesn't work because Microsoft removed stuff we needed.
-          - os: windows-latest
-            python-version: "2.7"
+          - "3.11"
       fail-fast: false
 
     steps:
@@ -84,7 +86,7 @@
       - name: "Set up Python"
         uses: "actions/setup-python@v2"
         with:
-          python-version: "3.8"
+          python-version: "3.7"
 
       - name: "Install dependencies"
         run: |
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-2.0.3/.isort.cfg 
new/django_coverage_plugin-3.0.0/.isort.cfg
--- old/django_coverage_plugin-2.0.3/.isort.cfg 2022-05-04 12:35:32.000000000 
+0200
+++ new/django_coverage_plugin-3.0.0/.isort.cfg 2022-12-06 10:56:26.000000000 
+0100
@@ -4,4 +4,4 @@
 include_trailing_comma=True
 line_length=79
 multi_line_output=3
-known_third_party = coverage,django,setuptools,six,unittest_mixins
+known_third_party = coverage,django,setuptools,unittest_mixins
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-2.0.3/Makefile 
new/django_coverage_plugin-3.0.0/Makefile
--- old/django_coverage_plugin-2.0.3/Makefile   2022-05-04 12:35:32.000000000 
+0200
+++ new/django_coverage_plugin-3.0.0/Makefile   2022-12-06 10:56:26.000000000 
+0100
@@ -24,7 +24,6 @@
 sterile: clean                          ## Remove all non-controlled content, 
even if expensive.
        -rm -rf .tox*
 
-
 kit:                                   ## Make the source distribution.
        python -m build
        python -m twine check dist/*
@@ -32,6 +31,9 @@
 kit_upload:                            ## Upload the built distributions to 
PyPI.
        python -m twine upload --verbose dist/*
 
-tag: ## Make a git tag with the version number
+tag:                                   ## Make a git tag with the version 
number.
        git tag -a -m "Version v$$(python setup.py --version)" v$$(python 
setup.py --version)
        git push --all
+
+ghrelease:                             ## Make a GitHub release for the latest 
version.
+       python -m scriv github-release
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-2.0.3/README.rst 
new/django_coverage_plugin-3.0.0/README.rst
--- old/django_coverage_plugin-2.0.3/README.rst 2022-05-04 12:35:32.000000000 
+0200
+++ new/django_coverage_plugin-3.0.0/README.rst 2022-12-06 10:56:26.000000000 
+0100
@@ -1,6 +1,13 @@
+==================================
+Django Template Coverage.py Plugin
+==================================
+
+A `coverage.py`_ plugin to measure test coverage of Django templates.
+
 .. start-badges
 
-|status| |kit| |license| |versions| |djversions|
+| |status| |kit| |license|
+| |versions| |djversions|
 
 .. |status| image:: 
https://img.shields.io/pypi/status/django_coverage_plugin.svg
     :target: https://pypi.python.org/pypi/django_coverage_plugin
@@ -14,23 +21,21 @@
 .. |versions| image:: 
https://img.shields.io/pypi/pyversions/django_coverage_plugin.svg
     :target: https://pypi.python.org/pypi/django_coverage_plugin
     :alt: Supported Python Versions
-.. |djversions| image:: 
https://img.shields.io/badge/Django-1.8%20%7C%201.11%20%7C%202.0%20%7C%202.1%20%7C%202.2%20%7C%203.0-44b78b.svg
+.. |djversions| image:: 
https://img.shields.io/badge/Django-1.8%20%7C%201.11%20%7C%202.2%20%7C%203.2%20%7C%204.1-44b78b.svg
     :target: https://pypi.python.org/pypi/django_coverage_plugin
     :alt: Supported Django Versions
 
-.. end-badges
+------------------
 
-==================================
-Django Template Coverage.py Plugin
-==================================
+.. end-badges
 
-A `coverage.py`_ plugin to measure test coverage of Django templates.
+Supported on:
 
-Supported Python versions: 2.7, and 3.6 through 3.10.
+- Python: 3.7 through 3.11.
 
-Supported Django versions: 1.8, 1.11, 2.x, 3.x and 4.x.
+- Django: 1.11, 2.x, 3.x and 4.x.
 
-Supported coverage.py versions: 4.x or higher.
+- Coverage.py: 4.x or higher.
 
 The plugin is pip installable::
 
@@ -130,10 +135,23 @@
 History
 ~~~~~~~
 
+.. scriv-insert-here
+
+v3.0.0 — 2022-12-06
+-------------------
+
+Dropped support for Python 2.7, Python 3.6, and Django 1.8.
+
+
+v2.0.4 — 2022-10-31
+-------------------
+
+Declare our support for Python 3.11 and Django 4.1.
+
 v2.0.3 — 2022-05-04
 -------------------
 
-Add support for Django 4.0
+Add support for Django 4.0.
 
 
 v2.0.2 — 2021-11-11
@@ -222,6 +240,7 @@
 Fixes another instance of `issue 32`_, which was the result of an
 initialization order problem.
 
+.. _issue 32: https://github.com/nedbat/django_coverage_plugin/issues/32
 
 
 v1.4.1 — 2017-01-25
@@ -230,9 +249,6 @@
 Fixes `issue 32`_, which was the result of an initialization order
 problem.
 
-.. _issue 32: https://github.com/nedbat/django_coverage_plugin/issues/32
-
-
 
 v1.4 — 2017-01-16
 -----------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/django_coverage_plugin-2.0.3/django_coverage_plugin/plugin.py 
new/django_coverage_plugin-3.0.0/django_coverage_plugin/plugin.py
--- old/django_coverage_plugin-2.0.3/django_coverage_plugin/plugin.py   
2022-05-04 12:35:32.000000000 +0200
+++ new/django_coverage_plugin-3.0.0/django_coverage_plugin/plugin.py   
2022-12-06 10:56:26.000000000 +0100
@@ -3,8 +3,6 @@
 
 """The Django template coverage plugin."""
 
-from __future__ import print_function
-
 import os.path
 import re
 
@@ -19,7 +17,6 @@
 from django.template.base import Lexer, NodeList, Template, TextNode
 from django.template.defaulttags import VerbatimNode
 from django.templatetags.i18n import BlockTranslateNode
-from six.moves import range
 
 try:
     from django.template.base import TokenType
@@ -99,39 +96,28 @@
     return True
 
 
-if django.VERSION < (1, 8):
-    raise RuntimeError("Django Coverage Plugin requires Django 1.8 or higher")
+if django.VERSION < (1, 11):
+    raise RuntimeError("Django Coverage Plugin requires Django 1.11 or higher")
 
 
-if django.VERSION >= (1, 9):
-    # Since we are grabbing at internal details, we have to adapt as they
-    # change over versions.
-    def filename_for_frame(frame):
-        try:
-            return frame.f_locals["self"].origin.name
-        except (KeyError, AttributeError):
-            return None
+# Since we are grabbing at internal details, we have to adapt as they
+# change over versions.
+def filename_for_frame(frame):
+    try:
+        return frame.f_locals["self"].origin.name
+    except (KeyError, AttributeError):
+        return None
 
-    def position_for_node(node):
-        try:
-            return node.token.position
-        except AttributeError:
-            return None
 
-    def position_for_token(token):
-        return token.position
-else:
-    def filename_for_frame(frame):
-        try:
-            return frame.f_locals["self"].source[0].name
-        except (KeyError, AttributeError, IndexError):
-            return None
+def position_for_node(node):
+    try:
+        return node.token.position
+    except AttributeError:
+        return None
 
-    def position_for_node(node):
-        return node.source[1]
 
-    def position_for_token(token):
-        return token.source[1]
+def position_for_token(token):
+    return token.position
 
 
 def read_template_source(filename):
@@ -178,7 +164,7 @@
         return [
             ("django_template_dir", self.django_template_dir),
             ("environment", sorted(
-                ("%s = %s" % (k, v))
+                ("{} = {}".format(k, v))
                 for k, v in os.environ.items()
                 if "DJANGO" in k
             )),
@@ -252,7 +238,7 @@
             return -1, -1
 
         if SHOW_TRACING:
-            print("{!r}: {}".format(render_self, position))
+            print(f"{render_self!r}: {position}")
         s_start, s_end = position
         if isinstance(render_self, TextNode):
             first_line = render_self.s.splitlines(True)[0]
@@ -307,7 +293,7 @@
 
 class FileReporter(coverage.plugin.FileReporter):
     def __init__(self, filename):
-        super(FileReporter, self).__init__(filename)
+        super().__init__(filename)
         # TODO: html filenames are absolute.
 
         self._source = None
@@ -316,15 +302,15 @@
         if self._source is None:
             try:
                 self._source = read_template_source(self.filename)
-            except (IOError, UnicodeError) as exc:
-                raise NoSource("Couldn't read {}: {}".format(self.filename, 
exc))
+            except (OSError, UnicodeError) as exc:
+                raise NoSource(f"Couldn't read {self.filename}: {exc}")
         return self._source
 
     def lines(self):
         source_lines = set()
 
         if SHOW_PARSING:
-            print("-------------- {}".format(self.filename))
+            print(f"-------------- {self.filename}")
 
         if django.VERSION >= (1, 9):
             lexer = Lexer(self.source())
@@ -402,7 +388,7 @@
                 source_lines.update(range(lineno, lineno+num_lines))
 
             if SHOW_PARSING:
-                print("\t\t\tNow source_lines is: {!r}".format(source_lines))
+                print(f"\t\t\tNow source_lines is: {source_lines!r}")
 
         return source_lines
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-2.0.3/howto.txt 
new/django_coverage_plugin-3.0.0/howto.txt
--- old/django_coverage_plugin-2.0.3/howto.txt  2022-05-04 12:35:32.000000000 
+0200
+++ new/django_coverage_plugin-3.0.0/howto.txt  2022-12-06 10:56:26.000000000 
+0100
@@ -12,4 +12,4 @@
     $ make clean kit
     $ make kit_upload
     $ make tag
-- make a new gh release: 
https://github.com/nedbat/django_coverage_plugin/releases/new
+    $ make ghrelease
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-2.0.3/requirements.txt 
new/django_coverage_plugin-3.0.0/requirements.txt
--- old/django_coverage_plugin-2.0.3/requirements.txt   2022-05-04 
12:35:32.000000000 +0200
+++ new/django_coverage_plugin-3.0.0/requirements.txt   2022-12-06 
10:56:26.000000000 +0100
@@ -1,4 +1,5 @@
 # To run tests, we just need tox.
 tox >= 1.8
 build
+scriv
 twine
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-2.0.3/setup.cfg 
new/django_coverage_plugin-3.0.0/setup.cfg
--- old/django_coverage_plugin-2.0.3/setup.cfg  2022-05-04 12:35:32.000000000 
+0200
+++ new/django_coverage_plugin-3.0.0/setup.cfg  2022-12-06 10:56:26.000000000 
+0100
@@ -8,3 +8,8 @@
     ignore::DeprecationWarning
     # ...but show them if they are from our code.
     default::DeprecationWarning:django_coverage_plugin
+
+[scriv]
+fragment_directory = scriv.d
+output_file = README.rst
+rst_header_chars = -.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-2.0.3/setup.py 
new/django_coverage_plugin-3.0.0/setup.py
--- old/django_coverage_plugin-2.0.3/setup.py   2022-05-04 12:35:32.000000000 
+0200
+++ new/django_coverage_plugin-3.0.0/setup.py   2022-12-06 10:56:26.000000000 
+0100
@@ -1,5 +1,4 @@
 #!/usr/bin/env python
-# -*- encoding: utf-8 -*-
 """Setup for Django Coverage Plugin
 
 Licensed under the Apache 2.0 License
@@ -7,9 +6,7 @@
 - https://github.com/nedbat/django_coverage_plugin/blob/master/NOTICE.txt
 
 """
-from __future__ import absolute_import, print_function
 
-import io
 import re
 from os.path import dirname, join
 
@@ -21,7 +18,7 @@
 
     Parameter: encoding kwarg may be set
     """
-    return io.open(
+    return open(
         join(dirname(__file__), *names),
         encoding=kwargs.get('encoding', 'utf8')
     ).read()
@@ -32,34 +29,33 @@
 Intended Audience :: Developers
 License :: OSI Approved :: Apache Software License
 Operating System :: OS Independent
-Programming Language :: Python :: 2.7
-Programming Language :: Python :: 3.6
 Programming Language :: Python :: 3.7
 Programming Language :: Python :: 3.8
 Programming Language :: Python :: 3.9
 Programming Language :: Python :: 3.10
+Programming Language :: Python :: 3.11
 Programming Language :: Python :: Implementation :: CPython
 Programming Language :: Python :: Implementation :: PyPy
 Topic :: Software Development :: Quality Assurance
 Topic :: Software Development :: Testing
 Development Status :: 5 - Production/Stable
 Framework :: Django
-Framework :: Django :: 1.8
 Framework :: Django :: 1.11
 Framework :: Django :: 2.2
 Framework :: Django :: 3.2
-Framework :: Django :: 4.0
+Framework :: Django :: 4.1
 """
 
 setup(
     name='django_coverage_plugin',
-    version='2.0.3',
+    version='3.0.0',
     description='Django template coverage.py plugin',
     long_description=(
-        re.compile(
-            '^.. start-badges.*^.. end-badges',
-            re.M | re.S,
-        ).sub('', read('README.rst'))
+        re.sub(
+            '(?ms)^.. start-badges.*^.. end-badges',
+            '',
+            read('README.rst'),
+        )
     ),
     long_description_content_type='text/x-rst',
     author='Ned Batchelder',
@@ -68,8 +64,7 @@
     packages=['django_coverage_plugin'],
     install_requires=[
         'coverage',
-        'six >= 1.4.0',
     ],
-    license='Apache 2.0',
+    license='Apache-2.0',
     classifiers=classifiers.splitlines(),
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-2.0.3/tests/banner.py 
new/django_coverage_plugin-3.0.0/tests/banner.py
--- old/django_coverage_plugin-2.0.3/tests/banner.py    2022-05-04 
12:35:32.000000000 +0200
+++ new/django_coverage_plugin-3.0.0/tests/banner.py    2022-12-06 
10:56:26.000000000 +0100
@@ -3,16 +3,16 @@
 
 """For printing the versions from tox.ini."""
 
-from __future__ import print_function
-
 import platform
 
+import coverage
 import django
 
 print(
-    "{} {}; Django {}".format(
+    "{} {}; Django {}; Coverage {}".format(
         platform.python_implementation(),
         platform.python_version(),
-        django.get_version()
+        django.get_version(),
+        coverage.__version__,
     )
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-2.0.3/tests/plugin_test.py 
new/django_coverage_plugin-3.0.0/tests/plugin_test.py
--- old/django_coverage_plugin-2.0.3/tests/plugin_test.py       2022-05-04 
12:35:32.000000000 +0200
+++ new/django_coverage_plugin-3.0.0/tests/plugin_test.py       2022-12-06 
10:56:26.000000000 +0100
@@ -21,7 +21,7 @@
 from django_coverage_plugin.plugin import DjangoTemplatePlugin
 
 
-def test_settings():
+def get_test_settings():
     """Create a dict full of default Django settings for the tests."""
     the_settings = {
         'CACHES': {
@@ -53,14 +53,10 @@
         ],
     })
 
-    if django.VERSION < (1, 10):
-        # for {% ssi %}
-        the_settings['TEMPLATES'][0]['OPTIONS']['allowed_include_roots'] = [""]
-
     return the_settings
 
 
-settings.configure(**test_settings())
+settings.configure(**get_test_settings())
 
 if hasattr(django, "setup"):
     django.setup()
@@ -70,11 +66,11 @@
     """A base class for all our tests."""
 
     def setUp(self):
-        super(DjangoPluginTestCase, self).setUp()
+        super().setUp()
         self.template_directory = "templates"
 
     def _path(self, name=None):
-        return "{}/{}".format(self.template_directory, name or 
self.template_file)
+        return f"{self.template_directory}/{name or self.template_file}"
 
     def make_template(self, text, name=None):
         """Make a template with `text`.
@@ -195,14 +191,14 @@
         self.assertEqual(
             executable,
             actual_executable,
-            "Executable lines aren't as expected: %r != %r" % (
+            "Executable lines aren't as expected: {!r} != {!r}".format(
                 executable, actual_executable,
             ),
         )
         self.assertEqual(
             missing or [],
             actual_missing,
-            "Missing lines aren't as expected: %r != %r" % (
+            "Missing lines aren't as expected: {!r} != {!r}".format(
                 missing, actual_missing,
             ),
         )
@@ -230,31 +226,52 @@
         return xml_coverage
 
     @contextlib.contextmanager
-    def assert_plugin_disabled(self, msg):
-        """Assert that our plugin was disabled during an operation."""
-        # self.run_django_coverage will raise PluginDisabled if the plugin
-        # was disabled.
+    def assert_coverage_warnings(self, *msgs, min_cov=None):
+        """Assert that coverage.py warnings are raised that contain all msgs.
+
+        If coverage version isn't at least min_cov, then no warnings are 
expected.
+
+        """
         # Coverage.py 6.0 made the warnings real warnings, so we have to adapt
         # how we test the warnings based on the version.
-        if coverage.version.version_info >= (6, 0):
+        if min_cov is not None and coverage.version_info < min_cov:
+            # Don't check for warnings on lower versions of coverage
+            yield
+            return
+        elif coverage.version_info >= (6, 0):
             import coverage.exceptions as cov_exc
             ctxmgr = self.assertWarns(cov_exc.CoverageWarning)
         else:
-            ctxmgr = nullcontext()
+            ctxmgr = contextlib.nullcontext()
         with ctxmgr as cw:
-            with self.assertRaises(PluginDisabled):
-                yield
+            yield
 
         if cw is not None:
             warn_text = "\n".join(str(w.message) for w in cw.warnings)
         else:
             warn_text = self.stderr()
-        self.assertIn(
-            "Disabling plug-in 'django_coverage_plugin.DjangoTemplatePlugin' "
-            "due to an exception:",
-            warn_text
-        )
-        self.assertIn("DjangoTemplatePluginException: " + msg, warn_text)
+        for msg in msgs:
+            self.assertIn(msg, warn_text)
+
+    @contextlib.contextmanager
+    def assert_plugin_disabled(self, msg):
+        """Assert that our plugin was disabled during an operation."""
+        # self.run_django_coverage will raise PluginDisabled if the plugin
+        # was disabled.
+        msgs = [
+            "Disabling plug-in 'django_coverage_plugin.DjangoTemplatePlugin' 
due to an exception:",
+            "DjangoTemplatePluginException: " + msg,
+        ]
+        with self.assert_coverage_warnings(*msgs):
+            with self.assertRaises(PluginDisabled):
+                yield
+
+    @contextlib.contextmanager
+    def assert_no_data(self, min_cov=None):
+        """Assert that coverage warns no data was collected."""
+        warn_msg = "No data was collected. (no-data-collected)"
+        with self.assert_coverage_warnings(warn_msg, min_cov=min_cov):
+            yield
 
 
 def squashed(s):
@@ -293,9 +310,3 @@
 class PluginDisabled(Exception):
     """Raised if we find that our plugin has been disabled."""
     pass
-
-
-@contextlib.contextmanager
-def nullcontext():
-    """For when we need a context manager to do nothing."""
-    yield None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-2.0.3/tests/test_engines.py 
new/django_coverage_plugin-3.0.0/tests/test_engines.py
--- old/django_coverage_plugin-2.0.3/tests/test_engines.py      2022-05-04 
12:35:32.000000000 +0200
+++ new/django_coverage_plugin-3.0.0/tests/test_engines.py      2022-12-06 
10:56:26.000000000 +0100
@@ -10,7 +10,7 @@
 
 class MultipleEngineTests(DjangoPluginTestCase):
     def setUp(self):
-        super(MultipleEngineTests, self).setUp()
+        super().setUp()
 
         engine = {
             'NAME': 'other',
@@ -33,7 +33,8 @@
         self.assert_analysis([1])
 
     def test_string_template(self):
-        text = self.run_django_coverage(text='Hello', using='other')
+        with self.assert_no_data():
+            text = self.run_django_coverage(text='Hello', using='other')
         self.assertEqual(text, 'Hello')
 
     def test_third_engine_not_debug(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-2.0.3/tests/test_extends.py 
new/django_coverage_plugin-3.0.0/tests/test_extends.py
--- old/django_coverage_plugin-2.0.3/tests/test_extends.py      2022-05-04 
12:35:32.000000000 +0200
+++ new/django_coverage_plugin-3.0.0/tests/test_extends.py      2022-12-06 
10:56:26.000000000 +0100
@@ -3,7 +3,7 @@
 
 """Tests of template inheritance for django_coverage_plugin."""
 
-from .plugin_test import DjangoPluginTestCase, django_stop_before
+from .plugin_test import DjangoPluginTestCase
 
 
 class BlockTest(DjangoPluginTestCase):
@@ -146,43 +146,3 @@
         self.assertEqual(text, "First\nInside\nJob\n\nLast\n")
         self.assert_analysis([1, 2, 3], name="outer.html")
         self.assert_analysis([1, 2], name="nested.html")
-
-
-# {% ssi %} is in earlier Djangos than 1.9, but doesn't trace properly.
-@django_stop_before(1, 10)
-class SsiTest(DjangoPluginTestCase):
-    """Test {% ssi %}, which does not trace the included file."""
-
-    def test_ssi_unparsed(self):
-        nested = self.make_template(name="nested.html", text="""\
-            Inside {{ a }}
-            Job
-            """)
-
-        self.make_template(name="outer.html", text="""\
-            First
-            {% ssi "NESTED" %}
-            Last
-            """.replace("NESTED", nested))
-
-        text = self.run_django_coverage(name="outer.html", context={'a': 17})
-        self.assertEqual(text, "First\nInside {{ a }}\nJob\n\nLast\n")
-        self.assert_analysis([1, 2, 3], name="outer.html")
-        self.assert_measured_files("outer.html", "nested.html")
-
-    def test_ssi_parsed(self):
-        nested = self.make_template(name="nested.html", text="""\
-            Inside {{ a }}
-            Job
-            """)
-
-        self.make_template(name="outer.html", text="""\
-            First
-            {% ssi "NESTED" parsed %}
-            Last
-            """.replace("NESTED", nested))
-
-        text = self.run_django_coverage(name="outer.html", context={'a': 17})
-        self.assertEqual(text, "First\nInside 17\nJob\n\nLast\n")
-        self.assert_analysis([1, 2, 3], name="outer.html")
-        self.assert_measured_files("outer.html", "nested.html")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-2.0.3/tests/test_html.py 
new/django_coverage_plugin-3.0.0/tests/test_html.py
--- old/django_coverage_plugin-2.0.3/tests/test_html.py 2022-05-04 
12:35:32.000000000 +0200
+++ new/django_coverage_plugin-3.0.0/tests/test_html.py 2022-12-06 
10:56:26.000000000 +0100
@@ -1,4 +1,3 @@
-# coding: utf8
 # Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
 # For details: 
https://github.com/nedbat/django_coverage_plugin/blob/master/NOTICE.txt
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-2.0.3/tests/test_settings.py 
new/django_coverage_plugin-3.0.0/tests/test_settings.py
--- old/django_coverage_plugin-2.0.3/tests/test_settings.py     2022-05-04 
12:35:32.000000000 +0200
+++ new/django_coverage_plugin-3.0.0/tests/test_settings.py     2022-12-06 
10:56:26.000000000 +0100
@@ -5,18 +5,18 @@
 
 from django.test.utils import override_settings
 
-from .plugin_test import DjangoPluginTestCase, test_settings
+from .plugin_test import DjangoPluginTestCase, get_test_settings
 
 # Make settings overrides for tests below.
 NON_DJANGO_BACKEND = 'django.template.backends.dummy.TemplateStrings'
 
-DEBUG_FALSE_OVERRIDES = test_settings()
+DEBUG_FALSE_OVERRIDES = get_test_settings()
 DEBUG_FALSE_OVERRIDES['TEMPLATES'][0]['OPTIONS']['debug'] = False
 
-NO_OPTIONS_OVERRIDES = test_settings()
+NO_OPTIONS_OVERRIDES = get_test_settings()
 del NO_OPTIONS_OVERRIDES['TEMPLATES'][0]['OPTIONS']
 
-OTHER_ENGINE_OVERRIDES = test_settings()
+OTHER_ENGINE_OVERRIDES = get_test_settings()
 OTHER_ENGINE_OVERRIDES['TEMPLATES'][0]['BACKEND'] = NON_DJANGO_BACKEND
 OTHER_ENGINE_OVERRIDES['TEMPLATES'][0]['OPTIONS'] = {}
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-2.0.3/tests/test_simple.py 
new/django_coverage_plugin-3.0.0/tests/test_simple.py
--- old/django_coverage_plugin-2.0.3/tests/test_simple.py       2022-05-04 
12:35:32.000000000 +0200
+++ new/django_coverage_plugin-3.0.0/tests/test_simple.py       2022-12-06 
10:56:26.000000000 +0100
@@ -1,4 +1,3 @@
-# coding: utf8
 # Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
 # For details: 
https://github.com/nedbat/django_coverage_plugin/blob/master/NOTICE.txt
 
@@ -7,7 +6,7 @@
 from .plugin_test import DjangoPluginTestCase
 
 # 200 Unicode chars: snowman + poo.
-UNIUNI = u"\u26C4\U0001F4A9"*100
+UNIUNI = "\u26C4\U0001F4A9"*100
 if isinstance(UNIUNI, str):
     UNISTR = UNIUNI
 else:
@@ -64,8 +63,8 @@
             υηιcσɗє ιѕ тяιcку
             {{more}}!
             """)
-        text = self.run_django_coverage(context={'more': u'ɘboɔinU'})
-        self.assertEqual(text, u'υηιcσɗє ιѕ тяιcку\nɘboɔinU!\n')
+        text = self.run_django_coverage(context={'more': 'ɘboɔinU'})
+        self.assertEqual(text, 'υηιcσɗє ιѕ тяιcку\nɘboɔinU!\n')
         self.assert_analysis([1, 2])
         self.assertEqual(self.get_html_report(), 100)
         self.assertEqual(self.get_xml_report(), 100)
@@ -215,8 +214,8 @@
         text = self.run_django_coverage()
         self.assertEqual(
             text,
-            u"1\n\n{{if dying}}Alive.{{/if}}\nsecond.\n"
-            u"{%third%}.UNIUNI\n\n7\n".replace(u"UNIUNI", UNIUNI)
+            "1\n\n{{if dying}}Alive.{{/if}}\nsecond.\n"
+            "{%third%}.UNIUNI\n\n7\n".replace("UNIUNI", UNIUNI)
         )
         self.assert_analysis([1, 2, 3, 4, 5, 7])
 
@@ -245,11 +244,14 @@
     run_in_temp_dir = False
 
     def test_string_template(self):
-        text = self.run_django_coverage(
-            text="Hello, {{name}}!",
-            context={'name': 'World'},
-            options={},
-            )
+        # I don't understand why coverage 6 warns about no data,
+        # but coverage 5 does not.
+        with self.assert_no_data(min_cov=(6, 0)):
+            text = self.run_django_coverage(
+                text="Hello, {{name}}!",
+                context={'name': 'World'},
+                options={},
+                )
         self.assertEqual(text, "Hello, World!")
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-2.0.3/tests/test_source.py 
new/django_coverage_plugin-3.0.0/tests/test_source.py
--- old/django_coverage_plugin-2.0.3/tests/test_source.py       2022-05-04 
12:35:32.000000000 +0200
+++ new/django_coverage_plugin-3.0.0/tests/test_source.py       2022-12-06 
10:56:26.000000000 +0100
@@ -88,9 +88,9 @@
         text = self.run_django_coverage(name="main.html")
         self.assertEqual(text, "Hello")
 
-        self.assert_measured_files("main.html", 
"static{}changelog.txt".format(os.sep))
+        self.assert_measured_files("main.html", f"static{os.sep}changelog.txt")
         self.assert_analysis([1], name="main.html")
-        with self.assertRaisesRegexp(NoSource, r"changelog.txt.*invalid start 
byte"):
+        with self.assertRaisesRegex(NoSource, r"changelog.txt.*invalid start 
byte"):
             self.cov.html_report()
 
     def test_non_utf8_omitted(self):
@@ -110,7 +110,7 @@
         text = self.run_django_coverage(name="main.html")
         self.assertEqual(text, "Hello")
 
-        self.assert_measured_files("main.html", 
"static{}changelog.txt".format(os.sep))
+        self.assert_measured_files("main.html", f"static{os.sep}changelog.txt")
         self.assert_analysis([1], name="main.html")
         self.cov.html_report()
 
@@ -131,9 +131,14 @@
         text = self.run_django_coverage(name="main.html")
         self.assertEqual(text, "Hello")
 
-        self.assert_measured_files("main.html", 
"static{}changelog.txt".format(os.sep))
+        self.assert_measured_files("main.html", f"static{os.sep}changelog.txt")
         self.assert_analysis([1], name="main.html")
-        self.cov.html_report()
+        warn_msg = (
+            "'utf-8' codec can't decode byte 0xf6 in position 2: " +
+            "invalid start byte (couldnt-parse)"
+        )
+        with self.assert_coverage_warnings(warn_msg, min_cov=(6, 0)):
+            self.cov.html_report()
 
     def test_htmlcov_isnt_measured(self):
         # We used to find the HTML report and think it was template files.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django_coverage_plugin-2.0.3/tox.ini 
new/django_coverage_plugin-3.0.0/tox.ini
--- old/django_coverage_plugin-2.0.3/tox.ini    2022-05-04 12:35:32.000000000 
+0200
+++ new/django_coverage_plugin-3.0.0/tox.ini    2022-12-06 10:56:26.000000000 
+0100
@@ -14,24 +14,26 @@
 
 [tox]
 envlist =
-    py27-django{18,111},
-    py36-django{18,111,22,32},
-    py37-django{22,32},
-    py38-django{22,32,40,tip},
-    py39-django{22,32,40,tip},
-    py310-django{32,40,tip},
+    py37-django{111,22,32}-cov{5,6,tip},
+    py38-django{22,32,40,41,tip}-cov{5,6,tip},
+    py39-django{22,32,40,41,tip}-cov{5,6,tip},
+    py310-django{32,40,41,tip}-cov{5,6,tip},
+    py311-django{41,tip}-cov{6,tip},
     check,pkgcheck,doc
 
 [testenv]
 deps =
-    pytest
-    unittest-mixins==1.6
-    django18: Django>=1.8,<1.9
+    cov5: coverage>=5.0,<6.0
+    cov6: coverage>=6.0,<7.0
+    covtip: git+https://github.com/nedbat/coveragepy.git
     django111: Django>=1.11,<2.0
     django22: Django>=2.2,<3.0
     django32: Django>=3.2,<4.0
     django40: Django>=4.0,<4.1
-    djangotip: https://github.com/django/django/archive/main.tar.gz
+    django41: Django>=4.1,<4.2
+    djangotip: git+https://github.com/django/django.git
+    pytest
+    unittest-mixins==1.6
 
 commands =
     python -c "import tests.banner"
@@ -73,9 +75,8 @@
 
 [gh-actions]
 python =
-    2.7: py27
-    3.6: py36
     3.7: py37
     3.8: py38
     3.9: py39
     3.10: py310
+    3.11: py311

Reply via email to