Subject: 30.0.50; ert-font-lock doesn't handle list of faces
From: Troy Brown <[email-masked]>
To: [email-masked]
Cc: Vladimir Kazanov <[email-masked]>
Date: Sun, 10 Mar 2024 16:31:58 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

I'm trying to use this package to test out my tree-sitter mode, but am
running into an issue with lists of faces.  It's possible that the
face for a location in the buffer will contain a list of 1 or more
faces.  For example, when I use the ":override 'prepend" keyword in
the call to treesit-font-lock-rules, even if only a single face is
specified for the rule that matches that section of the buffer, this
will result in a list of one entry (i.e., "(face-name)").

When this happens, ert-font-lock fails to recognize that this matches
the face "face-name" (e.g., "^ face-name" will fail to match in this
case).  I feel the tool should recognize a list containing a single
face as matching the face.  Even worse however, it appears
ert-font-lock doesn't support a list of faces in the comment.  I tried
to work around the original issue by using "^ (face-name)", but the
tool silently ignores this, as it doesn't match the internal regular
expression (which ended up allowing my test to pass without actually
checking anything).

I can't figure out a way to use this tool in its current state due to
its lack of support for a list of faces.  Also, I find that since it
silently ignores incorrect comment syntax (e.g., "^face-name", "^
(face-name)"), it gives a false illusion that it's actually performing
those checks (and the checks are passing), when it's really just
ignoring them.  Maybe any comment line starting with a "^" or "<-"
should be considered an assertion check and to fail if the rest of the
syntax is not as expected.  Maybe it should also fail the test if no
assertion checks are found in a source file or string.

Even if the tool would allow a list of a single face to match the
supplied face in the comment, I think it should also allow for
multiple faces to be listed in the comment.  I have other places where
multiple faces are used (e.g., "(font-lock-constant-face
font-lock-variable-name-face)" to highlight a constant variable),
which would not be testable with the current state of the package.