Rust: Book: Testing is out-of-date

Created on 31 Mar 2015  路  8Comments  路  Source: rust-lang/rust

http://doc.rust-lang.org/book/testing.html

Probably because of feature staging.

Example:

extern crate test;

pub fn add_two(a: i32) -> i32 {
    a + 2
}

#[cfg(test)]
mod tests {
    use super::*;
    use test::Bencher;

    #[test]
    fn it_works() {
        assert_eq!(4, add_two(2));
    }

    #[bench]
    fn bench_add_two(b: &mut Bencher) {
        b.iter(|| add_two(2));
    }
}

Output:

me@me-desktop ~/projects/adder $ cargo bench -v
   Compiling adder v0.0.1 (file:///home/me/projects/adder)
     Running `rustc src/lib.rs --crate-name adder --crate-type lib -C opt-level=3 --test -C metadata=f6f930dd9a1ff1b4 -C extra-filename=-f6f930dd9a1ff1b4 --out-dir /home/me/projects/adder/target/release --emit=dep-info,link -L dependency=/home/me/projects/adder/target/release -L dependency=/home/me/projects/adder/target/release/deps`
src/lib.rs:1:1: 1:19 error: use of unstable library feature 'test'
src/lib.rs:1 extern crate test;
             ^~~~~~~~~~~~~~~~~~
src/lib.rs:1:19: 1:19 help: add #![feature(test)] to the crate attributes to enable
src/lib.rs:10:9: 10:22 error: use of unstable library feature 'test'
src/lib.rs:10     use test::Bencher;
                      ^~~~~~~~~~~~~
src/lib.rs:10:22: 10:22 help: add #![feature(test)] to the crate attributes to enable
src/lib.rs:18:30: 18:37 error: use of unstable library feature 'test'
src/lib.rs:18     fn bench_add_two(b: &mut Bencher) {
                                           ^~~~~~~
src/lib.rs:18:37: 18:37 help: add #![feature(test)] to the crate attributes to enable
src/lib.rs:19:11: 19:30 error: use of unstable library feature 'test'
src/lib.rs:19         b.iter(|| add_two(2));
                        ^~~~~~~~~~~~~~~~~~~
src/lib.rs:19:30: 19:30 help: add #![feature(test)] to the crate attributes to enable
error: aborting due to 4 previous errors
Could not compile `adder`.

Caused by:
  Process didn't exit successfully: `rustc src/lib.rs --crate-name adder --crate-type lib -C opt-level=3 --test -C metadata=f6f930dd9a1ff1b4 -C extra-filename=-f6f930dd9a1ff1b4 --out-dir /home/me/projects/adder/target/release --emit=dep-info,link -L dependency=/home/me/projects/adder/target/release -L dependency=/home/me/projects/adder/target/release/deps` (exit code: 101)

Most helpful comment

@KingOfThePirates @steveklabnik

Any ideas, where one can find full working example of benchmark?

Thanks!

All 8 comments

Yes, I should move this into the unstable parts. Thanks!

@KingOfThePirates @steveklabnik

Any ideas, where one can find full working example of benchmark?

Thanks!

@greyblake I'm not sure what you mean. does https://doc.rust-lang.org/stable/book/benchmark-tests.html not work?

@steveklabnik

The example does not work on the last stable (1.12.1):

   Compiling runbench v0.1.0 (file:///tmp/runbench)
error[E0554]: #[feature] may not be used on the stable release channel
 --> src/lib.rs:1:1
  |
1 | #![feature(test)]
  | ^^^^^^^^^^^^^^^^^

error: aborting due to previous error

error: Could not compile `runbench`.

To learn more, run the command again with --verbose.

I just figured out, however, it works on nightly (2016-11-02)

Yes, it's in the nightly-only section of the book, because it's not stable yet.

Ah) Now it makes sense to me! Thanks

I still don't understand how to make it work
I tried cargo +nightly bench
but didn't help

@arielgabizon I suggest you open a thread on users.rust-lang.org

Was this page helpful?
0 / 5 - 0 ratings