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 2026-05-28 17:27:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-django-coverage-plugin (Old)
and /work/SRC/openSUSE:Factory/.python-django-coverage-plugin.new.1937
(New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-django-coverage-plugin"
Thu May 28 17:27:56 2026 rev:11 rq:1355513 version:3.2.2
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-django-coverage-plugin/python-django-coverage-plugin.changes
2026-01-29 17:49:40.049367394 +0100
+++
/work/SRC/openSUSE:Factory/.python-django-coverage-plugin.new.1937/python-django-coverage-plugin.changes
2026-05-28 17:29:09.441228065 +0200
@@ -1,0 +2,9 @@
+Thu May 28 05:35:17 UTC 2026 - Steve Kowalik <[email protected]>
+
+- Update to 3.2.2:
+ * Fix: {% endblock %} lines (and others) were falsely reported as
+ unexecuted when they appeared on their own indented line
+ * Dropped Django 3.x and 4.x.
+- Force ctrace to be the coverage core when running tests. (bsc#1266046)
+
+-------------------------------------------------------------------
Old:
----
django_coverage_plugin-3.2.0.tar.gz
New:
----
django_coverage_plugin-3.2.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-django-coverage-plugin.spec ++++++
--- /var/tmp/diff_new_pack.zK4HqJ/_old 2026-05-28 17:29:10.133256710 +0200
+++ /var/tmp/diff_new_pack.zK4HqJ/_new 2026-05-28 17:29:10.137256876 +0200
@@ -17,24 +17,25 @@
Name: python-django-coverage-plugin
-Version: 3.2.0
+Version: 3.2.2
Release: 0
Summary: Django template coveragepy plugin
License: Apache-2.0
URL: https://github.com/nedbat/django_coverage_plugin
Source:
https://github.com/nedbat/django_coverage_plugin/archive/v%{version}.tar.gz#/django_coverage_plugin-%{version}.tar.gz
+BuildRequires: %{python_module base >= 3.10}
BuildRequires: %{python_module pip}
BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module wheel}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
-Requires: python-Django
+Requires: python-Django >= 5
Requires: python-coverage >= 4.0
Provides: python-django_coverage_plugin = %{version}
Obsoletes: python-django_coverage_plugin < %{version}
BuildArch: noarch
# SECTION test requirements
-BuildRequires: %{python_module Django}
+BuildRequires: %{python_module Django >= 5}
BuildRequires: %{python_module coverage >= 4.0}
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module unittest-mixins}
@@ -55,6 +56,8 @@
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%check
+# Required for Python 3.12+
+export COVERAGE_CORE=ctrace
%pytest
%files %{python_files}
++++++ django_coverage_plugin-3.2.0.tar.gz ->
django_coverage_plugin-3.2.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/.editorconfig
new/django_coverage_plugin-3.2.2/.editorconfig
--- old/django_coverage_plugin-3.2.0/.editorconfig 2025-10-05
22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/.editorconfig 2026-04-04
22:41:26.000000000 +0200
@@ -1,5 +1,5 @@
# 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
+# For details:
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
# This file is for unifying the coding style for different editors and IDEs.
# More information at http://EditorConfig.org
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/.github/dependabot.yml
new/django_coverage_plugin-3.2.2/.github/dependabot.yml
--- old/django_coverage_plugin-3.2.0/.github/dependabot.yml 1970-01-01
01:00:00.000000000 +0100
+++ new/django_coverage_plugin-3.2.2/.github/dependabot.yml 2026-04-04
22:41:26.000000000 +0200
@@ -0,0 +1,21 @@
+# From:
+#
https://docs.github.com/en/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/keeping-your-actions-up-to-date-with-dependabot
+# Set update schedule for GitHub Actions
+
+version: 2
+updates:
+ - package-ecosystem: "github-actions"
+ directory: "/"
+ schedule:
+ # Check for updates to GitHub Actions once a week
+ interval: "weekly"
+ day: "sunday"
+ cooldown:
+ #
https://blog.yossarian.net/2025/11/21/We-should-all-be-using-dependency-cooldowns
+ default-days: 7
+ groups:
+ action-dependencies:
+ patterns:
+ - "*"
+ commit-message:
+ prefix: "chore"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/django_coverage_plugin-3.2.0/.github/workflows/publish.yml
new/django_coverage_plugin-3.2.2/.github/workflows/publish.yml
--- old/django_coverage_plugin-3.2.0/.github/workflows/publish.yml
1970-01-01 01:00:00.000000000 +0100
+++ new/django_coverage_plugin-3.2.2/.github/workflows/publish.yml
2026-04-04 22:41:26.000000000 +0200
@@ -0,0 +1,68 @@
+# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
+# For details:
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
+
+name: "Publish"
+
+on:
+ push:
+ tags:
+ - '*'
+
+permissions:
+ contents: read
+
+concurrency:
+ group: "${{ github.workflow }}-${{ github.ref }}"
+ cancel-in-progress: true
+
+jobs:
+ build_package:
+ name: "Build"
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: "Check out the repo"
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #
v6.0.2
+ with:
+ persist-credentials: false
+
+ - name: "Set up Python"
+ uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 #
v6.2.0
+ with:
+ python-version: "3.14"
+
+ - name: "Install dependencies"
+ run: |
+ python -m pip install -r requirements.txt
+
+ - name: "Build dists"
+ run: |
+ python -m build --sdist --wheel
+ python -m twine check dist/*
+
+ - name: "Upload dists"
+ uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f
# v7.0.0
+ with:
+ name: dists
+ path: dist/*
+ retention-days: 7
+
+ publish_package:
+ name: "Publish"
+ needs: build_package
+ runs-on: ubuntu-latest
+ environment:
+ name: pypi
+ deployment: false
+ permissions:
+ id-token: write # needed for publishing to PyPI
+
+ steps:
+ - name: "Download artifacts"
+ uses:
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
+ with:
+ name: dists
+ path: dist/
+
+ - name: "Publish to PyPI"
+ uses:
pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/django_coverage_plugin-3.2.0/.github/workflows/tests.yml
new/django_coverage_plugin-3.2.2/.github/workflows/tests.yml
--- old/django_coverage_plugin-3.2.0/.github/workflows/tests.yml
2025-10-05 22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/.github/workflows/tests.yml
2026-04-04 22:41:26.000000000 +0200
@@ -1,5 +1,5 @@
# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
-# For details: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt
+# For details:
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
name: "Tests"
@@ -50,12 +50,12 @@
steps:
- name: "Check out the repo"
- uses: "actions/checkout@v4"
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #
v6.0.2
with:
persist-credentials: false
- name: "Set up Python"
- uses: "actions/setup-python@v5"
+ uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 #
v6.2.0
with:
python-version: "${{ matrix.python-version }}"
allow-prereleases: true
@@ -87,12 +87,12 @@
steps:
- name: "Check out the repo"
- uses: "actions/checkout@v4"
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #
v6.0.2
with:
persist-credentials: false
- name: "Set up Python"
- uses: "actions/setup-python@v5"
+ uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 #
v6.2.0
with:
python-version: "3.10"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/AUTHORS.txt
new/django_coverage_plugin-3.2.2/AUTHORS.txt
--- old/django_coverage_plugin-3.2.0/AUTHORS.txt 2025-10-05
22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/AUTHORS.txt 1970-01-01
01:00:00.000000000 +0100
@@ -1,11 +0,0 @@
-The Django coverage plugin was written by Ned Batchelder, with other
-contributions by:
-
-Andrew Pinkham
-Aron Griffis
-Bruno Alla
-Emil Madsen
-Federico Bond
-Jessamyn Smith
-Pamela McA'Nulty
-Simon Charette
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/MANIFEST.in
new/django_coverage_plugin-3.2.2/MANIFEST.in
--- old/django_coverage_plugin-3.2.0/MANIFEST.in 2025-10-05
22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/MANIFEST.in 2026-04-04
22:41:26.000000000 +0200
@@ -1,6 +1,6 @@
# Licensed under the Apache 2.0 License
# - http://www.apache.org/licenses/LICENSE-2.0
-# - https://github.com/nedbat/django_coverage_plugin/blob/master/NOTICE.txt
+# - https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
include *.txt
include .editorconfig
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/Makefile
new/django_coverage_plugin-3.2.2/Makefile
--- old/django_coverage_plugin-3.2.0/Makefile 2025-10-05 22:05:10.000000000
+0200
+++ new/django_coverage_plugin-3.2.2/Makefile 2026-04-04 22:41:26.000000000
+0200
@@ -1,5 +1,5 @@
# 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
+# For details:
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
# Makefile for django_coverage_plugin
@@ -30,19 +30,13 @@
python -m build
python -m twine check dist/*
-pypi: ## Upload the built distributions to
PyPI.
- python -m twine upload --verbose dist/*
-
-test_pypi: ## Upload the distributions to test
PyPI.
- python -m twine upload --verbose --repository testpypi --password
$$TWINE_TEST_PASSWORD dist/*
-
_install_e:
python -m pip install -q -e .
tag: _install_e ## Make a git tag with the
version number.
@export VER="$$(python -c "import django_coverage_plugin as me;
print(me.__version__)")" && \
- echo git tag -s -m "Version v$$VER" v$$VER
- echo git push --all
+ git tag -s -m "Version v$$VER" v$$VER
+ 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-3.2.0/NOTICE.txt
new/django_coverage_plugin-3.2.2/NOTICE.txt
--- old/django_coverage_plugin-3.2.0/NOTICE.txt 2025-10-05 22:05:10.000000000
+0200
+++ new/django_coverage_plugin-3.2.2/NOTICE.txt 2026-04-04 22:41:26.000000000
+0200
@@ -1,4 +1,4 @@
-Copyright 2015-2025 Ned Batchelder. All rights reserved.
+Copyright 2015-2026 Ned Batchelder. All rights reserved.
Except where noted otherwise, this software is licensed under the Apache
License, Version 2.0 (the "License"); you may not use this work except in
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/README.rst
new/django_coverage_plugin-3.2.2/README.rst
--- old/django_coverage_plugin-3.2.0/README.rst 2025-10-05 22:05:10.000000000
+0200
+++ new/django_coverage_plugin-3.2.2/README.rst 2026-04-04 22:41:26.000000000
+0200
@@ -20,8 +20,8 @@
.. |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
-.. the Django badge says: `3.2 | 4.2 | 5.2`
-.. |djversions| image::
https://img.shields.io/badge/Django-3.2%20%7C%204.2%20%7C%205.2-44b78b.svg
+.. the Django badge says: `5.2 | 6.0`
+.. |djversions| image::
https://img.shields.io/badge/Django-5.2%20%7C%206.0-44b78b.svg
:target: https://pypi.python.org/pypi/django_coverage_plugin
:alt: Supported Django Versions
.. |sponsor| image::
https://img.shields.io/badge/%E2%9D%A4-Sponsor%20me-brightgreen?style=flat&logo=GitHub
@@ -40,7 +40,7 @@
- Python: 3.10 through 3.14.
-- Django: 3.2 through 5.2.
+- Django: 5.2 through 6.0.
- Coverage.py: 6.x or higher.
@@ -138,11 +138,43 @@
$ tox
+Authors
+~~~~~~~
+
+The Django coverage plugin was written by Ned Batchelder,
+with contributions by:
+
+- Andrew Pinkham
+- Aron Griffis
+- Bruno Alla
+- Emil Madsen
+- Federico Bond
+- Jessamyn Smith
+- Marc Gibbons
+- Pamela McA'Nulty
+- Simon Charette
+
+
History
~~~~~~~
.. scriv-insert-here
+v3.2.2 — 2026-04-04
+-------------------
+
+Fix: ``{% endblock %}`` lines (and others) were falsely reported as unexecuted
+when they appeared on their own indented line (`issue 74`_). Thanks, Marc
+Gibbons (`pull 108`_).
+
+Dropped Django 3.x and 4.x.
+
+Switched to trusted publishing.
+
+.. _issue 74: https://github.com/coveragepy/django_coverage_plugin/issues/74
+.. _pull 108: https://github.com/coveragepy/django_coverage_plugin/pull/108
+
+
v3.2.0 — 2025-10-05
-------------------
@@ -191,7 +223,7 @@
When using ``source=.``, an existing coverage HTML report directory would be
found and believed to be unmeasured HTML template files. This is now fixed.
-.. _issue 78: https://github.com/nedbat/django_coverage_plugin/issues/78
+.. _issue 78: https://github.com/coveragepy/django_coverage_plugin/issues/78
v2.0.1 — 2021-10-06
@@ -214,9 +246,9 @@
Fix an issue (`issue 63`_) where tag libraries can't be found if imported
during test collection. Thanks to Daniel Izquierdo for the fix.
-.. _issue 46: https://github.com/nedbat/django_coverage_plugin/issues/46
-.. _issue 60: https://github.com/nedbat/django_coverage_plugin/issues/60
-.. _issue 63: https://github.com/nedbat/django_coverage_plugin/issues/63
+.. _issue 46: https://github.com/coveragepy/django_coverage_plugin/issues/46
+.. _issue 60: https://github.com/coveragepy/django_coverage_plugin/issues/60
+.. _issue 63: https://github.com/coveragepy/django_coverage_plugin/issues/63
v1.8.0 — 2020-01-23
-------------------
@@ -266,7 +298,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
+.. _issue 32: https://github.com/coveragepy/django_coverage_plugin/issues/32
v1.4.1 — 2017-01-25
@@ -288,8 +320,8 @@
engine is supported, and it must be configured with
``['OPTIONS']['debug'] = True``. Fixes `issue 27`_.
-.. _issue 28: https://github.com/nedbat/django_coverage_plugin/issues/28
-.. _issue 27: https://github.com/nedbat/django_coverage_plugin/issues/27
+.. _issue 28: https://github.com/coveragepy/django_coverage_plugin/issues/28
+.. _issue 27: https://github.com/coveragepy/django_coverage_plugin/issues/27
@@ -299,7 +331,7 @@
Settings are read slightly differently, so as to not interfere with
programs that don't need settings. Fixes `issue 18`_.
-.. _issue 18: https://github.com/nedbat/django_coverage_plugin/issues/18
+.. _issue 18: https://github.com/coveragepy/django_coverage_plugin/issues/18
@@ -335,7 +367,7 @@
Potential Django 1.9 support is included, but the patch to Django hasn't
been applied yet.
-.. _issue 17: https://github.com/nedbat/django_coverage_plugin/issues/17
+.. _issue 17: https://github.com/coveragepy/django_coverage_plugin/issues/17
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/django_coverage_plugin-3.2.0/django_coverage_plugin/__init__.py
new/django_coverage_plugin-3.2.2/django_coverage_plugin/__init__.py
--- old/django_coverage_plugin-3.2.0/django_coverage_plugin/__init__.py
2025-10-05 22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/django_coverage_plugin/__init__.py
2026-04-04 22:41:26.000000000 +0200
@@ -1,9 +1,9 @@
# 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
+# For details:
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
"""Django Template Coverage Plugin"""
-__version__ = "3.2.0"
+__version__ = "3.2.2"
from .plugin import DjangoTemplatePluginException # noqa
from .plugin import DjangoTemplatePlugin
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/django_coverage_plugin-3.2.0/django_coverage_plugin/plugin.py
new/django_coverage_plugin-3.2.2/django_coverage_plugin/plugin.py
--- old/django_coverage_plugin-3.2.0/django_coverage_plugin/plugin.py
2025-10-05 22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/django_coverage_plugin/plugin.py
2026-04-04 22:41:26.000000000 +0200
@@ -1,5 +1,5 @@
# 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
+# For details:
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
"""The Django template coverage plugin."""
@@ -349,6 +349,13 @@
if lines[0].isspace():
lineno += 1
num_lines -= 1
+ # When a tag is not at the start of a line, the preceding
+ # TEXT token ends with whitespace and no newline.
+ # That partial line is not executable content.
+ if num_lines > 0 and (
+ lines[-1].isspace() and not lines[-1].endswith(("\n",
"\r"))
+ ):
+ num_lines -= 1
source_lines.update(range(lineno, lineno+num_lines))
if SHOW_PARSING:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/howto.txt
new/django_coverage_plugin-3.2.2/howto.txt
--- old/django_coverage_plugin-3.2.0/howto.txt 2025-10-05 22:05:10.000000000
+0200
+++ new/django_coverage_plugin-3.2.2/howto.txt 2026-04-04 22:41:26.000000000
+0200
@@ -3,14 +3,9 @@
- Version number in __init__.py
- Classifiers in pyproject.toml
https://pypi.python.org/pypi?%3Aaction=list_classifiers
- eg:
- Development Status :: 3 - Alpha
- Development Status :: 5 - Production/Stable
- Copyright date in NOTICE.txt
- Update README.rst with latest changes
- Kits:
- $ make clean dist
- $ make test_pypi
- $ make pypi
$ make tag
+ # .github/workflows/publish.yml publishes with trusted publishing
$ make ghrelease
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/pyproject.toml
new/django_coverage_plugin-3.2.2/pyproject.toml
--- old/django_coverage_plugin-3.2.0/pyproject.toml 2025-10-05
22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/pyproject.toml 2026-04-04
22:41:26.000000000 +0200
@@ -1,5 +1,5 @@
# 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
+# For details:
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
[build-system]
requires = ["setuptools>=77.0", "wheel"]
@@ -17,9 +17,8 @@
"Development Status :: 5 - Production/Stable",
"Environment :: Console",
"Framework :: Django",
- "Framework :: Django :: 3.2",
- "Framework :: Django :: 4.2",
"Framework :: Django :: 5.2",
+ "Framework :: Django :: 6.0",
"Intended Audience :: Developers",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3.10",
@@ -40,9 +39,9 @@
dynamic = ["version"]
[project.urls]
-"Homepage" = "https://github.com/nedbat/django_coverage_plugin"
-"Bug Tracker" = "https://github.com/nedbat/django_coverage_plugin/issues"
-"Source" = "https://github.com/nedbat/django_coverage_plugin"
+"Homepage" = "https://github.com/coveragepy/django_coverage_plugin"
+"Bug Tracker" = "https://github.com/coveragepy/django_coverage_plugin/issues"
+"Source" = "https://github.com/coveragepy/django_coverage_plugin"
[tool.setuptools.dynamic]
version = {attr = "django_coverage_plugin.__version__"}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/tests/__init__.py
new/django_coverage_plugin-3.2.2/tests/__init__.py
--- old/django_coverage_plugin-3.2.0/tests/__init__.py 2025-10-05
22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/tests/__init__.py 2026-04-04
22:41:26.000000000 +0200
@@ -1,5 +1,5 @@
# 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
+# For details:
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
"""The tests for the Django Coverage Plugin."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/tests/banner.py
new/django_coverage_plugin-3.2.2/tests/banner.py
--- old/django_coverage_plugin-3.2.0/tests/banner.py 2025-10-05
22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/tests/banner.py 2026-04-04
22:41:26.000000000 +0200
@@ -1,5 +1,5 @@
# 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
+# For details:
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
"""For printing the versions from tox.ini."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/tests/conftest.py
new/django_coverage_plugin-3.2.2/tests/conftest.py
--- old/django_coverage_plugin-3.2.0/tests/conftest.py 2025-10-05
22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/tests/conftest.py 2026-04-04
22:41:26.000000000 +0200
@@ -1,5 +1,5 @@
# 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
+# For details:
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
"""
Pytest auto configuration.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/tests/plugin_test.py
new/django_coverage_plugin-3.2.2/tests/plugin_test.py
--- old/django_coverage_plugin-3.2.0/tests/plugin_test.py 2025-10-05
22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/tests/plugin_test.py 2026-04-04
22:41:26.000000000 +0200
@@ -1,5 +1,5 @@
# 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
+# For details:
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
"""Base classes and helpers for testing the plugin."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/tests/test_engines.py
new/django_coverage_plugin-3.2.2/tests/test_engines.py
--- old/django_coverage_plugin-3.2.0/tests/test_engines.py 2025-10-05
22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/tests/test_engines.py 2026-04-04
22:41:26.000000000 +0200
@@ -1,5 +1,5 @@
# 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
+# For details:
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
"""Tests of multiple engines for django_coverage_plugin."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/tests/test_extends.py
new/django_coverage_plugin-3.2.2/tests/test_extends.py
--- old/django_coverage_plugin-3.2.0/tests/test_extends.py 2025-10-05
22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/tests/test_extends.py 2026-04-04
22:41:26.000000000 +0200
@@ -1,5 +1,5 @@
# 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
+# For details:
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
"""Tests of template inheritance for django_coverage_plugin."""
@@ -95,6 +95,74 @@
self.assert_analysis([1, 2, 3], name="base.html")
self.assert_analysis([1, 4, 8], [8], name="specific.html")
+ def test_empty_parent_block_on_new_line_when_extended(self):
+ """
+ When a block is empty and extended, endblock should not appear
+ as an uncovered line.
+
+ https://github.com/coveragepy/django_coverage_plugin/issues/74
+ """
+ self.make_template(name="base.html", text="""\
+ Hello
+ {% block content %}
+ {% endblock content %}
+ Goodbye
+ """)
+ self.make_template(name="child.html", text="""\
+ {% extends "base.html" %}
+ {% block content %}
+ Override
+ {% endblock %}
+ """)
+ text = self.run_django_coverage(name="child.html")
+ self.assert_analysis([1, 2, 4], name="base.html")
+ self.assert_analysis([1, 3], name="child.html")
+ self.assertEqual(text.strip(), "Hello\n \n Override\n\nGoodbye")
+
+ def test_non_empty_parent_block_when_extended(self):
+ self.make_template(name="base.html", text="""\
+ Hello
+ {% block content %}
+ This line should be reported as uncovered.
+ {% endblock content %}
+ Goodbye
+ """)
+ self.make_template(name="child.html", text="""\
+ {% extends "base.html" %}
+ {% block content %}
+ Override
+ {% endblock %}
+ """)
+ text = self.run_django_coverage(name="child.html")
+ self.assert_analysis([1, 2, 3, 5], missing=[3], name="base.html")
+ self.assert_analysis([1, 3], name="child.html")
+
+ self.assertEqual(text.strip(), "Hello\n \n Override\n\nGoodbye")
+
+ def test_nested_blocks_outer_endblock_on_its_own_line(self):
+ """
+ When blocks are nested, on their own lines, and extended,
+ then endblock should not appear as uncovered.
+
+ Ref: https://github.com/coveragepy/django_coverage_plugin/issues/74
+ """
+ self.make_template(name="base.html", text="""\
+ {% block outer %}
+ {% block inner %}
+ {% endblock inner %}
+ {% endblock outer %}
+ """)
+ self.make_template(name="child.html", text="""\
+ {% extends "base.html" %}
+ {% block inner %}
+ Override
+ {% endblock %}
+ """)
+ text = self.run_django_coverage(name="child.html")
+ self.assert_analysis([1, 2], missing=[], name="base.html")
+ self.assert_analysis([1, 3], name="child.html")
+ self.assertEqual(text.strip(), "Override")
+
class LoadTest(DjangoPluginTestCase):
def test_load(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/tests/test_flow.py
new/django_coverage_plugin-3.2.2/tests/test_flow.py
--- old/django_coverage_plugin-3.2.0/tests/test_flow.py 2025-10-05
22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/tests/test_flow.py 2026-04-04
22:41:26.000000000 +0200
@@ -1,5 +1,5 @@
# 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
+# For details:
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
"""Tests of control-flow structures for django_coverage_plugin."""
@@ -25,6 +25,31 @@
self.assertEqual(text.strip(), '')
self.assert_analysis([1, 2], [2])
+ def test_endif_not_at_start_of_line(self):
+ self.make_template("""\
+ <article>
+ {% if foo %}
+ Hello
+ {% endif %}
+ After
+ </article>
+ """)
+ self.run_django_coverage(context={'foo': False})
+ self.assert_analysis([1, 2, 3, 5, 6], missing=[3])
+
+ def test_else_not_at_start_of_line(self):
+ self.make_template("""\
+ <article>
+ {% if foo %}
+ Hello
+ {% else %}
+ Goodbye
+ {% endif %}
+ </article>
+ """)
+ self.run_django_coverage(context={'foo': True})
+ self.assert_analysis([1, 2, 3, 5, 7], missing=[5])
+
def test_if_else(self):
self.make_template("""\
{% if foo %}
@@ -84,6 +109,17 @@
self.assertEqual(text, "Before\n\nAfter\n")
self.assert_analysis([1, 2, 3, 5], [3])
+ def test_endfor_not_at_start_of_line(self):
+ self.make_template("""\
+ <ul>
+ {% for item in items %}
+ <li>{{ item }}</li>
+ {% endfor %}
+ </ul>
+ """)
+ self.run_django_coverage(context={'items': []})
+ self.assert_analysis([1, 2, 3, 5], missing=[3])
+
def test_loop_with_empty_clause(self):
self.make_template("""\
Before
@@ -135,7 +171,7 @@
<ul><li>New York: 20</li><li>Chicago: 7</li></ul></li><li>Japan
<ul><li>Tokyo: 33</li></ul></li></ul>
"""))
- self.assert_analysis([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13])
+ self.assert_analysis([1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 13])
class IfChangedTest(DjangoPluginTestCase):
@@ -154,7 +190,7 @@
'items': [("A", "X"), ("A", "Y"), ("B", "Z"), ("B", "W")],
})
self.assertEqual(squashed(text), 'AXYBZW')
- self.assert_analysis([1, 2, 3, 4, 5])
+ self.assert_analysis([1, 2, 3, 5])
def test_ifchanged_variable(self):
self.make_template("""\
@@ -170,7 +206,7 @@
'items': [("A", "X"), ("A", "Y"), ("B", "Z"), ("B", "W")],
})
self.assertEqual(squashed(text), 'AXYBZW')
- self.assert_analysis([1, 2, 3, 4, 5])
+ self.assert_analysis([1, 2, 3, 5])
@django_stop_before(4, 0)
@@ -190,7 +226,7 @@
'items': [(0, 'A'), (1, 'X'), (2, 'X'), (3, 'B')],
})
self.assertEqual(squashed(text), '0X1X23')
- self.assert_analysis([1, 2, 3, 4, 5])
+ self.assert_analysis([1, 2, 3, 5])
def test_ifnotequal(self):
self.make_template("""\
@@ -206,4 +242,4 @@
'items': [(0, 'A'), (1, 'X'), (2, 'X'), (3, 'B')],
})
self.assertEqual(squashed(text), 'X012X3')
- self.assert_analysis([1, 2, 3, 4, 5])
+ self.assert_analysis([1, 2, 3, 5])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/tests/test_helpers.py
new/django_coverage_plugin-3.2.2/tests/test_helpers.py
--- old/django_coverage_plugin-3.2.0/tests/test_helpers.py 2025-10-05
22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/tests/test_helpers.py 2026-04-04
22:41:26.000000000 +0200
@@ -1,5 +1,5 @@
# 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
+# For details:
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
"""Test helpers for the django coverage plugin."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/tests/test_html.py
new/django_coverage_plugin-3.2.2/tests/test_html.py
--- old/django_coverage_plugin-3.2.0/tests/test_html.py 2025-10-05
22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/tests/test_html.py 2026-04-04
22:41:26.000000000 +0200
@@ -1,5 +1,5 @@
# 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
+# For details:
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
"""Tests of HTML reporting for django_coverage_plugin."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/tests/test_i18n.py
new/django_coverage_plugin-3.2.2/tests/test_i18n.py
--- old/django_coverage_plugin-3.2.0/tests/test_i18n.py 2025-10-05
22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/tests/test_i18n.py 2026-04-04
22:41:26.000000000 +0200
@@ -1,5 +1,5 @@
# 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
+# For details:
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
"""Tests of i18n tags for django_coverage_plugin."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/tests/test_settings.py
new/django_coverage_plugin-3.2.2/tests/test_settings.py
--- old/django_coverage_plugin-3.2.0/tests/test_settings.py 2025-10-05
22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/tests/test_settings.py 2026-04-04
22:41:26.000000000 +0200
@@ -1,5 +1,5 @@
# 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
+# For details:
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
"""Settings tests for django_coverage_plugin."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/tests/test_simple.py
new/django_coverage_plugin-3.2.2/tests/test_simple.py
--- old/django_coverage_plugin-3.2.0/tests/test_simple.py 2025-10-05
22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/tests/test_simple.py 2026-04-04
22:41:26.000000000 +0200
@@ -1,5 +1,5 @@
# 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
+# For details:
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
"""Simple tests for django_coverage_plugin."""
@@ -238,6 +238,17 @@
self.assertEqual(text, "\nalpha = 1, beta = 2.\n\n")
self.assert_analysis([1, 2])
+ def test_endwith_not_at_start_of_line(self):
+ self.make_template("""\
+ <div>
+ {% with alpha=1 %}
+ {{ alpha }}
+ {% endwith %}
+ </div>
+ """)
+ self.run_django_coverage()
+ self.assert_analysis([1, 2, 3, 5])
+
class StringTemplateTest(DjangoPluginTestCase):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/tests/test_source.py
new/django_coverage_plugin-3.2.2/tests/test_source.py
--- old/django_coverage_plugin-3.2.0/tests/test_source.py 2025-10-05
22:05:10.000000000 +0200
+++ new/django_coverage_plugin-3.2.2/tests/test_source.py 2026-04-04
22:41:26.000000000 +0200
@@ -1,5 +1,5 @@
# 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
+# For details:
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
"""Tests of template inheritance for django_coverage_plugin."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django_coverage_plugin-3.2.0/tox.ini
new/django_coverage_plugin-3.2.2/tox.ini
--- old/django_coverage_plugin-3.2.0/tox.ini 2025-10-05 22:05:10.000000000
+0200
+++ new/django_coverage_plugin-3.2.2/tox.ini 2026-04-04 22:41:26.000000000
+0200
@@ -1,5 +1,5 @@
# 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
+# For details:
https://github.com/coveragepy/django_coverage_plugin/blob/main/NOTICE.txt
# tox configuration for django_coverage_plugin.
#
@@ -15,21 +15,20 @@
[tox]
# When changing this, also update the classifiers in setup.py:
envlist =
- py310-django{32,42,52}-cov{6,7,tip},
- py311-django{42,52}-cov{6,7,tip},
- py312-django{52,tip}-cov{7,tip},
- py313-django{52,tip}-cov{7,tip},
- py314-django{52,tip}-cov{7,tip},
+ py310-django52-cov{6,7,tip},
+ py311-django52-cov{6,7,tip},
+ py312-django{52,60,tip}-cov{7,tip},
+ py313-django{52,60,tip}-cov{7,tip},
+ py314-django{52,60,tip}-cov{7,tip},
check,pkgcheck,doc
[testenv]
deps =
cov6: coverage>=6.0,<7.0
cov7: coverage>=7.0,<8.0
- covtip: git+https://github.com/nedbat/coveragepy.git
- django32: Django>=3.2,<4.0
- django42: Django>=4.2,<5.0
+ covtip: git+https://github.com/coveragepy/coveragepy.git
django52: Django>=5.2,<6.0
+ django60: Django>=6.0,<7.0
djangotip: git+https://github.com/django/django.git
pytest
unittest-mixins==1.6