mirror of
https://github.com/RustPython/RustPython.git
synced 2026-10-28 10:44:36 +08:00
Add CI step for checking redundant test patches (#7126)
This commit is contained in:
1 parent
0475671421
commit
1d0c8130bb
2 files changed
+60
-1
No files matched your search
@@ -456,10 +456,17 @@ jobs:
|
||||
run: python -I scripts/whats_left.py --no-default-features --features "$(sed -e 's/--[^ ]*//g' <<< "${{ env.CARGO_ARGS }}" | tr -d '[:space:]'),threading" # no jit on macOS for now
|
||||
|
||||
lint:
|
||||
name: Check Rust code with clippy
|
||||
name: Lint Rust & Python code
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v6.0.2
|
||||
- uses: actions/setup-python@v6.2.0
|
||||
with:
|
||||
python-version: ${{ env.PYTHON_VERSION }}
|
||||
|
||||
- name: Check for redundant test patches
|
||||
run: python scripts/check_redundant_patches.py
|
||||
|
||||
- uses: dtolnay/rust-toolchain@stable
|
||||
with:
|
||||
components: clippy
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
#!/usr/bin/env python
|
||||
import ast
|
||||
import pathlib
|
||||
import sys
|
||||
|
||||
ROOT = pathlib.Path(__file__).parents[1]
|
||||
TEST_DIR = ROOT / "Lib" / "test"
|
||||
|
||||
|
||||
def main():
|
||||
exit_status = 0
|
||||
for file in TEST_DIR.rglob("**/*.py"):
|
||||
try:
|
||||
contents = file.read_text(encoding="utf-8")
|
||||
except UnicodeDecodeError:
|
||||
continue
|
||||
|
||||
try:
|
||||
tree = ast.parse(contents)
|
||||
except SyntaxError:
|
||||
continue
|
||||
|
||||
for node in ast.walk(tree):
|
||||
if not isinstance(node, (ast.FunctionDef, ast.AsyncFunctionDef)):
|
||||
continue
|
||||
|
||||
name = node.name
|
||||
if not name.startswith("test"):
|
||||
continue
|
||||
|
||||
if node.decorator_list:
|
||||
continue
|
||||
|
||||
func_code = ast.unparse(node.body)
|
||||
if func_code in (
|
||||
f"await super().{name}()",
|
||||
f"return await super().{name}()",
|
||||
f"return super().{name}()",
|
||||
f"super().{name}()",
|
||||
):
|
||||
exit_status += 1
|
||||
rel = file.relative_to(ROOT)
|
||||
lineno = node.lineno
|
||||
print(
|
||||
f"{rel}:{name}:{lineno} is a test patch that can be safely removed",
|
||||
file=sys.stderr,
|
||||
)
|
||||
return exit_status
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
exit(main())
|
||||
Reference in new issue
Block a user