rust/tests/ui/test-attrs
bors e5bb341f0e Auto merge of #111992 - ferrocene:pa-panic-abort-tests-bench, r=m-ou-se
Test benchmarks with `-Z panic-abort-tests`

During test execution, when a `#[bench]` benchmark is encountered it's executed once to check whether it works. Unfortunately that was not compatible with `-Z panic-abort-tests`: the feature works by spawning a subprocess for each test, which prevents the use of dynamic tests as we cannot pass closures to child processes, and before this PR the conversion from benchmark to test was done by turning benchmarks into dynamic tests whose closures execute the benchmark once.

The approach this PR took was to add two new kinds of `TestFn`s: `StaticBenchAsTestFn` and `DynBenchAsTestFn` (⚠️ **this is a breaking change** ⚠️). With that change, a `StaticBenchFn` can be converted into a `StaticBenchAsTestFn` without creating dynamic tests, and making it possible to test `#[bench]` functions with `-Z panic-abort-tests`. The subprocess test runner also had to be updated to perform the conversion from benchmark to test when appropriate.

Along with the bug fix, in the first commit I refactored how tests are executed: rather than executing the test function in multiple places across `libtest`, there is now a private `TestFn::into_runnable()` method, which returns either a `RunnableTest` or `RunnableBench`, on which you can call the `run()` method. This simplified the rest of the changes in the PR.

This PR is best reviewed commit-by-commit.
Fixes https://github.com/rust-lang/rust/issues/73509
2023-07-01 07:07:50 +00:00
..
auxiliary
custom-test-frameworks fix: fix ICE in custom-test-frameworks feature 2023-03-19 22:11:17 +13:00
decl-macro-test.rs
inaccessible-test-modules.rs
inaccessible-test-modules.stderr
issue-12997-1.rs Move tests 2023-05-08 17:58:01 -03:00
issue-12997-1.stderr Move tests 2023-05-08 17:58:01 -03:00
issue-12997-2.rs Move tests 2023-05-08 17:58:01 -03:00
issue-12997-2.stderr Move tests 2023-05-08 17:58:01 -03:00
issue-16597-empty.rs
issue-16597.rs
issue-20823.rs
issue-34932.rs Move tests 2023-05-08 17:58:01 -03:00
issue-36768.rs
issue-52557.rs
issue-53675-a-test-called-panic.rs
issue-109816.rs fix: ensure bad #[test] invocs retain correct AST 2023-04-07 14:32:55 +12:00
issue-109816.stderr fix: ensure bad #[test] invocs retain correct AST 2023-04-07 14:32:55 +12:00
run-unexported-tests.rs
test-attr-non-associated-functions.rs fix: ensure bad #[test] invocs retain correct AST 2023-04-07 14:32:55 +12:00
test-attr-non-associated-functions.stderr fix: ensure bad #[test] invocs retain correct AST 2023-04-07 14:32:55 +12:00
test-cant-be-shadowed.rs
test-filter-multiple.rs
test-filter-multiple.run.stdout
test-fn-signature-verification-for-explicit-return-type.rs Revert "Adjusting test to needs-unwind, with linking issue" 2023-05-26 15:08:36 +02:00
test-function-signature.rs Add test for test function signature verification. 2023-06-07 00:04:04 +02:00
test-function-signature.stderr Add test for test function signature verification. 2023-06-07 00:04:04 +02:00
test-main-not-dead-attr.rs
test-main-not-dead.rs
test-on-not-fn.rs
test-on-not-fn.stderr fix: ensure bad #[test] invocs retain correct AST 2023-04-07 14:32:55 +12:00
test-panic-abort-disabled.rs mark relevant tests as requiring unwinding 2023-06-14 12:52:00 +02:00
test-panic-abort-disabled.stderr
test-panic-abort-nocapture.rs
test-panic-abort-nocapture.run.stderr
test-panic-abort-nocapture.run.stdout
test-panic-abort.rs add tests on running benchmarks with -Z panic-abort-tests 2023-05-26 14:59:14 +02:00
test-panic-abort.run.stdout add tests on running benchmarks with -Z panic-abort-tests 2023-05-26 14:59:14 +02:00
test-panic-while-printing.rs
test-passed-wasm.rs
test-passed-wasm.run.stdout
test-passed.rs
test-passed.run.stdout
test-runner-hides-buried-main.rs
test-runner-hides-main.rs
test-runner-hides-start.rs
test-should-fail-good-message.rs
test-should-panic-attr.rs
test-should-panic-attr.stderr
test-thread-capture.rs
test-thread-capture.run.stdout
test-thread-nocapture.rs
test-thread-nocapture.run.stderr
test-thread-nocapture.run.stdout
test-type.rs remove needs-unwind attr for test with -Zpanic-abort-tests 2023-06-21 09:14:47 +02:00
test-type.run.stdout
test-vs-cfg-test.rs
test-warns-dead-code.rs
test-warns-dead-code.stderr
tests-listing-format-default.rs Implementing "<test_binary> --list --format json" #107307 #49359 2023-03-15 14:20:20 -04:00
tests-listing-format-default.run.stdout Implementing "<test_binary> --list --format json" #107307 #49359 2023-03-15 14:20:20 -04:00
tests-listing-format-json-without-unstableopts.rs Implementing "<test_binary> --list --format json" #107307 #49359 2023-03-15 14:20:20 -04:00
tests-listing-format-json-without-unstableopts.run.stderr libtest: Improve error when missing -Zunstable-options 2023-05-24 11:18:20 -05:00
tests-listing-format-json.rs update tests for the test harness's json formatting 2023-04-21 15:34:38 +02:00
tests-listing-format-json.run.stdout bless line changes in tests-listing-format-json.run.stdout 2023-04-28 09:22:29 -07:00
tests-listing-format-terse.rs Implementing "<test_binary> --list --format json" #107307 #49359 2023-03-15 14:20:20 -04:00
tests-listing-format-terse.run.stdout Implementing "<test_binary> --list --format json" #107307 #49359 2023-03-15 14:20:20 -04:00