diff --git a/.github/workflows/appimage.yml b/.github/workflows/appimage.yml index 7707fb8..93e2c6b 100644 --- a/.github/workflows/appimage.yml +++ b/.github/workflows/appimage.yml @@ -10,7 +10,7 @@ permissions: jobs: build: - runs-on: ubuntu-24.04 + runs-on: ubuntu-latest container: image: debian:13 @@ -33,9 +33,7 @@ jobs: wget unzip file libfuse2 curl git glslc libdrm-dev sudo gh - name: Install Rust - run: | - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --quiet - echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" + uses: dtolnay/rust-toolchain@stable - name: Build AppImage run: bash build-aux/appimage/build-appimage.sh diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..733e84f --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,35 @@ +name: Rust Tests + +on: + pull_request: + workflow_dispatch: + +permissions: + contents: read + +jobs: + test: + runs-on: ubuntu-latest + container: + image: ubuntu:26.04 + + steps: + - uses: actions/checkout@v4 + + - name: Install system dependencies + run: | + apt-get update + apt-get install -y \ + build-essential \ + curl \ + pkg-config \ + libgtk-4-dev \ + libadwaita-1-dev + + - name: Install Rust + uses: dtolnay/rust-toolchain@stable + + - name: Run tests + env: + PKG_CONFIG_PATH: /usr/lib/x86_64-linux-gnu/pkgconfig:/usr/share/pkgconfig + run: cargo test diff --git a/src/external/proton.rs b/src/external/proton.rs index d798e68..7076f42 100644 --- a/src/external/proton.rs +++ b/src/external/proton.rs @@ -190,13 +190,19 @@ fn parse_proton_dir_name(name: &str) -> Option { // Try to parse "9.0", "8.0-4", "9.0-1" etc. let version_part = rest.split('-').next().unwrap_or(rest); let mut parts = version_part.split('.'); - let major: u32 = parts.next()?.trim().parse().ok()?; - let minor: u32 = parts - .next() - .and_then(|s| s.trim().parse().ok()) - .unwrap_or(0); - Some(ProtonVersion::Numbered(major, minor)) + if let Some(major_str) = parts.next() { + if let Ok(major) = major_str.trim().parse::() { + let minor: u32 = parts + .next() + .and_then(|s| s.trim().parse().ok()) + .unwrap_or(0); + + return Some(ProtonVersion::Numbered(major, minor)); + } + } + + Some(ProtonVersion::Other(name.to_string())) } #[cfg(test)]