8000 Merge pull request #161 from jakkdl/pre_commit_support · python-trio/flake8-async@783b5d0 · GitHub
[go: up one dir, main page]

Skip to content

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 783b5d0

Browse files
authored
Merge pull request #161 from jakkdl/pre_commit_support
add libcst as install_requires, print errors to stderr & return 1/0, add pre-commit hook & update config,
2 parents b4e05be + 1560ee2 commit 783b5d0

File tree

6 fil 10000 es changed

+57
-11
lines changed

6 files changed

+57
-11
lines changed

.pre-commit-config.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ repos:
1414
args: [--preview]
1515

1616
- repo: https://github.com/PyCQA/autoflake
17-
rev: v2.0.1
17+
rev: v2.0.2
1818
hooks:
1919
- id: autoflake
2020

@@ -35,7 +35,7 @@ repos:
3535
- id: mypy
3636

3737
- repo: https://github.com/RobertCraigie/pyright-python
38-
rev: v1.1.298
38+
rev: v1.1.299
3939
hooks:
4040
- id: pyright
4141
entry: env PYRIGHT_PYTHON_FORCE_VERSION=latest pyright
@@ -110,7 +110,7 @@ repos:
110110
- id: yamlfmt
111111

112112
- repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks
113-
rev: v2.7.0
113+
rev: v2.8.0
114114
hooks:
115115
- id: pretty-format-toml
116116
args: [--autofix]

.pre-commit-hooks.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
- id: flake8_trio
3+
name: flake8_trio
4+
entry: flake8_trio
5+
language: python
6+
types: [python]

flake8_trio/__init__.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ def cst_parse_module_native(source: str) -> cst.Module:
7474
return mod
7575

7676

77-
def main():
77+
def main() -> int:
7878
parser = ArgumentParser(prog="flake8_trio")
7979
parser.add_argument(
8080
nargs="*",
@@ -105,17 +105,20 @@ def main():
105105
"Doesn't seem to be a git repo; pass filenames to format.",
106106
file=sys.stderr,
107107
)
108-
sys.exit(1)
108+
return 1
109109
all_filenames = [
110110
os.path.join(root, f) for f in all_filenames if _should_format(f)
111111
]
112+
any_error = False
112113
for file in all_filenames:
113114
plugin = Plugin.from_filename(file)
114115
for error in sorted(plugin.run()):
115116
print(f"{file}:{error}")
117+
any_error = True
116118
if plugin.options.autofix:
117119
with open(file, "w") as file:
118120
file.write(plugin.module.code)
121+
return 1 if any_error else 0
119122

120123

121124
class Plugin:

flake8_trio/__main__.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
"""Entry file when executed with `python -m`."""
2+
import sys
3+
24
from . import main
35

4-
main()
6+
sys.exit(main())

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ def local_file(name: str) -> Path:
2929
license="MIT",
3030
description="A highly opinionated flake8 plugin for Trio-related problems.",
3131
zip_safe=False,
32-
install_requires=["flake8"],
32+
install_requires=["flake8", "libcst"],
3333
python_requires=">=3.9",
3434
classifiers=[
3535
"Development Status :: 3 - Alpha",

tests/test_config_and_args.py

Lines changed: 39 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
import pytest
1010

11-
from flake8_trio import Plugin
11+
from flake8_trio import Plugin, main
1212

1313
from .test_flake8_trio import initialize_options
1414

@@ -36,10 +36,44 @@ def test_run_flake8_trio(tmp_path: Path):
3636
cwd=tmp_path,
3737
capture_output=True,
3838
)
39+
assert res.returncode == 1
3940
assert not res.stderr
4041
assert res.stdout == err_msg.encode("ascii")
4142

4243

44+
def test_systemexit_0(
45+
tmp_path: Path, monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture[str]
46+
):
47+
monkeypatch.chdir(tmp_path)
48+
monkeypatch.setattr(sys, "argv", [tmp_path / "flake8_trio", "./example.py"])
49+
50+
tmp_path.joinpath("example.py").write_text("")
51+
52+
with pytest.raises(SystemExit) as exc_info:
53+
from flake8_trio import __main__ # noqa
54+
55+
assert exc_info.value.code == 0
56+
out, err = capsys.readouterr()
57+
assert not out
58+
assert not err
59+
60+
61+
def test_systemexit_1(
62+
tmp_path: Path, monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture[str]
63+
):
64+
err_msg = _common_error_setup(tmp_path)
65+
monkeypatch.chdir(tmp_path)
66+
monkeypatch.setattr(sys, "argv", [tmp_path / "flake8_trio", "./example.py"])
67+
68+
with pytest.raises(SystemExit) as exc_info:
69+
from flake8_trio import __main__ # noqa
70+
71+
assert exc_info.value.code == 1
72+
out, err = capsys.readouterr()
73+
assert out == err_msg
74+
assert not err
75+
76+
4377
def test_run_in_git_repo(tmp_path: Path):
4478
err_msg = _common_error_setup(tmp_path)
4579
assert subprocess.run(["git", "init"], cwd=tmp_path, capture_output=True)
@@ -51,6 +85,7 @@ def test_run_in_git_repo(tmp_path: Path):
5185
cwd=tmp_path,
5286
capture_output=True,
5387
)
88+
assert res.returncode == 1
5489
assert not res.stderr
5590
assert res.stdout == err_msg.encode("ascii")
5691

@@ -60,8 +95,7 @@ def test_run_no_git_repo(
6095
):
6196
monkeypatch.chdir(tmp_path)
6297
monkeypatch.setattr(sys, "argv", [tmp_path / "flake8_trio"])
63-
with pytest.raises(SystemExit):
64-
from flake8_trio import __main__ # noqa
98+
assert main() == 1
6599
out, err = capsys.readouterr()
66100
assert err == "Doesn't seem to be a git repo; pass filenames to format.\n"
67101
assert not out
@@ -75,7 +109,7 @@ def test_run_100_autofix(
75109
monkeypatch.setattr(
76110
sys, "argv", [tmp_path / "flake8_trio", "--autofix", "./example.py"]
77111
)
78-
from flake8_trio import __main__ # noqa
112+
assert main() == 1
79113

80114
out, err = capsys.readouterr()
81115
assert out == err_msg
@@ -189,6 +223,7 @@ def test_200_from_config_flake8_internals(
189223
def test_200_from_config_subprocess(tmp_path: Path):
190224
err_msg = _test_trio200_from_config_common(tmp_path)
191225
res = subprocess.run(["flake8"], cwd=tmp_path, capture_output=True)
226+
assert res.returncode == 1
192227
assert not res.stderr
193228
assert res.stdout == err_msg.encode("ascii")
194229

0 commit comments

Comments
 (0)
0