cmake_parser/doc/command/ctest/
ctest_test.rs1use cmake_parser_derive::CMake;
2
3use crate::{
4 command::common::ScheduleRandom,
5 doc::command_scope::{CommandScope, ToCommandScope},
6 Token,
7};
8
9#[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}