cmake_parser/doc/command/ctest/
ctest_memcheck.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 CTestMemCheck<'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 defect_count: Option<Token<'t>>,
39 pub quiet: bool,
40}
41
42impl<'t> ToCommandScope for CTestMemCheck<'t> {
43 fn to_command_scope(&self) -> CommandScope {
44 CommandScope::CTest
45 }
46}
47
48#[cfg(test)]
49mod tests {
50 use super::*;
51 use crate::doc::cmake_parse::tests::token;
52 use crate::*;
53 use pretty_assertions::assert_eq;
54
55 #[test]
56 fn ctest_memcheck() {
57 let src = include_bytes!("../../../../../fixture/commands/ctest/ctest_memcheck");
58 let cmakelists = parse_cmakelists(src).unwrap();
59 let doc = Doc::from(cmakelists);
60 assert_eq!(
61 doc.commands(),
62 Ok(vec![
63 Command::CTestMemCheck(Box::new(CTestMemCheck {
64 build_dir: None,
65 append: false,
66 start: None,
67 end: None,
68 stride: None,
69 exclude: None,
70 include: None,
71 exclude_label: None,
72 include_label: None,
73 exclude_fixture: None,
74 exclude_fixture_setup: None,
75 exclude_fixture_cleanup: None,
76 parallel_level: None,
77 resource_spec_file: None,
78 test_load: None,
79 schedule_random: None,
80 stop_on_failure: false,
81 stop_time: None,
82 return_value: None,
83 capture_cmake_error: None,
84 repeat: None,
85 output_junit: None,
86 defect_count: None,
87 quiet: false,
88 })),
89 Command::CTestMemCheck(Box::new(CTestMemCheck {
90 build_dir: Some(token(b"build1")),
91 append: true,
92 start: Some(token(b"start1")),
93 end: Some(token(b"end1")),
94 stride: Some(token(b"stride1")),
95 exclude: Some(token(b"exclude1")),
96 include: Some(token(b"include1")),
97 exclude_label: Some(token(b"exclude_label1")),
98 include_label: Some(token(b"include_label1")),
99 exclude_fixture: Some(token(b"exclude_fixture1")),
100 exclude_fixture_setup: Some(token(b"exclude_fixture_setup1")),
101 exclude_fixture_cleanup: Some(token(b"exclude_fixture_cleanup1")),
102 parallel_level: Some(token(b"parallel_level1")),
103 resource_spec_file: Some(token(b"resource_spec_file1")),
104 test_load: Some(token(b"test_load1")),
105 schedule_random: Some(ScheduleRandom::Off),
106 stop_on_failure: true,
107 stop_time: Some(token(b"stop_time1")),
108 return_value: Some(token(b"return_value1")),
109 capture_cmake_error: Some(token(b"capture_cmake_error1")),
110 repeat: Some(token(b"repeat1")),
111 output_junit: Some(token(b"output_junit1")),
112 defect_count: Some(token(b"defect_count1")),
113 quiet: true,
114 })),
115 ])
116 )
117 }
118}