xref: /DADK/dadk/src/console/tests.rs (revision 2c1a697be787a4320d89f007f63fbc0fc2be2b67)
1 use rootfs::CreateCommandParam;
2 use user::UserCleanLevel;
3 
4 use super::*;
5 
6 #[test]
7 fn test_command_line_args_default() {
8     let args = CommandLineArgs::parse_from(&["dadk", "kernel"]);
9     assert_eq!(args.action, Action::Kernel);
10     assert_eq!(args.manifest_path, "dadk-manifest.toml");
11 }
12 
13 #[test]
14 fn test_command_line_args_with_manifest() {
15     // test short
16     let args = CommandLineArgs::parse_from(&["dadk", "-f", "custom-manifest.toml", "kernel"]);
17     assert_eq!(args.action, Action::Kernel);
18     assert_eq!(args.manifest_path, "custom-manifest.toml");
19     // test long
20     let args =
21         CommandLineArgs::parse_from(&["dadk", "--manifest", "custom-manifest.toml", "kernel"]);
22     assert_eq!(args.action, Action::Kernel);
23     assert_eq!(args.manifest_path, "custom-manifest.toml");
24 }
25 
26 #[test]
27 fn test_command_line_args_rootfs_subcommand() {
28     let args = CommandLineArgs::parse_from(&["dadk", "rootfs", "create"]);
29     assert!(matches!(
30         args.action,
31         Action::Rootfs(RootFSCommand::Create(CreateCommandParam {
32             skip_if_exists: false
33         }))
34     ));
35 
36     let args = CommandLineArgs::parse_from(&["dadk", "rootfs", "create", "--skip-if-exists"]);
37     assert!(matches!(
38         args.action,
39         Action::Rootfs(RootFSCommand::Create(CreateCommandParam {
40             skip_if_exists: true
41         }))
42     ));
43 }
44 
45 #[test]
46 fn test_show_mountpoint() {
47     let args = CommandLineArgs::parse_from(&["dadk", "rootfs", "show-mountpoint"]);
48     assert!(matches!(
49         args.action,
50         Action::Rootfs(RootFSCommand::ShowMountPoint)
51     ));
52 }
53 
54 #[test]
55 fn test_command_line_args_user() {
56     let args = CommandLineArgs::parse_from(&["dadk", "user", "build"]);
57 
58     assert!(matches!(args.action, Action::User(UserCommand::Build)));
59 }
60 
61 /// 该函数测试CommandLineArgs解析器是否正确解析`dadk user clean`命令
62 #[test]
63 fn test_command_line_args_user_clean() {
64     let args = CommandLineArgs::parse_from(&["dadk", "user", "clean"]);
65     assert!(matches!(args.action, Action::User(UserCommand::Clean(_))));
66     if let Action::User(UserCommand::Clean(args)) = args.action {
67         assert_eq!(args.level, UserCleanLevel::All);
68     } else {
69         panic!("Expected UserCommand::Clean");
70     }
71 
72     // 检查 `--level` 参数
73     let args = CommandLineArgs::parse_from(&["dadk", "user", "clean", "--level", "in-src"]);
74     if let Action::User(UserCommand::Clean(args)) = args.action {
75         assert_eq!(args.level, UserCleanLevel::InSrc);
76     } else {
77         panic!("Expected UserCommand::Clean");
78     }
79 
80     // 检查 `--task` 参数
81     let args = CommandLineArgs::parse_from(&["dadk", "user", "clean", "--task", "a-0.1.0"]);
82     if let Action::User(UserCommand::Clean(args)) = args.action {
83         assert_eq!(args.task, Some("a-0.1.0".to_string()));
84     } else {
85         panic!("Expected UserCommand::Clean");
86     }
87 }
88