cmake_parser/doc/command/ctest/
ctest_submit.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", untagged)]
13pub enum CTestSubmit<'t> {
14 #[cmake(rename = "CDASH_UPLOAD", transparent)]
15 CDashUpload(CDashUpload<'t>),
16 Dashboard(CTestSubmitDashboard<'t>),
17}
18
19impl<'t> ToCommandScope for CTestSubmit<'t> {
20 fn to_command_scope(&self) -> CommandScope {
21 CommandScope::CTest
22 }
23}
24
25#[derive(CMake, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
26#[cmake(pkg = "crate", allow_empty)]
27pub struct CTestSubmitDashboard<'t> {
28 pub parts: Option<Vec<Token<'t>>>,
29 pub files: Option<Vec<Token<'t>>>,
30 pub submit_url: Option<Token<'t>>,
31 pub build_id: Option<Token<'t>>,
32 pub httpheader: Option<Token<'t>>,
33 pub retry_count: Option<Token<'t>>,
34 pub retry_delay: Option<Token<'t>>,
35 pub return_value: Option<Token<'t>>,
36 pub capture_cmake_error: Option<Token<'t>>,
37 pub quiet: bool,
38}
39
40#[derive(CMake, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
41#[cmake(pkg = "crate")]
42pub struct CDashUpload<'t> {
43 #[cmake(positional)]
44 pub file: Token<'t>,
45 pub cdash_upload_type: Option<Token<'t>>,
46 pub submit_url: Option<Token<'t>>,
47 pub build_id: Option<Token<'t>>,
48 pub httpheader: Option<Token<'t>>,
49 pub retry_count: Option<Token<'t>>,
50 pub retry_delay: Option<Token<'t>>,
51 pub return_value: Option<Token<'t>>,
52 pub quiet: bool,
53}
54
55#[cfg(test)]
56mod tests {
57 use super::*;
58 use crate::doc::cmake_parse::tests::{token, tokens_vec};
59 use crate::*;
60 use pretty_assertions::assert_eq;
61
62 #[test]
63 fn ctest_submit() {
64 let src = include_bytes!("../../../../../fixture/commands/ctest/ctest_submit");
65 let cmakelists = parse_cmakelists(src).unwrap();
66 let doc = Doc::from(cmakelists);
67 assert_eq!(
68 doc.commands(),
69 Ok(vec![
70 Command::CTestSubmit(Box::new(CTestSubmit::Dashboard(CTestSubmitDashboard {
71 parts: None,
72 files: None,
73 submit_url: None,
74 build_id: None,
75 httpheader: None,
76 retry_count: None,
77 retry_delay: None,
78 return_value: None,
79 capture_cmake_error: None,
80 quiet: false,
81 }))),
82 Command::CTestSubmit(Box::new(CTestSubmit::Dashboard(CTestSubmitDashboard {
83 parts: Some(tokens_vec([b"part1", b"part2", b"part3"])),
84 files: Some(tokens_vec([b"file1", b"file2"])),
85 submit_url: Some(token(b"submit_url1")),
86 build_id: Some(token(b"build_id1")),
87 httpheader: Some(token(b"httpheader1")),
88 retry_count: Some(token(b"retry_count1")),
89 retry_delay: Some(token(b"retry_delay1")),
90 return_value: Some(token(b"return_value1")),
91 capture_cmake_error: Some(token(b"capture_cmake_error1")),
92 quiet: true,
93 }))),
94 Command::CTestSubmit(Box::new(CTestSubmit::CDashUpload(CDashUpload {
95 file: token(b"file1"),
96 cdash_upload_type: Some(token(b"cdash_upload_type1")),
97 submit_url: Some(token(b"submit_url1")),
98 build_id: Some(token(b"build_id1")),
99 httpheader: Some(token(b"httpheader1")),
100 retry_count: Some(token(b"retry_count1")),
101 retry_delay: Some(token(b"retry_delay1")),
102 return_value: Some(token(b"return_value1")),
103 quiet: true,
104 }))),
105 ])
106 )
107 }
108}