cmake_parser/doc/command/ctest/
ctest_coverage.rs1use cmake_parser_derive::CMake;
2
3use crate::{
4 doc::command_scope::{CommandScope, ToCommandScope},
5 Token,
6};
7
8#[derive(CMake, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
12#[cmake(pkg = "crate", allow_empty)]
13pub struct CTestCoverage<'t> {
14 #[cmake(rename = "BUILD")]
15 pub build_dir: Option<Token<'t>>,
16 pub append: bool,
17 pub labels: Option<Vec<Token<'t>>>,
18 pub return_value: Option<Token<'t>>,
19 pub quiet: bool,
20 pub capture_cmake_error: Option<Token<'t>>,
21}
22
23impl<'t> ToCommandScope for CTestCoverage<'t> {
24 fn to_command_scope(&self) -> CommandScope {
25 CommandScope::CTest
26 }
27}
28
29#[cfg(test)]
30mod tests {
31 use super::*;
32 use crate::doc::cmake_parse::tests::{token, tokens_vec};
33 use crate::*;
34 use pretty_assertions::assert_eq;
35
36 #[test]
37 fn ctest_coverage() {
38 let src = include_bytes!("../../../../../fixture/commands/ctest/ctest_coverage");
39 let cmakelists = parse_cmakelists(src).unwrap();
40 let doc = Doc::from(cmakelists);
41 assert_eq!(
42 doc.commands(),
43 Ok(vec![
44 Command::CTestCoverage(Box::new(CTestCoverage {
45 build_dir: None,
46 append: false,
47 labels: None,
48 return_value: None,
49 quiet: false,
50 capture_cmake_error: None,
51 })),
52 Command::CTestCoverage(Box::new(CTestCoverage {
53 build_dir: Some(token(b"build1")),
54 append: true,
55 labels: Some(tokens_vec([b"label1", b"label2"])),
56 return_value: Some(token(b"return_value1")),
57 quiet: true,
58 capture_cmake_error: Some(token(b"capture_cmake_error1")),
59 })),
60 ])
61 )
62 }
63}