Skip to content

chore(deps)(deps): bump insta from 1.43.2 to 1.46.3 #103

chore(deps)(deps): bump insta from 1.43.2 to 1.46.3

chore(deps)(deps): bump insta from 1.43.2 to 1.46.3 #103

Workflow file for this run

name: CI
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]
schedule:
- cron: '0 0 * * 0' # Weekly dependency check
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1
permissions:
contents: read
pull-requests: read
jobs:
# Format and Lint Check
check:
name: Check & Lint
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- name: Cache dependencies
uses: Swatinem/rust-cache@v2
- name: Format check
run: cargo fmt --all -- --check
- name: Clippy check
run: cargo clippy --all-features --all-targets -- -D warnings
- name: Documentation check
run: cargo doc --no-deps --all-features
# Test Matrix
test:
name: Test
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
rust: ["stable"]
include:
# Test MSRV on Linux only - Our minimum supported version
- os: ubuntu-latest
rust: "1.88" # MSRV - Required for Edition 2024
# Test beta on Linux only to catch upcoming issues
- os: ubuntu-latest
rust: "beta"
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ matrix.rust }}
- name: Cache dependencies
uses: Swatinem/rust-cache@v2
with:
key: ${{ matrix.os }}-${{ matrix.rust }}
- name: Install cargo-nextest
shell: bash
env:
RUST_VERSION: ${{ matrix.rust }}
run: |
if [ "$RUST_VERSION" = "1.88" ]; then
cargo install cargo-nextest@0.9.114 --locked
else
cargo install cargo-nextest --locked
fi
- name: Run tests
run: cargo nextest run --all-features || cargo test --all-features
- name: Run doc tests
run: cargo test --doc --all-features
# Security Audit
security:
name: Security Audit
runs-on: ubuntu-latest
permissions:
checks: write
contents: read
security-events: write
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
- name: Cache dependencies
uses: Swatinem/rust-cache@v2
- name: Security audit
uses: rustsec/audit-check@v2.0.0
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Vulnerability scan
uses: aquasecurity/trivy-action@master
with:
scan-type: 'fs'
scan-ref: '.'
format: 'sarif'
output: 'trivy-results.sarif'
- name: Upload Trivy scan results
uses: github/codeql-action/upload-sarif@v4
if: always() && hashFiles('trivy-results.sarif') != ''
with:
sarif_file: 'trivy-results.sarif'
# Coverage
coverage:
name: Code Coverage
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
with:
components: llvm-tools-preview
- name: Cache dependencies
uses: Swatinem/rust-cache@v2
- name: Install cargo-llvm-cov
run: cargo install cargo-llvm-cov --locked
- name: Generate coverage
run: cargo llvm-cov --all-features --workspace --lcov --output-path lcov.info
- name: Upload to codecov
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: lcov.info
fail_ci_if_error: false
verbose: true
# Benchmarks
benchmark:
name: Performance Benchmarks
runs-on: ubuntu-latest
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
- name: Cache dependencies
uses: Swatinem/rust-cache@v2
- name: Run benchmarks
run: cargo bench --bench validation_bench || true
# Integration Tests
integration:
name: Integration Tests
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
- name: Cache dependencies
uses: Swatinem/rust-cache@v2
- name: Build binary
run: cargo build --release
- name: Test installation
run: |
# Test binary works
./target/release/ferrous-forge --version
# Store the binary path
FERROUS_FORGE_BIN="$PWD/target/release/ferrous-forge"
# Test init in clean environment
mkdir -p /tmp/test-ferrous-forge
cd /tmp/test-ferrous-forge
export HOME=/tmp/test-ferrous-forge
# Set up rustup for the test environment
rustup default stable
# Run init
"$FERROUS_FORGE_BIN" init --force
# Test project creation
cargo new test-project
cd test-project
# Verify standards are applied (we use 2021 edition now for compatibility)
grep -q 'edition = "202[14]"' Cargo.toml
test -f clippy.toml || echo "clippy.toml not found, continuing"
# Test validation
cargo check
# Build verification (just verify it builds on the CI platform)
build-verification:
name: Build Verification
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
- name: Cache dependencies
uses: Swatinem/rust-cache@v2
- name: Build release binary
run: cargo build --release
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: ferrous-forge-linux-x86_64
path: target/release/ferrous-forge
# Documentation
docs:
name: Documentation
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
permissions:
contents: write
pages: write
id-token: write
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
- name: Cache dependencies
uses: Swatinem/rust-cache@v2
- name: Build documentation
run: cargo doc --no-deps --all-features
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./target/doc
destination_dir: api