reth_node_core/args/
dev.rs
1use std::time::Duration;
4
5use clap::Args;
6use humantime::parse_duration;
7
8#[derive(Debug, Args, PartialEq, Eq, Default, Clone, Copy)]
10#[command(next_help_heading = "Dev testnet")]
11pub struct DevArgs {
12 #[arg(long = "dev", alias = "auto-mine", help_heading = "Dev testnet", verbatim_doc_comment)]
20 pub dev: bool,
21
22 #[arg(
24 long = "dev.block-max-transactions",
25 help_heading = "Dev testnet",
26 conflicts_with = "block_time"
27 )]
28 pub block_max_transactions: Option<usize>,
29
30 #[arg(
35 long = "dev.block-time",
36 help_heading = "Dev testnet",
37 conflicts_with = "block_max_transactions",
38 value_parser = parse_duration,
39 verbatim_doc_comment
40 )]
41 pub block_time: Option<Duration>,
42}
43
44#[cfg(test)]
45mod tests {
46 use super::*;
47 use clap::Parser;
48
49 #[derive(Parser)]
51 struct CommandParser<T: Args> {
52 #[command(flatten)]
53 args: T,
54 }
55
56 #[test]
57 fn test_parse_dev_args() {
58 let args = CommandParser::<DevArgs>::parse_from(["reth"]).args;
59 assert_eq!(args, DevArgs { dev: false, block_max_transactions: None, block_time: None });
60
61 let args = CommandParser::<DevArgs>::parse_from(["reth", "--dev"]).args;
62 assert_eq!(args, DevArgs { dev: true, block_max_transactions: None, block_time: None });
63
64 let args = CommandParser::<DevArgs>::parse_from(["reth", "--auto-mine"]).args;
65 assert_eq!(args, DevArgs { dev: true, block_max_transactions: None, block_time: None });
66
67 let args = CommandParser::<DevArgs>::parse_from([
68 "reth",
69 "--dev",
70 "--dev.block-max-transactions",
71 "2",
72 ])
73 .args;
74 assert_eq!(args, DevArgs { dev: true, block_max_transactions: Some(2), block_time: None });
75
76 let args =
77 CommandParser::<DevArgs>::parse_from(["reth", "--dev", "--dev.block-time", "1s"]).args;
78 assert_eq!(
79 args,
80 DevArgs {
81 dev: true,
82 block_max_transactions: None,
83 block_time: Some(std::time::Duration::from_secs(1))
84 }
85 );
86 }
87
88 #[test]
89 fn test_parse_dev_args_conflicts() {
90 let args = CommandParser::<DevArgs>::try_parse_from([
91 "reth",
92 "--dev",
93 "--dev.block-max-transactions",
94 "2",
95 "--dev.block-time",
96 "1s",
97 ]);
98 assert!(args.is_err());
99 }
100
101 #[test]
102 fn dev_args_default_sanity_check() {
103 let default_args = DevArgs::default();
104 let args = CommandParser::<DevArgs>::parse_from(["reth"]).args;
105 assert_eq!(args, default_args);
106 }
107}