| # ruff-ecosystem |
| |
| Compare lint and format results for two different ruff versions (e.g. main and a PR) on real world projects. |
| |
| ## Installation |
| |
| From the Ruff project root, install with [uv](https://docs.astral.sh/uv/): |
| |
| ```shell |
| uv tool install -e ./python/ruff-ecosystem |
| ``` |
| |
| ## Usage |
| |
| ```shell |
| ruff-ecosystem <check | format> <baseline executable> <comparison executable> |
| ``` |
| |
| Note executable paths may be absolute, relative to the current working directory, or will be looked up in the |
| current Python environment and PATH. |
| |
| Run `ruff check` ecosystem checks comparing your debug build to your system Ruff: |
| |
| ```shell |
| ruff-ecosystem check ruff "./target/debug/ruff" |
| ``` |
| |
| Run `ruff format` ecosystem checks comparing your debug build to your system Ruff: |
| |
| ```shell |
| ruff-ecosystem format ruff "./target/debug/ruff" |
| ``` |
| |
| Run `ruff format` ecosystem checks comparing with changes to code that is already formatted: |
| |
| ```shell |
| ruff-ecosystem format ruff "./target/debug/ruff" --format-comparison ruff-then-ruff |
| ``` |
| |
| Run `ruff format` ecosystem checks comparing with the Black formatter: |
| |
| ```shell |
| ruff-ecosystem format black ruff -v --cache python/checkouts --format-comparison black-and-ruff |
| ``` |
| |
| The default output format is markdown, which includes nice summaries of the changes. You can use `--output-format json` to display the raw data — this is |
| particularly useful when making changes to the ecosystem checks. |
| |
| ## Development |
| |
| When developing, it can be useful to set the `--pdb` flag to drop into a debugger on failure: |
| |
| ```shell |
| ruff-ecosystem check ruff "./target/debug/ruff" --pdb |
| ``` |
| |
| You can also provide a path to cache checkouts to speed up repeated runs: |
| |
| ```shell |
| ruff-ecosystem check ruff "./target/debug/ruff" --cache ./repos |
| ``` |