Skip to content

Add CI step for checking redundant test patches#7126

Merged
youknowone merged 6 commits intoRustPython:mainfrom
ShaharNaveh:lint-script-patches
Feb 15, 2026
Merged

Add CI step for checking redundant test patches#7126
youknowone merged 6 commits intoRustPython:mainfrom
ShaharNaveh:lint-script-patches

Conversation

@ShaharNaveh
Copy link
Contributor

@ShaharNaveh ShaharNaveh commented Feb 14, 2026

Summary by CodeRabbit

Chores

  • Improved continuous integration pipeline with enhanced Python code quality checks to automatically identify and report redundant test patches.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 14, 2026

📝 Walkthrough

Walkthrough

Adds a Python script to identify and flag redundant test patches in the codebase—test functions that solely invoke super().<test>() variants—and integrates this checker into the CI/CD pipeline via an automated lint step.

Changes

Cohort / File(s) Summary
CI/CD Workflow Integration
.github/workflows/ci.yaml
Updated lint job name and added Python environment setup with a new step to execute the redundant test patch checker script.
New Redundant Patch Detector
scripts/check_redundant_patches.py
New Python utility that parses test files, identifies test functions with no decorators, detects those matching super().() call patterns, and reports them as removable with file path, function name, and line number. Exits with non-zero status when matches are found.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • PR #6089: Relates to Python test AST processing for unittest-style wrapper patches; while this PR flags removable super().() wrappers, that PR handles generation and application of such patterns.

Suggested reviewers

  • youknowone
  • reactive-firewall

Poem

🐰 A hop and a skip through AST nodes so fine,
We hunt redundant patches that simply align,
With super().() calls, oh what a sight!
The CI now checks them—removed overnight,
One rabbit's joy: cleaner code done right! ✨

🚥 Pre-merge checks | ✅ 3 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 50.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Add CI step for checking redundant test patches' accurately describes the main change: adding a new CI workflow step (in .github/workflows/ci.yaml) that runs a script to check for redundant test patches.
Merge Conflict Detection ✅ Passed ✅ No merge conflicts detected when merging into main

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

No actionable comments were generated in the recent review. 🎉


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@youknowone
Copy link
Member

@ShaharNaveh Can this be auto-fix using update_lib instead just lint?

@ShaharNaveh
Copy link
Contributor Author

@ShaharNaveh Can this be auto-fix using update_lib instead just lint?

Yes, but I'd rather not doing that, for multiple reasons:

  • The update_lib is not stable enough imo.
  • We would run into issues where someone fixes something else, but this will cause the entire test file to be updated and it will add more stuff to the PR that can be out of scope.

@ShaharNaveh ShaharNaveh marked this pull request as ready for review February 14, 2026 14:26
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Fix all issues with AI agents
In @.github/workflows/ci.yaml:
- Around line 462-470: Remove the duplicate checkout step: the workflow contains
two identical steps using "uses: actions/checkout@v6.0.2"; keep the first
checkout that precedes the "Check for redundant test patches" step and delete
the second "uses: actions/checkout@v6.0.2" entry to avoid re-checking out the
repo unnecessarily.

In `@scripts/check_redundant_patches.py`:
- Around line 18-23: The except SyntaxError block after calling
ast.parse(contents) currently uses pass, which lets execution continue to
ast.walk(tree) and causes NameError or stale-tree reuse; change the handler so
the file is skipped (e.g., continue out of the loop) or explicitly set tree =
None and skip calling ast.walk for that file — update the block around
ast.parse(contents) / ast.walk(tree) to ensure that when ast.parse raises
SyntaxError you do not call ast.walk on an undefined or previous tree.
🧹 Nitpick comments (2)
scripts/check_redundant_patches.py (2)

12-12: rglob("**/*.py") double-recurses; use rglob("*.py") instead.

Path.rglob already applies the pattern recursively, so the leading **/ is redundant. It still works, but rglob("*.py") is the idiomatic form.

Proposed fix
-    for file in TEST_DIR.rglob("**/*.py"):
+    for file in TEST_DIR.rglob("*.py"):

51-52: Prefer sys.exit() over the builtin exit().

sys is already imported. The builtin exit() is intended for the interactive interpreter; sys.exit() is the standard way to exit from scripts.

Proposed fix
 if __name__ == "__main__":
-    exit(main())
+    sys.exit(main())

@github-actions
Copy link
Contributor

Code has been automatically formatted

The code in this PR has been formatted using:

  • cargo fmt --all
    Please pull the latest changes before pushing again:
git pull origin lint-script-patches

@youknowone
Copy link
Member

@ShaharNaveh could you check coderabbitai reviews?

@youknowone
Copy link
Member

What i feel is this is a harmless glitch and automatically fixed when upgrading to next version. I'd rather not to bother contributors by that. Let's try how this work. We can disable it again if it reveals actually annoying.

@youknowone youknowone merged commit 64088bb into RustPython:main Feb 15, 2026
13 checks passed
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.

2 participants