diff options
| author | bors <bors@rust-lang.org> | 2018-09-05 07:30:19 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2018-09-05 07:30:19 +0000 |
| commit | 3f13b27c2b6a1f83ee08a87c6134c86526edffc0 (patch) | |
| tree | 851bd551452a99115a72773b871f0d0f1433fcc4 /src/test/ui/custom_test_frameworks/dynamic.rs | |
| parent | 0be2c303692cab31390e52701007cfa87867bf74 (diff) | |
| parent | 0593dc7e3c9783f1c0bbbc8f017f9e914114e057 (diff) | |
Auto merge of #53410 - djrenren:custom-test-frameworks, r=alexcrichton
Introduce Custom Test Frameworks Introduces `#[test_case]` and `#[test_runner]` and re-implements `#[test]` and `#[bench]` in terms of them. Details found here: https://blog.jrenner.net/rust/testing/2018/08/06/custom-test-framework-prop.html
Diffstat (limited to 'src/test/ui/custom_test_frameworks/dynamic.rs')
| -rw-r--r-- | src/test/ui/custom_test_frameworks/dynamic.rs | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/test/ui/custom_test_frameworks/dynamic.rs b/src/test/ui/custom_test_frameworks/dynamic.rs new file mode 100644 index 00000000000..f82571b948a --- /dev/null +++ b/src/test/ui/custom_test_frameworks/dynamic.rs @@ -0,0 +1,45 @@ +// Copyright 2018 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// run-pass +// aux-build:dynamic_runner.rs +// compile-flags:--test +#![feature(custom_test_frameworks)] +#![test_runner(dynamic_runner::runner)] + +extern crate dynamic_runner; + +pub struct AllFoo(&'static str); +struct IsFoo(String); + +impl dynamic_runner::Testable for AllFoo { + fn name(&self) -> String { + String::from(self.0) + } + + fn subtests(&self) -> Vec<Box<dyn dynamic_runner::Testable>> { + self.0.split(" ").map(|word| + Box::new(IsFoo(word.into())) as Box<dyn dynamic_runner::Testable> + ).collect() + } +} + +impl dynamic_runner::Testable for IsFoo { + fn name(&self) -> String { + self.0.clone() + } + + fn run(&self) -> bool { + self.0 == "foo" + } +} + +#[test_case] +const TEST_2: AllFoo = AllFoo("foo foo"); |
