rust-lang / rust

Empowering everyone to build reliable and efficient software.
https://www.rust-lang.org
Other
98.76k stars 12.76k forks source link

Mention that std::fs::remove_dir_all fails on files #133298

Open n0toose opened 1 day ago

n0toose commented 1 day ago

This is explicitly mentioned for std::fs::remove_file.

It is more likely for a slightly lazy programmer to believe that removing a file would work and that they do not have to distinguish between directories (with contents) and files themself, because of the function's recursive nature and how it distinguishes between files and directories when removing them.

Follow-up for #133183.

rustbot commented 1 day ago

r? @Noratrieb

rustbot has assigned @Noratrieb. They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

n0toose commented 1 day ago

@joboet Hesitantly pinging you as well because you also reviewed my original PR. Not sure if r? will remove @Noratrieb as a reviewer ("one-reviewer-per-PR").

rust-log-analyzer commented 1 day ago

The job mingw-check-tidy failed! Check out the build log: (web) (plain)

Click to see the possible cause of the failure (guessed by this bot) ```plain COPY host-x86_64/mingw-check/validate-toolstate.sh /scripts/ COPY host-x86_64/mingw-check/validate-error-codes.sh /scripts/ # NOTE: intentionally uses python2 for x.py so we can test it still works. # validate-toolstate only runs in our CI, so it's ok for it to only support python3. ENV SCRIPT TIDY_PRINT_DIFF=1 python2.7 ../x.py test \ --stage 0 src/tools/tidy tidyselftest --extra-checks=py:lint,cpp:fmt # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # # pip-compile --allow-unsafe --generate-hashes reuse-requirements.in --- #13 2.799 Building wheels for collected packages: reuse #13 2.800 Building wheel for reuse (pyproject.toml): started #13 3.053 Building wheel for reuse (pyproject.toml): finished with status 'done' #13 3.055 Created wheel for reuse: filename=reuse-4.0.3-cp310-cp310-manylinux_2_35_x86_64.whl size=132720 sha256=026f3bb0f1aa8090b861fd0a0939cb1a782396d84c8aab7875096557d637a0f6 #13 3.055 Stored in directory: /tmp/pip-ephem-wheel-cache-qkwovogj/wheels/3d/8d/0a/e0fc6aba4494b28a967ab5eaf951c121d9c677958714e34532 #13 3.058 Installing collected packages: boolean-py, binaryornot, tomlkit, reuse, python-debian, markupsafe, license-expression, jinja2, chardet, attrs #13 3.448 Successfully installed attrs-23.2.0 binaryornot-0.4.4 boolean-py-4.0 chardet-5.2.0 jinja2-3.1.4 license-expression-30.3.0 markupsafe-2.1.5 python-debian-0.1.49 reuse-4.0.3 tomlkit-0.13.0 #13 3.449 WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv #13 3.977 Collecting virtualenv #13 3.977 Collecting virtualenv #13 4.016 Downloading virtualenv-20.27.1-py3-none-any.whl (3.1 MB) #13 4.078 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.1/3.1 MB 52.8 MB/s eta 0:00:00 #13 4.115 Collecting distlib<1,>=0.3.7 #13 4.119 Downloading distlib-0.3.9-py2.py3-none-any.whl (468 kB) #13 4.127 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 469.0/469.0 KB 84.5 MB/s eta 0:00:00 #13 4.161 Collecting filelock<4,>=3.12.2 #13 4.165 Downloading filelock-3.16.1-py3-none-any.whl (16 kB) #13 4.198 Collecting platformdirs<5,>=3.9.1 #13 4.201 Downloading platformdirs-4.3.6-py3-none-any.whl (18 kB) #13 4.284 Installing collected packages: distlib, platformdirs, filelock, virtualenv #13 4.461 Successfully installed distlib-0.3.9 filelock-3.16.1 platformdirs-4.3.6 virtualenv-20.27.1 #13 DONE 4.6s #14 [7/8] COPY host-x86_64/mingw-check/validate-toolstate.sh /scripts/ #14 DONE 0.0s --- DirectMap4k: 315328 kB DirectMap2M: 9121792 kB DirectMap1G: 9437184 kB ##[endgroup] Executing TIDY_PRINT_DIFF=1 python2.7 ../x.py test --stage 0 src/tools/tidy tidyselftest --extra-checks=py:lint,cpp:fmt + TIDY_PRINT_DIFF=1 python2.7 ../x.py test --stage 0 src/tools/tidy tidyselftest --extra-checks=py:lint,cpp:fmt Finished `dev` profile [unoptimized] target(s) in 0.04s ##[endgroup] downloading https://static.rust-lang.org/dist/2024-10-16/rustfmt-nightly-x86_64-unknown-linux-gnu.tar.xz extracting /checkout/obj/build/cache/2024-10-16/rustfmt-nightly-x86_64-unknown-linux-gnu.tar.xz to /checkout/obj/build/x86_64-unknown-linux-gnu/rustfmt --- ##[endgroup] fmt check Diff in /checkout/library/std/src/fs.rs:2806: /// /// `remove_dir_all` will fail if `remove_dir` or `remove_file` fail on any constituent paths, including the root `path`. /// As a result, the directory you are deleting must exist, meaning that this function is not idempotent. -/// /// Additionally, `remove_dir_all` will also fail if the `path` is not a directory. /// /// Consider ignoring the error if validating the removal is not required for your use case. /// Consider ignoring the error if validating the removal is not required for your use case. fmt error: Running `"/checkout/obj/build/x86_64-unknown-linux-gnu/rustfmt/bin/rustfmt" "--config-path" "/checkout" "--edition" "2021" "--unstable-features" "--skip-children" "--check" "/checkout/library/std/src/f16.rs" "/checkout/library/alloc/src/collections/vec_deque/macros.rs" "/checkout/library/alloc/src/collections/vec_deque/spec_extend.rs" "/checkout/library/alloc/src/collections/vec_deque/tests.rs" "/checkout/library/alloc/src/collections/vec_deque/iter_mut.rs" "/checkout/library/alloc/src/collections/vec_deque/spec_from_iter.rs" "/checkout/library/alloc/src/collections/vec_deque/mod.rs" "/checkout/library/alloc/src/collections/vec_deque/drain.rs" "/checkout/library/alloc/src/collections/mod.rs" "/checkout/library/alloc/src/macros.rs" "/checkout/library/std/src/error/tests.rs" "/checkout/library/std/src/ascii.rs" "/checkout/library/std/src/pipe/tests.rs" "/checkout/library/std/src/fs.rs" "/checkout/library/std/src/f128.rs" "/checkout/library/std/src/pipe.rs" "/checkout/library/std/src/path/tests.rs" "/checkout/library/std/src/pat.rs" "/checkout/library/std/src/keyword_docs.rs" "/checkout/library/alloc/src/vec/spec_from_iter_nested.rs" "/checkout/library/alloc/src/vec/in_place_drop.rs" "/checkout/library/alloc/src/vec/is_zero.rs" "/checkout/library/alloc/src/vec/set_len_on_drop.rs" "/checkout/library/alloc/src/vec/in_place_collect.rs" "/checkout/library/alloc/src/vec/into_iter.rs" "/checkout/library/alloc/src/vec/spec_extend.rs" "/checkout/library/alloc/src/vec/spec_from_elem.rs" "/checkout/library/alloc/src/vec/extract_if.rs" "/checkout/library/alloc/src/vec/cow.rs" "/checkout/library/alloc/src/vec/splice.rs" "/checkout/library/alloc/src/vec/partial_eq.rs" "/checkout/library/alloc/src/vec/spec_from_iter.rs" "/checkout/library/alloc/src/vec/mod.rs" "/checkout/library/alloc/src/vec/drain.rs" "/checkout/library/alloc/src/str.rs" "/checkout/library/alloc/src/tests.rs" "/checkout/library/alloc/src/raw_vec.rs" "/checkout/library/alloc/src/string.rs" "/checkout/library/alloc/src/lib.miri.rs" "/checkout/library/alloc/src/rc/tests.rs" "/checkout/library/alloc/src/slice.rs" "/checkout/library/alloc/src/raw_vec/tests.rs" "/checkout/library/alloc/src/alloc.rs" "/checkout/library/alloc/src/task.rs" "/checkout/library/alloc/src/lib.rs" "/checkout/library/alloc/src/alloc/tests.rs" "/checkout/library/alloc/src/sync.rs" "/checkout/library/std/src/sys/path/sgx.rs" "/checkout/library/std/src/sys/path/unsupported_backslash.rs" "/checkout/library/std/src/sys/path/windows/tests.rs" "/checkout/library/std/src/sys/path/windows.rs" "/checkout/library/std/src/sys/path/unix.rs" "/checkout/library/std/src/sys/path/mod.rs" "/checkout/library/std/src/sys/personality/dwarf/eh.rs" "/checkout/library/std/src/sys/personality/dwarf/tests.rs" "/checkout/library/std/src/sys/personality/dwarf/mod.rs" "/checkout/library/std/src/sys/personality/gcc.rs" "/checkout/library/std/src/sys/personality/emcc.rs" "/checkout/library/std/src/sys/personality/mod.rs" "/checkout/library/std/src/sys/cmath.rs" "/checkout/library/std/src/sys/backtrace.rs" "/checkout/library/std/src/sys/sync/once/queue.rs" "/checkout/library/std/src/sys/sync/once/futex.rs" "/checkout/library/alloc/src/collections/vec_deque/into_iter.rs"` failed. If you're running `tidy`, try again with `--bless`. Or, if you just want to format code, run `./x.py fmt` instead. local time: Thu Nov 21 15:26:03 UTC 2024 network time: Thu, 21 Nov 2024 15:26:03 GMT ##[error]Process completed with exit code 1. Post job cleanup. ```