Skip to content

Invalid test usage in Jinja2 isn't caught by linter #153

Open
@miketheman

Description

Describe the bug

When writing a Jinja2 template, using the expression if foo is None: does not trigger a linter error, so we only find out about it during runtime, aka TemplateRuntimeError

Ref: https://jinja.palletsprojects.com/en/3.1.x/api/#jinja2.TemplateRuntimeError

Writing Python, it's common to use the if foo is None: syntax, and sadly curlylint didn't catch this before I deployed to prd and learned the hard way.

Which terms did you search for in the documentation and issue tracker?

is None

Environment

curlylint 0.13.1, running in either macOS or Linux.
I don't know if prior versions detected this, as it's new code we wrote and linted with the current version.

Steps to reproduce

  1. First, create an HTML template with the following content:
{% if foo is None: %}
foo is None!
{% endif %}
  1. Then, run curlylint against that file

Expected behavior

I would have expected that the linter would fail, and hopefully suggest that I use the valid lowercase none is the right way to use this comparison.

Actual behavior

Passes with no errors:

$ curlylint broken.html
All done! ✨ 🍰 ✨

Reproducible demo

See steps above for file content that demonstrates issue.

Other

I found this while using None, but the same would apply for True and False.

Some links:

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions