cmake_parser/doc/command/ctest/
ctest_coverage.rs

1use cmake_parser_derive::CMake;
2
3use crate::{
4    doc::command_scope::{CommandScope, ToCommandScope},
5    Token,
6};
7
8/// Perform the CTest Coverage Step as a Dashboard Client.
9///
10/// Reference: <https://cmake.org/cmake/help/v3.26/command/ctest_coverage.html>
11#[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}