Skip to content

Commit 55d9978

Browse files
authored
Merge pull request #40 from ilmanzo/fix-integration-test-for-OBS-build
Test match using regular expressions
2 parents 0412124 + b2574f2 commit 55d9978

File tree

3 files changed

+30
-35
lines changed

3 files changed

+30
-35
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,3 +40,4 @@ features = [
4040
assert_cmd = "2.0.14"
4141
tempfile = "3.10.1"
4242
mockall = "0.12.1"
43+
regex = "1.10.4"

tests/integration_test.rs

Lines changed: 28 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
mod utils;
2+
use regex::bytes::Regex;
23
use utils::start_listener_process;
34

45
use assert_cmd::Command;
@@ -9,6 +10,15 @@ const MOCK_PROCESS_NAME: &str = "mock_process";
910
#[cfg(windows)]
1011
const 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]
1323
fn test_basic_kill_no_process() {
1424
let mut cmd = Command::cargo_bin("killport").unwrap();
@@ -23,13 +33,10 @@ fn test_basic_kill_no_process() {
2333
fn 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]
10199
fn 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

Comments
 (0)