| 1 | //! Enums denoting options for test execution. | 
| 2 |  | 
|---|
| 3 | /// Number of times to run a benchmarked function | 
|---|
| 4 | #[ derive(Clone, PartialEq, Eq)] | 
|---|
| 5 | pub(crate) enum BenchMode { | 
|---|
| 6 | Auto, | 
|---|
| 7 | Single, | 
|---|
| 8 | } | 
|---|
| 9 |  | 
|---|
| 10 | /// Whether test is expected to panic or not | 
|---|
| 11 | #[ derive(Copy, Clone, Debug, PartialEq, Eq, Hash)] | 
|---|
| 12 | pub enum ShouldPanic { | 
|---|
| 13 | No, | 
|---|
| 14 | Yes, | 
|---|
| 15 | YesWithMessage(&'static str), | 
|---|
| 16 | } | 
|---|
| 17 |  | 
|---|
| 18 | /// Whether should console output be colored or not | 
|---|
| 19 | #[ derive(Copy, Clone, Default, Debug)] | 
|---|
| 20 | pub enum ColorConfig { | 
|---|
| 21 | #[default] | 
|---|
| 22 | AutoColor, | 
|---|
| 23 | AlwaysColor, | 
|---|
| 24 | NeverColor, | 
|---|
| 25 | } | 
|---|
| 26 |  | 
|---|
| 27 | /// Format of the test results output | 
|---|
| 28 | #[ derive(Copy, Clone, Debug, Default, PartialEq, Eq)] | 
|---|
| 29 | pub enum OutputFormat { | 
|---|
| 30 | /// Verbose output | 
|---|
| 31 | Pretty, | 
|---|
| 32 | /// Quiet output | 
|---|
| 33 | #[default] | 
|---|
| 34 | Terse, | 
|---|
| 35 | /// JSON output | 
|---|
| 36 | Json, | 
|---|
| 37 | /// JUnit output | 
|---|
| 38 | Junit, | 
|---|
| 39 | } | 
|---|
| 40 |  | 
|---|
| 41 | /// Whether ignored test should be run or not | 
|---|
| 42 | #[ derive(Copy, Clone, Debug, PartialEq, Eq)] | 
|---|
| 43 | pub enum RunIgnored { | 
|---|
| 44 | Yes, | 
|---|
| 45 | No, | 
|---|
| 46 | /// Run only ignored tests | 
|---|
| 47 | Only, | 
|---|
| 48 | } | 
|---|
| 49 |  | 
|---|
| 50 | #[ derive(Clone, Copy)] | 
|---|
| 51 | pub enum RunStrategy { | 
|---|
| 52 | /// Runs the test in the current process, and sends the result back over the | 
|---|
| 53 | /// supplied channel. | 
|---|
| 54 | InProcess, | 
|---|
| 55 |  | 
|---|
| 56 | /// Spawns a subprocess to run the test, and sends the result back over the | 
|---|
| 57 | /// supplied channel. Requires `argv[0]` to exist and point to the binary | 
|---|
| 58 | /// that's currently running. | 
|---|
| 59 | SpawnPrimary, | 
|---|
| 60 | } | 
|---|
| 61 |  | 
|---|
| 62 | /// Options for the test run defined by the caller (instead of CLI arguments). | 
|---|
| 63 | /// In case we want to add other options as well, just add them in this struct. | 
|---|
| 64 | #[ derive(Copy, Clone, Debug)] | 
|---|
| 65 | pub struct Options { | 
|---|
| 66 | pub display_output: bool, | 
|---|
| 67 | pub panic_abort: bool, | 
|---|
| 68 | } | 
|---|
| 69 |  | 
|---|
| 70 | impl Options { | 
|---|
| 71 | pub fn new() -> Options { | 
|---|
| 72 | Options { display_output: false, panic_abort: false } | 
|---|
| 73 | } | 
|---|
| 74 |  | 
|---|
| 75 | pub fn display_output(mut self, display_output: bool) -> Options { | 
|---|
| 76 | self.display_output = display_output; | 
|---|
| 77 | self | 
|---|
| 78 | } | 
|---|
| 79 |  | 
|---|
| 80 | pub fn panic_abort(mut self, panic_abort: bool) -> Options { | 
|---|
| 81 | self.panic_abort = panic_abort; | 
|---|
| 82 | self | 
|---|
| 83 | } | 
|---|
| 84 | } | 
|---|
| 85 |  | 
|---|