mirror of
https://github.com/astral-sh/ruff.git
synced 2025-10-03 15:14:42 +00:00
Fix incorrect doc in shebang-not-executable (EXE001)
and add git+windows solution to executable bit (#15208)
Some checks are pending
CI / Determine changes (push) Waiting to run
CI / cargo fmt (push) Waiting to run
CI / cargo clippy (push) Blocked by required conditions
CI / cargo test (linux) (push) Blocked by required conditions
CI / cargo test (linux, release) (push) Blocked by required conditions
CI / cargo test (windows) (push) Blocked by required conditions
CI / cargo test (wasm) (push) Blocked by required conditions
CI / cargo build (release) (push) Waiting to run
CI / cargo build (msrv) (push) Blocked by required conditions
CI / cargo fuzz build (push) Blocked by required conditions
CI / fuzz parser (push) Blocked by required conditions
CI / test scripts (push) Blocked by required conditions
CI / ecosystem (push) Blocked by required conditions
CI / cargo shear (push) Blocked by required conditions
CI / python package (push) Waiting to run
CI / pre-commit (push) Waiting to run
CI / mkdocs (push) Waiting to run
CI / formatter instabilities and black similarity (push) Blocked by required conditions
CI / test ruff-lsp (push) Blocked by required conditions
CI / benchmarks (push) Blocked by required conditions
Some checks are pending
CI / Determine changes (push) Waiting to run
CI / cargo fmt (push) Waiting to run
CI / cargo clippy (push) Blocked by required conditions
CI / cargo test (linux) (push) Blocked by required conditions
CI / cargo test (linux, release) (push) Blocked by required conditions
CI / cargo test (windows) (push) Blocked by required conditions
CI / cargo test (wasm) (push) Blocked by required conditions
CI / cargo build (release) (push) Waiting to run
CI / cargo build (msrv) (push) Blocked by required conditions
CI / cargo fuzz build (push) Blocked by required conditions
CI / fuzz parser (push) Blocked by required conditions
CI / test scripts (push) Blocked by required conditions
CI / ecosystem (push) Blocked by required conditions
CI / cargo shear (push) Blocked by required conditions
CI / python package (push) Waiting to run
CI / pre-commit (push) Waiting to run
CI / mkdocs (push) Waiting to run
CI / formatter instabilities and black similarity (push) Blocked by required conditions
CI / test ruff-lsp (push) Blocked by required conditions
CI / benchmarks (push) Blocked by required conditions
## Summary I noticed that the solution mentioned in [shebang-not-executable (EXE001)](https://docs.astral.sh/ruff/rules/shebang-not-executable/#shebang-not-executable-exe001) was incorrect and likely copy-pasted from [shebang-missing-executable-file (EXE002)](https://docs.astral.sh/ruff/rules/shebang-missing-executable-file/#shebang-missing-executable-file-exe002) It was telling users to remove the executable bit from a non-executable file. Which does nothing. I also noticed locally that: - `chmod` wouldn't cause any file change to be noticed by git (`EXE` was also passing locally) under WSL - Using git allows anyone to fix this lint across OSes, for projects with CIs using git So I added a solution using [git update-index --chmod](https://git-scm.com/docs/git-update-index#Documentation/git-update-index.txt---chmod-x) ## Test Plan No test plan, doc changes only. As for running the chmod commands: https://github.com/python/typeshed/pull/13346
This commit is contained in:
parent
86bdc2e7b1
commit
ecf00cdf6a
2 changed files with 7 additions and 6 deletions
|
@ -27,7 +27,8 @@ use crate::rules::flake8_executable::helpers::is_executable;
|
||||||
/// #!/usr/bin/env python
|
/// #!/usr/bin/env python
|
||||||
/// ```
|
/// ```
|
||||||
///
|
///
|
||||||
/// Otherwise, remove the executable bit from the file (e.g., `chmod -x __main__.py`).
|
/// Otherwise, remove the executable bit from the file
|
||||||
|
/// (e.g., `chmod -x __main__.py` or `git update-index --chmod=-x __main__.py`).
|
||||||
///
|
///
|
||||||
/// A file is considered executable if it has the executable bit set (i.e., its
|
/// A file is considered executable if it has the executable bit set (i.e., its
|
||||||
/// permissions mode intersects with `0o111`). As such, _this rule is only
|
/// permissions mode intersects with `0o111`). As such, _this rule is only
|
||||||
|
@ -35,6 +36,7 @@ use crate::rules::flake8_executable::helpers::is_executable;
|
||||||
///
|
///
|
||||||
/// ## References
|
/// ## References
|
||||||
/// - [Python documentation: Executable Python Scripts](https://docs.python.org/3/tutorial/appendix.html#executable-python-scripts)
|
/// - [Python documentation: Executable Python Scripts](https://docs.python.org/3/tutorial/appendix.html#executable-python-scripts)
|
||||||
|
/// - [Git documentation: `git update-index --chmod`](https://git-scm.com/docs/git-update-index#Documentation/git-update-index.txt---chmod-x)
|
||||||
#[derive(ViolationMetadata)]
|
#[derive(ViolationMetadata)]
|
||||||
pub(crate) struct ShebangMissingExecutableFile;
|
pub(crate) struct ShebangMissingExecutableFile;
|
||||||
|
|
||||||
|
|
|
@ -22,12 +22,10 @@ use crate::rules::flake8_executable::helpers::is_executable;
|
||||||
/// executable. If a file contains a shebang but is not executable, then the
|
/// executable. If a file contains a shebang but is not executable, then the
|
||||||
/// shebang is misleading, or the file is missing the executable bit.
|
/// shebang is misleading, or the file is missing the executable bit.
|
||||||
///
|
///
|
||||||
/// If the file is meant to be executable, add a shebang, as in:
|
/// If the file is meant to be executable, add the executable bit to the file
|
||||||
/// ```python
|
/// (e.g., `chmod +x __main__.py` or `git update-index --chmod=+x __main__.py`).
|
||||||
/// #!/usr/bin/env python
|
|
||||||
/// ```
|
|
||||||
///
|
///
|
||||||
/// Otherwise, remove the executable bit from the file (e.g., `chmod -x __main__.py`).
|
/// Otherwise, remove the shebang.
|
||||||
///
|
///
|
||||||
/// A file is considered executable if it has the executable bit set (i.e., its
|
/// A file is considered executable if it has the executable bit set (i.e., its
|
||||||
/// permissions mode intersects with `0o111`). As such, _this rule is only
|
/// permissions mode intersects with `0o111`). As such, _this rule is only
|
||||||
|
@ -40,6 +38,7 @@ use crate::rules::flake8_executable::helpers::is_executable;
|
||||||
///
|
///
|
||||||
/// ## References
|
/// ## References
|
||||||
/// - [Python documentation: Executable Python Scripts](https://docs.python.org/3/tutorial/appendix.html#executable-python-scripts)
|
/// - [Python documentation: Executable Python Scripts](https://docs.python.org/3/tutorial/appendix.html#executable-python-scripts)
|
||||||
|
/// - [Git documentation: `git update-index --chmod`](https://git-scm.com/docs/git-update-index#Documentation/git-update-index.txt---chmod-x)
|
||||||
#[derive(ViolationMetadata)]
|
#[derive(ViolationMetadata)]
|
||||||
pub(crate) struct ShebangNotExecutable;
|
pub(crate) struct ShebangNotExecutable;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue