* test(#2764): no-path-literal-in-assert must flag membership/substring checks over path-returners
The equality-only visitor missed .includes/.indexOf/.startsWith/.endsWith over a
path-returning receiver (directly or via a .map() hop) — these pass lint and fail on
Windows. Add RuleTester invalid cases for each shape + valid cases for the
suppressions (POSIX-normalized receiver, non-path receiver, no-slash arg).
* fix(#2764): extend no-path-literal-in-assert to membership/substring checks over path-returners
Add a third CallExpression shape: .includes/.indexOf/.startsWith/.endsWith/.match
over a receiver that traces to a path-returning call (directly, or through ONE
.map(f => path-…) hop — the #2728 shape that passed lint and failed Windows CI).
Reuse isPathReturningCall/isPosixSlashStringLiteral/isPosixNormalizerCall; respect
the normalizer + Windows-excluded suppressions. The rule is scoped to tests/**/*.test.cjs.
* chore(#2764): changeset fragment
* test+docs(#2764): add .match test coverage, Windows-excluded membership case, fix doc accuracy (review findings)
- MAJOR: .match was supported but untested — add invalid (.match with slash) +
valid (.match no-slash) RuleTester cases.
- MINOR: Windows-excluded membership case was claimed by the matrix but absent —
add a platform-guard valid case in membership form.
- MINOR: .map() hop comment said 'ONE' but recursion allows nesting — reword to
'recursively'.
- Add known-boundary (d) note for the membership/.match shape.
- Fix a premature comment-close from a literal */ in the glob example.
* chore(#2764): backfill changeset PR number (2879)
---------
Co-authored-by: Test <test@example.com>