Skip to content

Commit 2b3ad21

Browse files
p0dejediemolbonigarcia
authored
Use Bazel for running Rust tests (#11852)
* Use Bazel for running Rust tests * Add Rust build/test targets to README.md [skip ci] * Crate tests should be unsandboxed --------- Co-authored-by: Diego Molina <[email protected]> Co-authored-by: Boni García <[email protected]>
1 parent 7014c3e commit 2b3ad21

File tree

9 files changed

+72
-37
lines changed

9 files changed

+72
-37
lines changed

.github/workflows/ci-rust.yml

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -5,28 +5,27 @@ on:
55
workflow_dispatch:
66

77
jobs:
8-
test:
9-
name: Test
8+
build:
9+
name: Build
10+
uses: ./.github/workflows/bazel.yml
11+
with:
12+
name: Build
13+
cache-key: rust-build
14+
run: bazel build //rust:selenium-manager
15+
16+
tests:
17+
name: Tests
18+
needs: build
19+
uses: ./.github/workflows/bazel.yml
1020
strategy:
21+
fail-fast: false
1122
matrix:
12-
os:
13-
- ubuntu-latest
14-
- windows-latest
15-
- macos-latest
16-
rust:
17-
- stable
18-
runs-on: ${{ matrix.os }}
19-
env:
20-
RUST_BACKTRACE: 1
21-
steps:
22-
- name: Checkout repository
23-
uses: actions/checkout@v3
24-
- name: Install Rust toolchain
25-
uses: actions-rs/toolchain@v1
26-
with:
27-
toolchain: ${{ matrix.rust }}
28-
- name: Run tests
29-
run: |
30-
cd rust
31-
cargo build
32-
cargo test -- --nocapture
23+
include:
24+
- os: macos
25+
- os: ubuntu
26+
- os: windows
27+
with:
28+
name: Tests (${{ matrix.os }})
29+
cache-key: rust-test
30+
os: ${{ matrix.os }}
31+
run: bazel test --test_env=RUST_BACKTRACE=1 --flaky_test_attempts=3 //rust/...

README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,16 @@ More information about running Selenium's .NET tests can be found in this [READM
298298

299299
</details>
300300

301+
#### Rust
302+
<details>
303+
<summary>Click to see Rust Build Steps</summary>
304+
305+
Targets:
306+
307+
| Command | Description |
308+
|---------------------------------------|-------------------------------------|
309+
| `bazel build //rust:selenium-manager` | Build selenium-manager binary |
310+
| `bazel test //rust/...` | Run both unit and integration tests |
301311

302312
### Build Details
303313

rust/BUILD.bazel

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
load("@crates//:defs.bzl", "all_crate_deps")
2-
load("@rules_rust//rust:defs.bzl", "rust_binary", "rust_library")
2+
load("@rules_rust//rust:defs.bzl", "rust_binary", "rust_library", "rust_test")
33

44
rust_binary(
55
# Yes, this name is very similar to the library. Note the dash
@@ -23,3 +23,29 @@ rust_library(
2323
edition = "2021",
2424
deps = all_crate_deps(normal = True),
2525
)
26+
27+
rust_test(
28+
name = "unit",
29+
srcs = glob(["src/**/*.rs"]),
30+
crate = ":selenium_manager",
31+
tags = ["no-sandbox"],
32+
)
33+
34+
[
35+
rust_test(
36+
name = file[:-3],
37+
srcs = [file],
38+
data = [":selenium-manager"],
39+
edition = "2021",
40+
tags = [
41+
"exclusive",
42+
"no-sandbox",
43+
"requires-network",
44+
],
45+
deps = [":selenium_manager"] + all_crate_deps(
46+
normal = True,
47+
normal_dev = True,
48+
),
49+
)
50+
for file in glob(["tests/**/*.rs"])
51+
]

rust/tests/cli_tests.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ fn ok_test(
4040
browser, browser_version, driver_version
4141
);
4242

43-
let mut cmd = Command::cargo_bin(env!("CARGO_PKG_NAME")).unwrap();
43+
let mut cmd = Command::new(env!("CARGO_BIN_EXE_selenium-manager"));
4444
cmd.args(["--browser", &browser, "--browser-version", &browser_version])
4545
.assert()
4646
.success()
@@ -78,7 +78,7 @@ fn error_test(
7878
browser, browser_version, driver_version
7979
);
8080

81-
let mut cmd = Command::cargo_bin(env!("CARGO_PKG_NAME")).unwrap();
81+
let mut cmd = Command::new(env!("CARGO_BIN_EXE_selenium-manager"));
8282
cmd.args([
8383
"--browser",
8484
&browser,
@@ -99,7 +99,7 @@ fn error_test(
9999
fn beta_test(#[case] browser: String, #[case] driver_name: String) {
100100
println!("Beta test browser={browser} -- driver_name={driver_name}");
101101

102-
let mut cmd = Command::cargo_bin(env!("CARGO_PKG_NAME")).unwrap();
102+
let mut cmd = Command::new(env!("CARGO_BIN_EXE_selenium-manager"));
103103
let assert = cmd
104104
.args(["--browser", &browser, "--browser-version", "beta"])
105105
.assert();
@@ -126,7 +126,7 @@ fn path_test(#[case] browser: String, #[case] browser_path: String) {
126126
browser, browser_path
127127
);
128128

129-
let mut cmd = Command::cargo_bin(env!("CARGO_PKG_NAME")).unwrap();
129+
let mut cmd = Command::new(env!("CARGO_BIN_EXE_selenium-manager"));
130130
cmd.args(["--browser", &browser, "--browser-path", &browser_path])
131131
.assert()
132132
.success()

rust/tests/iexplorer_tests.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ use rstest::rstest;
2323
#[case("4.8.0")]
2424
#[case("4.8.1")]
2525
fn iexplorer_test(#[case] driver_version: String) {
26-
let mut cmd = Command::cargo_bin(env!("CARGO_PKG_NAME")).unwrap();
26+
let mut cmd = Command::new(env!("CARGO_BIN_EXE_selenium-manager"));
2727
let cmd_assert = cmd
2828
.args([
2929
"--browser",
@@ -43,7 +43,7 @@ fn iexplorer_test(#[case] driver_version: String) {
4343
#[case("internet-explorer")]
4444
#[case("internet_explorer")]
4545
fn ie_name_test(#[case] browser_name: String) {
46-
let mut cmd = Command::cargo_bin(env!("CARGO_PKG_NAME")).unwrap();
46+
let mut cmd = Command::new(env!("CARGO_BIN_EXE_selenium-manager"));
4747
let cmd_assert = cmd.args(["--browser", &browser_name]).assert();
4848
cmd_assert.success();
4949
}

rust/tests/output_tests.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ use std::str;
2323

2424
#[test]
2525
fn json_output_test() {
26-
let mut cmd = Command::cargo_bin(env!("CARGO_PKG_NAME")).unwrap();
26+
let mut cmd = Command::new(env!("CARGO_BIN_EXE_selenium-manager"));
2727
cmd.args(["--browser", "chrome", "--output", "json"])
2828
.assert()
2929
.success()
@@ -45,7 +45,7 @@ fn json_output_test() {
4545

4646
#[test]
4747
fn shell_output_test() {
48-
let mut cmd = Command::cargo_bin(env!("CARGO_PKG_NAME")).unwrap();
48+
let mut cmd = Command::new(env!("CARGO_BIN_EXE_selenium-manager"));
4949
cmd.args(["--browser", "chrome", "--output", "shell"])
5050
.assert()
5151
.success()

rust/tests/proxy_tests.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ use wiremock::MockServer;
2424
#[tokio::test]
2525
async fn ok_proxy_test() {
2626
let mock_server = MockServer::start().await;
27-
let mut cmd = Command::cargo_bin(env!("CARGO_PKG_NAME")).unwrap();
27+
let mut cmd = Command::new(env!("CARGO_BIN_EXE_selenium-manager"));
2828
cmd.args(["--browser", "chrome", "--proxy", &mock_server.uri()])
2929
.assert()
3030
.success()
@@ -33,7 +33,7 @@ async fn ok_proxy_test() {
3333

3434
#[test]
3535
fn wrong_protocol_proxy_test() {
36-
let mut cmd = Command::cargo_bin(env!("CARGO_PKG_NAME")).unwrap();
36+
let mut cmd = Command::new(env!("CARGO_BIN_EXE_selenium-manager"));
3737
cmd.args(["--browser", "chrome", "--proxy", "wrong:://proxy"])
3838
.assert()
3939
.failure()
@@ -42,7 +42,7 @@ fn wrong_protocol_proxy_test() {
4242

4343
#[test]
4444
fn wrong_port_proxy_test() {
45-
let mut cmd = Command::cargo_bin(env!("CARGO_PKG_NAME")).unwrap();
45+
let mut cmd = Command::new(env!("CARGO_BIN_EXE_selenium-manager"));
4646
cmd.args([
4747
"--browser",
4848
"chrome",

rust/tests/safari_tests.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ use std::env::consts::OS;
2020

2121
#[test]
2222
fn safari_test() {
23-
let mut cmd = Command::cargo_bin(env!("CARGO_PKG_NAME")).unwrap();
23+
let mut cmd = Command::new(env!("CARGO_BIN_EXE_selenium-manager"));
2424
let safari_assert = cmd.args(["--browser", "safari"]).assert();
2525

2626
if OS.eq("macos") {

rust/tests/timeout_tests.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ use exitcode::DATAERR;
2121

2222
#[test]
2323
fn timeout_proxy_test() {
24-
let mut cmd = Command::cargo_bin(env!("CARGO_PKG_NAME")).unwrap();
24+
let mut cmd = Command::new(env!("CARGO_BIN_EXE_selenium-manager"));
2525
cmd.args([
2626
"--clear-cache",
2727
"--debug",

0 commit comments

Comments
 (0)