rspec/runner/
configuration.rs

1// derive_builder emits warnings otherwise:
2#![allow(unused_mut)]
3
4/// A Runner's configuration.
5#[derive(Builder)]
6pub struct Configuration {
7    /// Whether the runner executes tests in parallel
8    #[builder(default = "true")]
9    pub parallel: bool,
10    /// Whether the runner exits the procees upon encountering failures
11    #[builder(default = "true")]
12    pub exit_on_failure: bool,
13}
14
15impl Default for Configuration {
16    fn default() -> Self {
17        ConfigurationBuilder::default().build().unwrap()
18    }
19}
20
21#[cfg(test)]
22mod tests {
23    use super::*;
24
25    #[test]
26    fn default_with_builder() {
27        let config = ConfigurationBuilder::default().build().unwrap();
28        assert_eq!(config.parallel, true);
29        assert_eq!(config.exit_on_failure, true);
30    }
31
32    #[test]
33    fn default() {
34        // arrange
35        let expected = ConfigurationBuilder::default().build().unwrap();
36        // act
37        let config = Configuration::default();
38        // assert
39        assert_eq!(expected.parallel, config.parallel);
40        assert_eq!(expected.exit_on_failure, config.exit_on_failure);
41    }
42
43    #[test]
44    fn builder() {
45        let config = ConfigurationBuilder::default().build().unwrap();
46        assert_eq!(config.parallel, true);
47        assert_eq!(config.exit_on_failure, true);
48
49        let config = ConfigurationBuilder::default()
50            .parallel(false)
51            .build()
52            .unwrap();
53        assert_eq!(config.parallel, false);
54        assert_eq!(config.exit_on_failure, true);
55
56        let config = ConfigurationBuilder::default()
57            .exit_on_failure(false)
58            .build()
59            .unwrap();
60        assert_eq!(config.parallel, true);
61        assert_eq!(config.exit_on_failure, false);
62    }
63}