cmake_parser/doc/command/ctest/
ctest_sleep.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 CTestSleep<'t> {
14 Time(CTestSleepTime<'t>),
15 Seconds(CTestSleepSeconds<'t>),
16}
17
18impl<'t> ToCommandScope for CTestSleep<'t> {
19 fn to_command_scope(&self) -> CommandScope {
20 CommandScope::CTest
21 }
22}
23
24#[derive(CMake, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
25#[cmake(pkg = "crate", positional)]
26pub struct CTestSleepTime<'t> {
27 pub time1: Token<'t>,
28 pub duration: Token<'t>,
29 pub time2: Token<'t>,
30}
31
32#[derive(CMake, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
33#[cmake(pkg = "crate", positional)]
34pub struct CTestSleepSeconds<'t> {
35 pub seconds: Token<'t>,
36}
37
38#[cfg(test)]
39mod tests {
40 use super::*;
41 use crate::doc::cmake_parse::tests::token;
42 use crate::*;
43 use pretty_assertions::assert_eq;
44
45 #[test]
46 fn ctest_sleep() {
47 let src = include_bytes!("../../../../../fixture/commands/ctest/ctest_sleep");
48 let cmakelists = parse_cmakelists(src).unwrap();
49 let doc = Doc::from(cmakelists);
50 assert_eq!(
51 doc.commands(),
52 Ok(vec![
53 Command::CTestSleep(Box::new(CTestSleep::Seconds(CTestSleepSeconds {
54 seconds: token(b"100"),
55 }))),
56 Command::CTestSleep(Box::new(CTestSleep::Time(CTestSleepTime {
57 time1: token(b"100"),
58 duration: token(b"200"),
59 time2: token(b"300"),
60 }))),
61 ])
62 )
63 }
64}