mongo_task_generator/utils/
task_name.rs1use crate::evergreen_names::ENTERPRISE_MODULE;
4const GEN_SUFFIX: &str = "_gen";
5
6pub fn name_generated_task(
16 display_name: &str,
17 sub_task_index: usize,
18 total_tasks: usize,
19 is_enterprise: bool,
20 platform: Option<&str>,
21) -> String {
22 let mut suffix = if is_enterprise {
23 format!("-{}", ENTERPRISE_MODULE)
24 } else {
25 "".to_string()
26 };
27
28 if let Some(platform) = platform {
29 suffix = format!("-{}{}", platform, suffix)
30 }
31
32 let alignment = (total_tasks as f64).log10().ceil() as usize;
33 format!(
34 "{}_{:0fill$}{}",
35 display_name,
36 sub_task_index,
37 suffix,
38 fill = alignment
39 )
40}
41
42pub fn remove_gen_suffix(task_name: &str) -> &str {
52 if task_name.ends_with(GEN_SUFFIX) {
53 let end = task_name.len() - GEN_SUFFIX.len();
54 &task_name[..end]
55 } else {
56 task_name
57 }
58}
59
60#[cfg(test)]
61mod tests {
62 use super::*;
63 use rstest::*;
64
65 #[rstest]
66 #[case("task", 0, 10, false, None, "task_0")]
67 #[case("task", 0, 10, false, Some("linux"), "task_0-linux")]
68 #[case("task", 42, 1001, false, None, "task_0042")]
69 #[case("task", 42, 1001, false, Some("linux"), "task_0042-linux")]
70 #[case("task", 0, 10, true, None, "task_0-enterprise")]
71 #[case("task", 0, 10, true, Some("linux"), "task_0-linux-enterprise")]
72 #[case("task", 42, 1001, true, None, "task_0042-enterprise")]
73 #[case("task", 42, 1001, true, Some("linux"), "task_0042-linux-enterprise")]
74 fn test_name_generated_task_should_not_include_suffix(
75 #[case] name: &str,
76 #[case] index: usize,
77 #[case] total: usize,
78 #[case] is_enterprise: bool,
79 #[case] platform: Option<&str>,
80 #[case] expected: &str,
81 ) {
82 let task_name = name_generated_task(name, index, total, is_enterprise, platform);
83
84 assert_eq!(task_name, expected);
85 }
86
87 #[rstest]
88 #[case("task_name", "task_name")]
89 #[case("task_name_gen", "task_name")]
90 #[case("task_name_", "task_name_")]
91 fn test_remove_gen_suffix(#[case] original_task: &str, #[case] expected_task: &str) {
92 assert_eq!(remove_gen_suffix(original_task), expected_task);
93 }
94}