1
1
mod utils;
2
+ use regex:: bytes:: Regex ;
2
3
use utils:: start_listener_process;
3
4
4
5
use assert_cmd:: Command ;
@@ -9,6 +10,15 @@ const MOCK_PROCESS_NAME: &str = "mock_process";
9
10
#[ cfg( windows) ]
10
11
const MOCK_PROCESS_NAME : & str = "mock_process.exe" ;
11
12
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
+
12
22
#[ test]
13
23
fn test_basic_kill_no_process ( ) {
14
24
let mut cmd = Command :: cargo_bin ( "killport" ) . unwrap ( ) ;
@@ -23,13 +33,10 @@ fn test_basic_kill_no_process() {
23
33
fn test_basic_kill_process ( ) {
24
34
let tempdir = tempdir ( ) . unwrap ( ) ;
25
35
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 ) ;
28
37
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 ) ;
33
40
// Clean up
34
41
let _ = child. kill ( ) ;
35
42
let _ = child. wait ( ) ;
@@ -42,15 +49,10 @@ fn test_signal_handling() {
42
49
let tempdir_path = tempdir. path ( ) ;
43
50
44
51
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 ) ;
46
53
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 ) ;
54
56
// Clean up
55
57
let _ = child. kill ( ) ;
56
58
let _ = child. wait ( ) ;
@@ -64,53 +66,44 @@ fn test_mode_option() {
64
66
let tempdir_path = tempdir. path ( ) ;
65
67
66
68
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 ) ;
68
70
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 ) ;
75
73
// Clean up
76
74
let _ = child. kill ( ) ;
77
75
let _ = child. wait ( ) ;
78
76
}
79
77
80
78
let mut cmd = Command :: cargo_bin ( "killport" ) . unwrap ( ) ;
81
- cmd. args ( & [ "8082 " , "--mode" , "auto" ] )
79
+ cmd. args ( & [ "8083 " , "--mode" , "auto" ] )
82
80
. assert ( )
83
81
. success ( )
84
- . stdout ( format ! ( "No service found using port 8082 \n " ) ) ;
82
+ . stdout ( format ! ( "No service found using port 8083 \n " ) ) ;
85
83
86
84
let mut cmd = Command :: cargo_bin ( "killport" ) . unwrap ( ) ;
87
- cmd. args ( & [ "8082 " , "--mode" , "process" ] )
85
+ cmd. args ( & [ "8083 " , "--mode" , "process" ] )
88
86
. assert ( )
89
87
. success ( )
90
- . stdout ( format ! ( "No process found using port 8082 \n " ) ) ;
88
+ . stdout ( format ! ( "No process found using port 8083 \n " ) ) ;
91
89
92
90
let mut cmd = Command :: cargo_bin ( "killport" ) . unwrap ( ) ;
93
- cmd. args ( & [ "8082 " , "--mode" , "container" ] )
91
+ cmd. args ( & [ "8083 " , "--mode" , "container" ] )
94
92
. assert ( )
95
93
. success ( )
96
- . stdout ( format ! ( "No container found using port 8082 \n " ) ) ;
94
+ . stdout ( format ! ( "No container found using port 8083 \n " ) ) ;
97
95
}
98
96
99
97
/// Tests the `--dry-run` option to ensure no actual killing of the process.
100
98
#[ test]
101
99
fn test_dry_run_option ( ) {
102
100
let tempdir = tempdir ( ) . unwrap ( ) ;
103
101
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 ) ;
105
103
106
104
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 ) ;
114
107
// Clean up
115
108
let _ = child. kill ( ) ;
116
109
let _ = child. wait ( ) ;
0 commit comments