[rustdoc] Ensure that temporary doctest folder is correctly removed even if doctests failed Fixes #139899. The bug was due to the fact that if any doctest fails for any reason, we call `exit` (or it's called inside `libtest` if not edition 2024), meaning that `TempDir`'s destructor isn't called, and therefore the temporary folder isn't cleaned up. Took me a while to figure out how to reproduce but finally I was able to reproduce the bug with: `````rust #![doc(test(attr(deny(warnings))))] //! ``` //! let a = 12; //! ``` ````` And then I ensured that panicking doctests were cleaned up as well: `````rust //! ``` //! panic!(); //! ``` ````` And finally I checked if it was fixed for merged doctests too (`--edition 2024`). To make this work, I needed to add a new public function in `libtest` too which would call a function once all tests have been run. So only issue is: I have absolutely no idea how we can add a regression test for this fix. If anyone has an idea... r? `@notriddle` |
||
|---|---|---|
| .. | ||
| clean | ||
| doctest | ||
| formats | ||
| html | ||
| json | ||
| passes | ||
| theme | ||
| askama.toml | ||
| build.rs | ||
| Cargo.toml | ||
| config.rs | ||
| core.rs | ||
| display.rs | ||
| docfs.rs | ||
| doctest.rs | ||
| error.rs | ||
| externalfiles.rs | ||
| fold.rs | ||
| lib.rs | ||
| lint.rs | ||
| markdown.rs | ||
| README.md | ||
| scrape_examples.rs | ||
| theme.rs | ||
| visit.rs | ||
| visit_ast.rs | ||
| visit_lib.rs | ||
For more information about how librustdoc works, see the rustc dev guide.