]> git.lizzy.rs Git - rust.git/commit
Run benchmarks once, as a test by default.
authorHuon Wilson <dbau.pp+github@gmail.com>
Sat, 2 May 2015 03:38:51 +0000 (13:38 +1000)
committerHuon Wilson <dbau.pp+github@gmail.com>
Sat, 2 May 2015 05:45:23 +0000 (15:45 +1000)
commitd73545ceca711f88e3e79120c77fa83c2a1994e7
treeed1e5e99796f04ced7d31fa00393274c96552586
parentb59403606953d01391c1faa38d96062e3dfafa3d
Run benchmarks once, as a test by default.

E.g. if `foo.rs` looks like

    #![feature(test)]
    extern crate test;

    #[bench]
    fn bar(b: &mut test::Bencher) {
        b.iter(|| {
            1
        })
    }

    #[test]
    fn baz() {}

    #[bench]
    fn qux(b: &mut test::Bencher) {
        b.iter(|| {
            panic!()
        })
    }

Then

    $ rustc --test foo.rs
    $ ./foo

    running 3 tests
    test baz ... ok
    test qux ... FAILED
    test bar ... ok

    failures:

    ---- qux stdout ----
     thread 'qux' panicked at 'explicit panic', bench.rs:17

    failures:
        qux

    test result: FAILED. 2 passed; 1 failed; 0 ignored; 0 measured

    $ ./foo --bench ba

    running 2 tests
    test baz ... ignored
    test bar ... bench:        97 ns/iter (+/- 74)

    test result: ok. 0 passed; 0 failed; 1 ignored; 1 measured

In particular, the two benchmark are being run as tests in the default
mode.

This helps for the main distribution, since benchmarks are only run with
`PLEASE_BENCH=1`, which is rarely set (and never set on the test bots),
and helps for code-coverage tools: benchmarks are run and so don't count
as dead code.

Fixes #15842.
src/compiletest/compiletest.rs
src/libtest/lib.rs