Skip to content

chore(deps): bump Tauri ecosystem to 2.11 #58

chore(deps): bump Tauri ecosystem to 2.11

chore(deps): bump Tauri ecosystem to 2.11 #58

Workflow file for this run

name: CLI Smoke Test
on:
push:
branches: [main]
paths:
- 'src-tauri/src/bin/aeroftp_cli.rs'
- 'src-tauri/src/providers/**'
- 'src-tauri/Cargo.toml'
- '.github/workflows/cli-smoke.yml'
pull_request:
branches: [main]
paths:
- 'src-tauri/src/bin/aeroftp_cli.rs'
- 'src-tauri/src/providers/**'
- 'src-tauri/Cargo.toml'
- '.github/workflows/cli-smoke.yml'
workflow_dispatch:
permissions:
contents: read
jobs:
smoke:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
cli_bin: ./target/release/aeroftp-cli
- os: macos-latest
cli_bin: ./target/release/aeroftp-cli
- os: windows-latest
cli_bin: ./target/release/aeroftp-cli.exe
steps:
- name: Checkout
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- name: Install Rust
uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # stable
with:
toolchain: stable
- name: Rust cache
uses: swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2
with:
workspaces: './src-tauri -> target'
- name: Install Linux dependencies
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
libwebkit2gtk-4.1-dev \
libappindicator3-dev \
librsvg2-dev
# Windows only: openssl-sys (vendored via ssh2) needs a Perl with the
# Locale::Maketext::Simple / Params::Check modules to configure OpenSSL.
# The Git-for-Windows Perl that `shell: bash` picks up is missing those
# modules (BEGIN failed at Params/Check.pm). Strawberry Perl ships them,
# but after `choco install` the Strawberry bin dirs only hit the PATH of
# newly-spawned steps: we also have to prepend them to GITHUB_PATH so
# they actually win against Git Bash's Perl on the next step's lookup.
- name: Install Strawberry Perl (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
choco install strawberryperl -y --no-progress
"C:\Strawberry\perl\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
"C:\Strawberry\perl\site\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
"C:\Strawberry\c\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
- name: Build CLI
working-directory: src-tauri
shell: bash
run: |
if [[ "$RUNNER_OS" == "Windows" ]]; then
# Force Strawberry Perl ahead of Git-for-Windows /usr/bin/perl so
# openssl-src's Configure script finds Locale::Maketext::Simple.
export PATH="/c/Strawberry/perl/bin:/c/Strawberry/perl/site/bin:/c/Strawberry/c/bin:$PATH"
which perl
perl -e 'use Locale::Maketext::Simple; print "OK\n"'
fi
cargo build --release --bin aeroftp-cli
- name: Version and help smoke
working-directory: src-tauri
shell: bash
env:
CLI_BIN: ${{ matrix.cli_bin }}
run: |
"$CLI_BIN" --version
"$CLI_BIN" --help > /dev/null
"$CLI_BIN" sync --help > /dev/null
"$CLI_BIN" reconcile --help > /dev/null
"$CLI_BIN" agent-info --json > /dev/null
"$CLI_BIN" profiles --json > /dev/null || true
- name: Batch parser smoke
working-directory: src-tauri
shell: bash
env:
CLI_BIN: ${{ matrix.cli_bin }}
run: |
cat > smoke-test.aeroftp <<'EOF'
SET host = example.com
ECHO Host is $host
EOF
"$CLI_BIN" batch smoke-test.aeroftp > /dev/null
- name: Share link verify flag smoke
working-directory: src-tauri
shell: bash
env:
CLI_BIN: ${{ matrix.cli_bin }}
run: |
# Just confirm the --verify flag is wired into the link subcommand;
# actual live probes against real providers require credentialed
# profiles and run on the operator's machine, not in CI.
# Capture help to a tempfile so `set -o pipefail` cannot bite us
# on macOS, where `clap` writes the long form to stdout but the
# tail of a piped paginator-style buffer was being dropped before
# grep could see it.
HELP_OUT=$(mktemp)
"$CLI_BIN" link --help > "$HELP_OUT" 2>&1
if ! grep -q -- '--verify' "$HELP_OUT"; then
echo "::error::aeroftp link is missing --verify flag"
echo "--- link --help dump (last 30 lines) ---"
tail -30 "$HELP_OUT"
echo "--- end ---"
exit 1
fi
- name: Shell completions smoke
working-directory: src-tauri
shell: bash
env:
CLI_BIN: ${{ matrix.cli_bin }}
run: |
"$CLI_BIN" completions bash > /dev/null
"$CLI_BIN" completions zsh > /dev/null
"$CLI_BIN" completions fish > /dev/null
coverage:
runs-on: ubuntu-latest
needs: smoke
steps:
- name: Checkout
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- name: Install Rust
uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # stable
with:
toolchain: stable
- name: Rust cache
uses: swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2
with:
workspaces: './src-tauri -> target'
- name: Install Linux dependencies
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
libwebkit2gtk-4.1-dev \
libappindicator3-dev \
librsvg2-dev
- name: Install cargo-llvm-cov
uses: taiki-e/install-action@9baf7c20ae8e70a5220bd48d08870afb205ab1ed # cargo-llvm-cov
- name: Generate coverage
working-directory: src-tauri
shell: bash
# Baseline at T8 Fase A (2026-04-21): 11.73% lines, 9.59% functions.
# Gate is set below baseline so CI passes today; raise per T8 Fase B/C/D
# as new tests land. Target after Fase C (16 zero-coverage providers): 25%.
run: |
cargo llvm-cov --no-report --all-targets
cargo llvm-cov report --lcov --output-path lcov.info
cargo llvm-cov report --summary-only --fail-under-lines 10 | tee coverage-summary.txt
- name: Upload coverage artifacts
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: coverage-linux
path: |
src-tauri/lcov.info
src-tauri/coverage-summary.txt
- name: Upload to Codecov
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6
with:
files: src-tauri/lcov.info
fail_ci_if_error: false