ruff/crates
Zanie Blue 3000a47fe8
Include file permissions in key for cached files (#5901)
Reimplements https://github.com/astral-sh/ruff/pull/3104
Closes https://github.com/astral-sh/ruff/issues/5726

Note that we will generate the hash for a cache key twice in normal
operation. Once to check for the cached item and again to update the
cache. We could optimize this by generating the hash once in
`diagnostics::lint_file` and passing the `u64` into `get` and `update`.
We'd probably want to wrap it in a `CacheKeyHash` enum for type safety.

## Test plan

Unit tests for Windows and Unix.

Manual test with case from issue

```
❯ touch fake.py
❯ chmod +x fake.py
❯ ./target/debug/ruff --select EXE fake.py
fake.py:1:1: EXE002 The file is executable but no shebang is present
Found 1 error.
❯ chmod -x fake.py
❯ ./target/debug/ruff --select EXE fake.py
```
2023-07-25 17:06:47 +00:00
..
flake8_to_ruff Bump version to 0.0.280 (#5965) 2023-07-21 22:36:13 -04:00
ruff Fix example in D413 documentation (#6075) 2023-07-25 12:22:11 -04:00
ruff_benchmark Make `lint_only` aware of the source kind (#5876) 2023-07-19 09:29:35 +05:30
ruff_cache Only use a single cache file per Python package (#5117) 2023-06-19 17:46:13 +02:00
ruff_cli Include file permissions in key for cached files (#5901) 2023-07-25 17:06:47 +00:00
ruff_dev Add formatter progress tracking to CI (#5919) 2023-07-24 09:12:42 +00:00
ruff_diagnostics Run nightly Clippy over the Ruff repo (#5670) 2023-07-10 23:44:38 -04:00
ruff_formatter Playground: Fix escaped quotes handling (#5906) 2023-07-20 09:25:27 +00:00
ruff_index Add unreachable code rule (#5384) 2023-07-04 14:27:23 +00:00
ruff_macros Run nightly Clippy over the Ruff repo (#5670) 2023-07-10 23:44:38 -04:00
ruff_python_ast Placement refactor (#6034) 2023-07-25 11:49:05 +02:00
ruff_python_formatter Update `ArgumentsParentheses` usage (#6070) 2023-07-25 18:03:48 +02:00
ruff_python_resolver Fix CI by downgrading to cargo insta 1.29.0 (#5589) 2023-07-08 14:54:49 +00:00
ruff_python_semantic Replace `NoHashHasher` usages with `FxHashMap` (#6049) 2023-07-24 23:41:57 +00:00
ruff_python_stdlib Fix logging rules with whitespace around dot (#6022) 2023-07-24 05:14:48 +00:00
ruff_python_trivia `SimpleTokenizer`: Fix infinite loop when lexing empty quotes (#5917) 2023-07-20 15:18:35 +02:00
ruff_rustpython Use consistent `Cargo.toml` metadata in all crates (#5015) 2023-06-12 00:02:40 +00:00
ruff_shrinking Document formatter error shrinking (#5915) 2023-07-21 11:32:12 +02:00
ruff_textwrap Rename `ruff_python_whitespace` to `ruff_python_trivia` (#5886) 2023-07-19 11:48:27 -04:00
ruff_wasm Allow specification of `logging.Logger` re-exports via `logger-objects` (#5750) 2023-07-24 00:38:20 -04:00