1#[must_use]
5pub fn get_thread_count(config_threads: Option<usize>) -> usize {
6 config_threads.unwrap_or_else(|| {
7 std::thread::available_parallelism()
8 .map(std::num::NonZeroUsize::get)
9 .unwrap_or(4)
10 })
11}
12
13#[must_use]
15pub fn is_valid_package_name(name: &str) -> bool {
16 !name.is_empty()
17 && name
18 .chars()
19 .all(|c| c.is_alphanumeric() || c == '_' || c == '-')
20 && !name.starts_with('-')
21 && !name.ends_with('-')
22}
23
24#[cfg(test)]
25mod tests {
26 use super::*;
27
28 #[test]
29 fn test_thread_count() {
30 assert!(get_thread_count(None) >= 1);
31 assert_eq!(get_thread_count(Some(8)), 8);
32 }
33
34 #[test]
35 fn test_thread_count_custom_zero_is_accepted() {
36 assert_eq!(get_thread_count(Some(0)), 0);
38 }
39
40 #[test]
41 fn test_thread_count_large_value() {
42 assert_eq!(get_thread_count(Some(256)), 256);
43 }
44
45 #[test]
46 fn test_package_name_validation() {
47 assert!(is_valid_package_name("valid_package"));
48 assert!(is_valid_package_name("valid-package"));
49 assert!(is_valid_package_name("package123"));
50
51 assert!(!is_valid_package_name(""));
52 assert!(!is_valid_package_name("-invalid"));
53 assert!(!is_valid_package_name("invalid-"));
54 assert!(!is_valid_package_name("invalid package"));
55 }
56
57 #[test]
58 fn test_package_name_single_char() {
59 assert!(is_valid_package_name("a"));
60 assert!(is_valid_package_name("1"));
61 assert!(!is_valid_package_name("-"));
62 }
63
64 #[test]
65 fn test_package_name_numbers_only() {
66 assert!(is_valid_package_name("123"));
67 }
68
69 #[test]
70 fn test_package_name_special_chars_rejected() {
71 assert!(!is_valid_package_name("pkg@1"));
72 assert!(!is_valid_package_name("pkg.name"));
73 assert!(!is_valid_package_name("pkg/name"));
74 assert!(!is_valid_package_name("pkg:name"));
75 }
76
77 #[test]
78 fn test_package_name_mixed_valid() {
79 assert!(is_valid_package_name("my_package-1"));
80 assert!(is_valid_package_name("PkgName"));
81 assert!(is_valid_package_name("pkg_2024"));
82 }
83
84 #[test]
85 fn test_package_name_consecutive_hyphens() {
86 assert!(is_valid_package_name("pkg--name"));
88 }
89}