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 <[email protected]>
+
+- 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
-
-
[email protected]
-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