diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a65fdbd..ae8ed2e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -161,3 +161,46 @@ jobs: - name: Cargo check run: cargo check working-directory: src-tauri + + rust-test: + name: Rust Tests + runs-on: ${{ matrix.platform }} + strategy: + fail-fast: false + matrix: + platform: [ubuntu-latest, macos-latest, windows-latest] + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Install Rust + uses: dtolnay/rust-toolchain@stable + + - name: Cache Rust + uses: actions/cache@v4 + with: + path: | + ~/.cargo/bin/ + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/db/ + src-tauri/target/ + key: ${{ matrix.platform }}-cargo-${{ hashFiles('**/Cargo.lock') }} + restore-keys: | + ${{ matrix.platform }}-cargo- + + - name: Install system dependencies (Linux only) + if: matrix.platform == 'ubuntu-latest' + run: | + sudo apt-get update + sudo apt-get install -y \ + libwebkit2gtk-4.1-dev \ + build-essential \ + libssl-dev \ + libayatana-appindicator3-dev \ + librsvg2-dev + + - name: Run Rust tests + run: cargo test --lib --bin ronin-observer + working-directory: src-tauri diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d246345..74489e6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -75,7 +75,7 @@ jobs: working-directory: src-tauri - name: Build and release - uses: tauri-apps/tauri-action@v0 + uses: tauri-apps/tauri-action@850c373b94f35e16e4de61cbb9f6e4876af8c0b4 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} VITE_DEMO_LAMBDA_URL: ${{ secrets.VITE_DEMO_LAMBDA_URL }} diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 163aa5e..803e706 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -3764,7 +3764,7 @@ dependencies = [ [[package]] name = "ronin" -version = "0.1.0-alpha" +version = "0.1.0-beta" dependencies = [ "aes-gcm", "async-stream", @@ -3790,6 +3790,7 @@ dependencies = [ "rusqlite_migration", "serde", "serde_json", + "serial_test", "sha2", "tauri", "tauri-build", @@ -3927,6 +3928,15 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "scc" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46e6f046b7fef48e2660c57ed794263155d713de679057f2d0c169bfc6e756cc" +dependencies = [ + "sdd", +] + [[package]] name = "schannel" version = "0.1.28" @@ -4002,6 +4012,12 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +[[package]] +name = "sdd" +version = "3.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "490dcfcbfef26be6800d11870ff2df8774fa6e86d047e3e8c8a76b25655e41ca" + [[package]] name = "security-framework" version = "3.7.0" @@ -4191,6 +4207,32 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "serial_test" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "911bd979bf1070a3f3aa7b691a3b3e9968f339ceeec89e08c280a8a22207a32f" +dependencies = [ + "futures-executor", + "futures-util", + "log", + "once_cell", + "parking_lot", + "scc", + "serial_test_derive", +] + +[[package]] +name = "serial_test_derive" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a7d91949b85b0d2fb687445e448b40d322b6b3e4af6b44a29b21d9a5f33e6d9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "serialize-to-javascript" version = "0.1.2" diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index d1aaf2a..a84e4a6 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -70,4 +70,5 @@ zbus = { version = "4", features = ["tokio"] } [dev-dependencies] tempfile = "3" +serial_test = "3.0" diff --git a/src-tauri/src/bin/observer.rs b/src-tauri/src/bin/observer.rs index c39562e..78b3ba8 100644 --- a/src-tauri/src/bin/observer.rs +++ b/src-tauri/src/bin/observer.rs @@ -103,9 +103,11 @@ async fn main() { #[cfg(target_os = "linux")] mod tests { use super::*; + use serial_test::serial; use std::env; #[test] + #[serial] fn test_detect_backend_x11() { env::set_var("XDG_SESSION_TYPE", "x11"); env::set_var("XDG_CURRENT_DESKTOP", "ubuntu:GNOME"); @@ -115,6 +117,7 @@ mod tests { } #[test] + #[serial] fn test_detect_backend_wayland_gnome() { env::set_var("XDG_SESSION_TYPE", "wayland"); env::set_var("XDG_CURRENT_DESKTOP", "GNOME"); @@ -124,6 +127,7 @@ mod tests { } #[test] + #[serial] fn test_detect_backend_wayland_gnome_mixed_case() { env::remove_var("XDG_SESSION_TYPE"); env::set_var("XDG_SESSION_TYPE", "wayland"); @@ -134,6 +138,7 @@ mod tests { } #[test] + #[serial] fn test_detect_backend_wayland_kde() { env::set_var("XDG_SESSION_TYPE", "wayland"); env::set_var("XDG_CURRENT_DESKTOP", "KDE"); @@ -146,6 +151,7 @@ mod tests { } #[test] + #[serial] fn test_detect_backend_unknown() { env::set_var("XDG_SESSION_TYPE", "unknown"); env::set_var("XDG_CURRENT_DESKTOP", "unknown"); diff --git a/src-tauri/src/commands/git.rs b/src-tauri/src/commands/git.rs index 1966395..4d5b5e3 100644 --- a/src-tauri/src/commands/git.rs +++ b/src-tauri/src/commands/git.rs @@ -1282,6 +1282,7 @@ mod tests { } #[tokio::test] + #[cfg_attr(windows, ignore = "Windows CI runners don't support Git hooks consistently")] async fn test_commit_changes_pre_commit_hook_failure() { let temp_repo = create_test_repo(); let repo_path = temp_repo.path();