Skip to content

Commit 96531e7

Browse files
committed
[rust] Refactor logic to read stdout and stderr in tests
1 parent 15c4741 commit 96531e7

File tree

6 files changed

+44
-54
lines changed

6 files changed

+44
-54
lines changed

rust/tests/browser_tests.rs

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
// specific language governing permissions and limitations
1616
// under the License.
1717

18-
use crate::common::{assert_output, get_selenium_manager};
18+
use crate::common::{assert_output, get_selenium_manager, get_stdout};
1919

2020
use exitcode::DATAERR;
2121
use rstest::rstest;
@@ -54,15 +54,13 @@ fn browser_version_test(
5454
.success()
5555
.code(0);
5656

57-
let stdout = &cmd.unwrap().stdout;
58-
let output = std::str::from_utf8(stdout).unwrap();
59-
println!("{}", output);
57+
let stdout = get_stdout(&mut cmd);
6058

61-
assert!(output.contains(&driver_name));
62-
if !browser_version.is_empty() && output.contains("cache") {
63-
assert!(output.contains(&driver_version));
59+
assert!(stdout.contains(&driver_name));
60+
if !browser_version.is_empty() && stdout.contains("cache") {
61+
assert!(stdout.contains(&driver_version));
6462
}
65-
assert!(!output.contains("Error sending stats"));
63+
assert!(!stdout.contains("Error sending stats"));
6664
}
6765

6866
#[rstest]
@@ -148,9 +146,8 @@ fn browser_path_test(#[case] os: String, #[case] browser: String, #[case] browse
148146
.success()
149147
.code(0);
150148

151-
let stdout = &cmd.unwrap().stdout;
152-
let output = std::str::from_utf8(stdout).unwrap();
153-
println!("{}", output);
154-
assert!(!output.contains("WARN"));
149+
let stdout = get_stdout(&mut cmd);
150+
151+
assert!(!stdout.contains("WARN"));
155152
}
156153
}

rust/tests/common.rs

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,9 @@ pub fn get_selenium_manager() -> Command {
3333

3434
#[allow(dead_code)]
3535
pub fn assert_driver(cmd: &mut Command) {
36-
let stdout = &cmd.unwrap().stdout;
37-
let output = std::str::from_utf8(stdout).unwrap();
38-
println!("{}", output);
36+
let stdout = get_stdout(cmd);
3937

40-
let json: JsonOutput = serde_json::from_str(output).unwrap();
38+
let json: JsonOutput = serde_json::from_str(&stdout).unwrap();
4139
let driver_path = Path::new(&json.result.driver_path);
4240
assert!(driver_path.exists());
4341
assert!(is_executable(driver_path));
@@ -72,10 +70,19 @@ pub fn exec_driver(cmd: &mut Command) -> String {
7270
}
7371

7472
#[allow(dead_code)]
75-
pub fn display_output(cmd: &mut Command) {
73+
pub fn get_stdout(cmd: &mut Command) -> String {
7674
let stdout = &cmd.unwrap().stdout;
7775
let output = std::str::from_utf8(stdout).unwrap();
7876
println!("{}", output);
77+
output.to_string()
78+
}
79+
80+
#[allow(dead_code)]
81+
pub fn get_stderr(cmd: &mut Command) -> String {
82+
let stderr = &cmd.unwrap().stderr;
83+
let err_output = std::str::from_utf8(stderr).unwrap();
84+
println!("stderr: {}", err_output);
85+
err_output.to_string()
7986
}
8087

8188
#[allow(dead_code)]

rust/tests/config_tests.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
// specific language governing permissions and limitations
1616
// under the License.
1717

18-
use crate::common::get_selenium_manager;
18+
use crate::common::{get_selenium_manager, get_stdout};
1919

2020
use rstest::rstest;
2121

@@ -44,4 +44,8 @@ fn config_test(#[case] browser_name: String) {
4444
.assert()
4545
.success()
4646
.code(0);
47+
48+
let stdout = get_stdout(&mut cmd);
49+
50+
assert!(!stdout.contains("WARN") && !stdout.contains("ERROR"));
4751
}

rust/tests/grid_tests.rs

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
// specific language governing permissions and limitations
1616
// under the License.
1717

18-
use crate::common::{assert_output, get_selenium_manager};
18+
use crate::common::{assert_output, get_selenium_manager, get_stdout};
1919

2020
use exitcode::DATAERR;
2121
use rstest::rstest;
@@ -33,11 +33,8 @@ fn grid_latest_test() {
3333
.success()
3434
.code(0);
3535

36-
let stdout = &cmd.unwrap().stdout;
37-
let output = str::from_utf8(stdout).unwrap();
38-
println!("{}", output);
39-
40-
let json: JsonOutput = serde_json::from_str(output).unwrap();
36+
let stdout = get_stdout(&mut cmd);
37+
let json: JsonOutput = serde_json::from_str(&stdout).unwrap();
4138
assert!(!json.logs.is_empty());
4239

4340
let output_code = json.result.code;
@@ -61,11 +58,9 @@ fn grid_version_test(#[case] grid_version: &str) {
6158
.success()
6259
.code(0);
6360

64-
let stdout = &cmd.unwrap().stdout;
65-
let output = str::from_utf8(stdout).unwrap();
66-
println!("{}", output);
61+
let stdout = get_stdout(&mut cmd);
6762

68-
let json: JsonOutput = serde_json::from_str(output).unwrap();
63+
let json: JsonOutput = serde_json::from_str(&stdout).unwrap();
6964
let jar = Path::new(&json.result.driver_path);
7065
let jar_name = jar.file_name().unwrap().to_str().unwrap();
7166
assert!(jar_name.contains(grid_version));

rust/tests/offline_tests.rs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,7 @@
1515
// specific language governing permissions and limitations
1616
// under the License.
1717

18-
use crate::common::get_selenium_manager;
19-
20-
use std::str;
18+
use crate::common::{get_selenium_manager, get_stdout};
2119

2220
mod common;
2321

@@ -29,8 +27,7 @@ fn offline_test() {
2927
.success()
3028
.code(0);
3129

32-
let stdout = &cmd.unwrap().stdout;
33-
let output = str::from_utf8(stdout).unwrap();
34-
println!("{output}");
35-
assert!(output.contains("offline mode"));
30+
let stdout = get_stdout(&mut cmd);
31+
32+
assert!(stdout.contains("offline mode"));
3633
}

rust/tests/output_tests.rs

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,10 @@
1515
// specific language governing permissions and limitations
1616
// under the License.
1717

18-
use crate::common::get_selenium_manager;
18+
use crate::common::{get_selenium_manager, get_stderr, get_stdout};
1919

2020
use selenium_manager::logger::{JsonOutput, MinimalJson, DRIVER_PATH};
2121
use std::path::Path;
22-
use std::str;
2322

2423
mod common;
2524

@@ -31,11 +30,9 @@ fn json_output_test() {
3130
.success()
3231
.code(0);
3332

34-
let stdout = &cmd.unwrap().stdout;
35-
let output = str::from_utf8(stdout).unwrap();
36-
println!("{}", output);
33+
let stdout = get_stdout(&mut cmd);
3734

38-
let json: JsonOutput = serde_json::from_str(output).unwrap();
35+
let json: JsonOutput = serde_json::from_str(&stdout).unwrap();
3936
assert!(!json.logs.is_empty());
4037

4138
let output_code = json.result.code;
@@ -53,10 +50,8 @@ fn shell_output_test() {
5350
.success()
5451
.code(0);
5552

56-
let stdout = &cmd.unwrap().stdout;
57-
let output = str::from_utf8(stdout).unwrap();
58-
println!("{}", output);
59-
assert!(output.contains(DRIVER_PATH));
53+
let stdout = get_stdout(&mut cmd);
54+
assert!(stdout.contains(DRIVER_PATH));
6055
}
6156

6257
#[test]
@@ -67,16 +62,11 @@ fn mixed_output_test() {
6762
.success()
6863
.code(0);
6964

70-
let stdout = &cmd.unwrap().stdout;
71-
let output = str::from_utf8(stdout).unwrap();
72-
println!("stdout: {}", output);
73-
74-
let json: MinimalJson = serde_json::from_str(output).unwrap();
65+
let stdout = get_stdout(&mut cmd);
66+
let json: MinimalJson = serde_json::from_str(&stdout).unwrap();
7567
let driver = Path::new(&json.driver_path);
7668
assert!(driver.exists());
7769

78-
let stderr = &cmd.unwrap().stderr;
79-
let err_output = str::from_utf8(stderr).unwrap();
80-
println!("stderr: {}", err_output);
81-
assert!(!err_output.is_empty());
70+
let stderr = get_stderr(&mut cmd);
71+
assert!(!stderr.is_empty());
8272
}

0 commit comments

Comments
 (0)