Skip to content

Fix template tags missing when the tags module is imported during test collection - #64

Closed
izquierdo wants to merge 3 commits into
coveragepy:masterfrom
izquierdo:templatetags-bug
Closed

izquierdo wants to merge 3 commits into
coveragepy:masterfrom
izquierdo:templatetags-bug

Conversation

@izquierdo

Copy link
Copy Markdown
Contributor

I'm hitting this error

django.template.exceptions.TemplateSyntaxError: 'l10n' is not a registered tag library.

when trying to load Django's l10n library in a template while using pytest and django_coverage_plugin. Tests pass when the plugin is not used. This started happening after adding from django.templatetags.l10n import localize to a test module.

This happens in Python 3.6 with Django 1.11.

From my investigation of the issue, it's triggered in the following way:

I believe the root issue here is that check_debug() is trying to import template engines too early and that the if not apps.ready: check is not enough. Unfortunately I couldn't find any other way to detect that the engines have been loaded other than by looking at the internal variable _engines.

Can confirm that this fixes #63 using the test case attached there.

Wasn't able to add a test to this PR as the bug depends on pytest's collector.

@nedbat

nedbat commented May 25, 2021

Copy link
Copy Markdown
Member

Thanks, I've cherry-picked the fix commit as 6622791.

@nedbat nedbat closed this May 25, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Tests for template tags with pytest-xdist and pytest-cov break view tests using the template tags

2 participants