11mod utils;
2+ use regex:: bytes:: Regex ;
23use utils:: start_listener_process;
34
45use assert_cmd:: Command ;
@@ -9,6 +10,15 @@ const MOCK_PROCESS_NAME: &str = "mock_process";
910#[ cfg( windows) ]
1011const MOCK_PROCESS_NAME : & str = "mock_process.exe" ;
1112
13+ // test helper
14+ fn assert_match ( data : & [ u8 ] , msg : & str , port : u16 ) {
15+ let re = Regex :: new ( & format ! (
16+ r"{msg} process '(\/tmp\/\.tmp\w+\/)?{MOCK_PROCESS_NAME}' listening on port {port}\n"
17+ ) )
18+ . unwrap ( ) ;
19+ assert ! ( re. is_match( data) ) ;
20+ }
21+
1222#[ test]
1323fn test_basic_kill_no_process ( ) {
1424 let mut cmd = Command :: cargo_bin ( "killport" ) . unwrap ( ) ;
@@ -23,13 +33,10 @@ fn test_basic_kill_no_process() {
2333fn test_basic_kill_process ( ) {
2434 let tempdir = tempdir ( ) . unwrap ( ) ;
2535 let tempdir_path = tempdir. path ( ) ;
26- let mut child = start_listener_process ( tempdir_path, 8080 ) ;
27-
36+ let mut child = start_listener_process ( tempdir_path, 8081 ) ;
2837 let mut cmd = Command :: cargo_bin ( "killport" ) . unwrap ( ) ;
29- cmd. args ( & [ "8080" ] ) . assert ( ) . success ( ) . stdout ( format ! (
30- "Successfully killed process '{MOCK_PROCESS_NAME}' listening on port 8080\n "
31- ) ) ;
32-
38+ let command = cmd. args ( & [ "8081" ] ) . assert ( ) . success ( ) ;
39+ assert_match ( & command. get_output ( ) . stdout , "Successfully killed" , 8081 ) ;
3340 // Clean up
3441 let _ = child. kill ( ) ;
3542 let _ = child. wait ( ) ;
@@ -42,15 +49,10 @@ fn test_signal_handling() {
4249 let tempdir_path = tempdir. path ( ) ;
4350
4451 for signal in [ "sighup" , "sigint" , "sigkill" ] . iter ( ) {
45- let mut child = start_listener_process ( tempdir_path, 8081 ) ;
52+ let mut child = start_listener_process ( tempdir_path, 8082 ) ;
4653 let mut cmd = Command :: cargo_bin ( "killport" ) . unwrap ( ) ;
47- cmd. args ( & [ "8081" , "-s" , signal] )
48- . assert ( )
49- . success ( )
50- . stdout ( format ! (
51- "Successfully killed process '{MOCK_PROCESS_NAME}' listening on port 8081\n "
52- ) ) ;
53-
54+ let command = cmd. args ( & [ "8082" , "-s" , signal] ) . assert ( ) . success ( ) ;
55+ assert_match ( & command. get_output ( ) . stdout , "Successfully killed" , 8082 ) ;
5456 // Clean up
5557 let _ = child. kill ( ) ;
5658 let _ = child. wait ( ) ;
@@ -64,53 +66,44 @@ fn test_mode_option() {
6466 let tempdir_path = tempdir. path ( ) ;
6567
6668 for mode in [ "auto" , "process" ] . iter ( ) {
67- let mut child = start_listener_process ( tempdir_path, 8082 ) ;
69+ let mut child = start_listener_process ( tempdir_path, 8083 ) ;
6870 let mut cmd = Command :: cargo_bin ( "killport" ) . unwrap ( ) ;
69- cmd. args ( & [ "8082" , "--mode" , mode] )
70- . assert ( )
71- . success ( )
72- . stdout ( format ! (
73- "Successfully killed process '{MOCK_PROCESS_NAME}' listening on port 8082\n "
74- ) ) ;
71+ let command = cmd. args ( & [ "8083" , "--mode" , mode] ) . assert ( ) . success ( ) ;
72+ assert_match ( & command. get_output ( ) . stdout , "Successfully killed" , 8083 ) ;
7573 // Clean up
7674 let _ = child. kill ( ) ;
7775 let _ = child. wait ( ) ;
7876 }
7977
8078 let mut cmd = Command :: cargo_bin ( "killport" ) . unwrap ( ) ;
81- cmd. args ( & [ "8082 " , "--mode" , "auto" ] )
79+ cmd. args ( & [ "8083 " , "--mode" , "auto" ] )
8280 . assert ( )
8381 . success ( )
84- . stdout ( format ! ( "No service found using port 8082 \n " ) ) ;
82+ . stdout ( format ! ( "No service found using port 8083 \n " ) ) ;
8583
8684 let mut cmd = Command :: cargo_bin ( "killport" ) . unwrap ( ) ;
87- cmd. args ( & [ "8082 " , "--mode" , "process" ] )
85+ cmd. args ( & [ "8083 " , "--mode" , "process" ] )
8886 . assert ( )
8987 . success ( )
90- . stdout ( format ! ( "No process found using port 8082 \n " ) ) ;
88+ . stdout ( format ! ( "No process found using port 8083 \n " ) ) ;
9189
9290 let mut cmd = Command :: cargo_bin ( "killport" ) . unwrap ( ) ;
93- cmd. args ( & [ "8082 " , "--mode" , "container" ] )
91+ cmd. args ( & [ "8083 " , "--mode" , "container" ] )
9492 . assert ( )
9593 . success ( )
96- . stdout ( format ! ( "No container found using port 8082 \n " ) ) ;
94+ . stdout ( format ! ( "No container found using port 8083 \n " ) ) ;
9795}
9896
9997/// Tests the `--dry-run` option to ensure no actual killing of the process.
10098#[ test]
10199fn test_dry_run_option ( ) {
102100 let tempdir = tempdir ( ) . unwrap ( ) ;
103101 let tempdir_path = tempdir. path ( ) ;
104- let mut child = start_listener_process ( tempdir_path, 8083 ) ;
102+ let mut child = start_listener_process ( tempdir_path, 8084 ) ;
105103
106104 let mut cmd = Command :: cargo_bin ( "killport" ) . unwrap ( ) ;
107- cmd. args ( & [ "8083" , "--dry-run" ] )
108- . assert ( )
109- . success ( )
110- . stdout ( format ! (
111- "Would kill process '{MOCK_PROCESS_NAME}' listening on port 8083\n "
112- ) ) ;
113-
105+ let command = cmd. args ( & [ "8084" , "--dry-run" ] ) . assert ( ) . success ( ) ;
106+ assert_match ( & command. get_output ( ) . stdout , "Would kill" , 8084 ) ;
114107 // Clean up
115108 let _ = child. kill ( ) ;
116109 let _ = child. wait ( ) ;
0 commit comments