cmake_parser/doc/command/ctest/
ctest_test.rs

1use cmake_parser_derive::CMake;
2
3use crate::{
4    command::common::ScheduleRandom,
5    doc::command_scope::{CommandScope, ToCommandScope},
6    Token,
7};
8
9/// Perform the CTest Test Step as a Dashboard Client.
10///
11/// Reference: <https://cmake.org/cmake/help/v3.26/command/ctest_test.html>
12#[derive(CMake, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
13#[cmake(pkg = "crate", allow_empty)]
14pub struct CTestTest<'t> {
15    #[cmake(rename = "BUILD")]
16    pub build_dir: Option<Token<'t>>,
17    pub append: bool,
18    pub start: Option<Token<'t>>,
19    pub end: Option<Token<'t>>,
20    pub stride: Option<Token<'t>>,
21    pub exclude: Option<Token<'t>>,
22    pub include: Option<Token<'t>>,
23    pub exclude_label: Option<Token<'t>>,
24    pub include_label: Option<Token<'t>>,
25    pub exclude_fixture: Option<Token<'t>>,
26    pub exclude_fixture_setup: Option<Token<'t>>,
27    pub exclude_fixture_cleanup: Option<Token<'t>>,
28    pub parallel_level: Option<Token<'t>>,
29    pub resource_spec_file: Option<Token<'t>>,
30    pub test_load: Option<Token<'t>>,
31    pub schedule_random: Option<ScheduleRandom>,
32    pub stop_on_failure: bool,
33    pub stop_time: Option<Token<'t>>,
34    pub return_value: Option<Token<'t>>,
35    pub capture_cmake_error: Option<Token<'t>>,
36    pub repeat: Option<Token<'t>>,
37    pub output_junit: Option<Token<'t>>,
38    pub quiet: bool,
39}
40
41impl<'t> ToCommandScope for CTestTest<'t> {
42    fn to_command_scope(&self) -> CommandScope {
43        CommandScope::CTest
44    }
45}
46
47#[cfg(test)]
48mod tests {
49    use super::*;
50    use crate::doc::cmake_parse::tests::token;
51    use crate::*;
52    use pretty_assertions::assert_eq;
53
54    #[test]
55    fn ctest_test() {
56        let src = include_bytes!("../../../../../fixture/commands/ctest/ctest_test");
57        let cmakelists = parse_cmakelists(src).unwrap();
58        let doc = Doc::from(cmakelists);
59        assert_eq!(
60            doc.commands(),
61            Ok(vec![
62                Command::CTestTest(Box::new(CTestTest {
63                    build_dir: None,
64                    append: false,
65                    start: None,
66                    end: None,
67                    stride: None,
68                    exclude: None,
69                    include: None,
70                    exclude_label: None,
71                    include_label: None,
72                    exclude_fixture: None,
73                    exclude_fixture_setup: None,
74                    exclude_fixture_cleanup: None,
75                    parallel_level: None,
76                    resource_spec_file: None,
77                    test_load: None,
78                    schedule_random: None,
79                    stop_on_failure: false,
80                    stop_time: None,
81                    return_value: None,
82                    capture_cmake_error: None,
83                    repeat: None,
84                    output_junit: None,
85                    quiet: false,
86                })),
87                Command::CTestTest(Box::new(CTestTest {
88                    build_dir: Some(token(b"build1")),
89                    append: true,
90                    start: Some(token(b"start1")),
91                    end: Some(token(b"end1")),
92                    stride: Some(token(b"stride1")),
93                    exclude: Some(token(b"exclude1")),
94                    include: Some(token(b"include1")),
95                    exclude_label: Some(token(b"exclude_label1")),
96                    include_label: Some(token(b"include_label1")),
97                    exclude_fixture: Some(token(b"exclude_fixture1")),
98                    exclude_fixture_setup: Some(token(b"exclude_fixture_setup1")),
99                    exclude_fixture_cleanup: Some(token(b"exclude_fixture_cleanup1")),
100                    parallel_level: Some(token(b"parallel_level1")),
101                    resource_spec_file: Some(token(b"resource_spec_file1")),
102                    test_load: Some(token(b"test_load1")),
103                    schedule_random: Some(ScheduleRandom::On),
104                    stop_on_failure: true,
105                    stop_time: Some(token(b"stop_time1")),
106                    return_value: Some(token(b"return_value1")),
107                    capture_cmake_error: Some(token(b"capture_cmake_error1")),
108                    repeat: Some(token(b"repeat1")),
109                    output_junit: Some(token(b"output_junit1")),
110                    quiet: true,
111                })),
112            ])
113        )
114    }
115}