Skip to content

chore(deps-dev): bump pytest-textual-snapshot from 1.0.0 to 1.1.0 #3701

chore(deps-dev): bump pytest-textual-snapshot from 1.0.0 to 1.1.0

chore(deps-dev): bump pytest-textual-snapshot from 1.0.0 to 1.1.0 #3701

Workflow file for this run

name: ci
on:
push:
branches:
- main
pull_request:
schedule:
- cron: "0 */6 * * *"
jobs:
static-analysis:
strategy:
matrix:
task: ["lint", "fmt", "type-check"]
fail-fast: false
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v5
- name: Set up Python
run: uv python install 3.10
- name: Install dependencies
run: uv sync --group dev --frozen
- run: uv run invoke ${{ matrix.task }} --check
validate-docs-build:
name: Validate documentation build
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v5
- name: Set up Python
run: uv python install 3.10
- name: Install dependencies
run: uv sync --group docs --frozen
- name: Build documentation
run: uv run mkdocs build --strict
tests:
strategy:
fail-fast: ${{ github.event.pull_request.draft == true }}
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v5
- name: Set up Python ${{ matrix.python-version }}
run: uv python install ${{ matrix.python-version }}
- name: Install dependencies
run: uv sync --group dev --frozen
- name: Run tests
run: uv run coverage run -m pytest -vv
- name: Generate coverage report
run: uv run coverage xml
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v4.0.1
with:
token: ${{ secrets.CODECOV_TOKEN }}
slug: Kilo59/ruff-sync
test-no-optional-deps:
name: Test without optional dependencies
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install ruff-sync (no extras)
# We install only the base package without 'dev' or 'tui' groups.
run: pip install .
- name: Run optional dependency validation script
run: bash tests/test_minimal_imports.sh
pre-publish:
name: Test package installation
needs: [static-analysis, tests]
if: >-
(github.event_name == 'push' && github.ref == 'refs/heads/main') ||
(github.event_name == 'pull_request' && github.event.pull_request.draft == false)
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v5
- name: Set up Python
run: uv python install 3.10
- name: Build package
run: |
echo "Building ruff-sync package..."
uv build
- name: Install packaged program
run: |
echo "Installing built wheel..."
uv tool install $(ls dist/*.whl)
echo "Version: $(ruff-sync --version)"
- name: Test package installation (Pull)
run: |
echo "Testing ruff-sync pull against Kilo59/ruff-sync..."
ruff-sync https://github.com/Kilo59/ruff-sync
- name: Test package installation (Check)
run: |
echo "Testing ruff-sync check against Kilo59/ruff-sync..."
ruff-sync check https://github.com/Kilo59/ruff-sync
- name: Dogfood Ruff-Sync Check (GitHub Format)
run: |
echo "Dogfooding ruff-sync check with GitHub annotations..."
# This will produce annotations if the current branch's ruff config
# has drifted from the upstream (main branch).
ruff-sync check https://github.com/Kilo59/ruff-sync --output-format github
- name: Verify semantic check failure
run: |
echo "Verifying that --semantic check fails for kitchen-sink config (expected failure)..."
! ruff-sync check --semantic https://github.com/Kilo59/ruff-sync --path configs/kitchen-sink
publish-docs:
name: Publish Documentation
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
needs: [pre-publish]
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install uv
uses: astral-sh/setup-uv@v5
- name: Set up Python
run: uv python install 3.10
- name: Install dependencies
run: uv sync --group docs --frozen
- name: Fetch gh-pages branch
# mike needs the gh-pages branch history to make incremental commits.
# Without fetching it first, mike may reset the entire branch.
run: git fetch origin gh-pages --depth=1 || true
- name: Deploy documentation
run: |
# Configure git
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
# Extract version from pyproject.toml in a TOML-aware way using already installed dependencies
VERSION=$(uv run python - << 'PY'
import pathlib
import tomlkit
pyproject = pathlib.Path("pyproject.toml")
data = tomlkit.parse(pyproject.read_text(encoding="utf-8"))
# Support both top-level `version` and `[project]` table `version`
version = (
data.get("project", {}).get("version")
or data.get("version")
)
if not version:
raise SystemExit("Version not found in pyproject.toml")
print(version)
PY
)
echo "Current Version: $VERSION"
if [[ "$VERSION" == *".dev"* ]]; then
echo "Deploying DEV documentation..."
uv run mike deploy --push --update-aliases dev
else
echo "Deploying STABLE documentation..."
uv run mike deploy --push --update-aliases "$VERSION" stable
uv run mike set-default --push stable
fi
publish:
name: Build and publish to PyPI
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
needs: [pre-publish]
runs-on: ubuntu-latest
permissions:
# This permission is required for trusted publishing
id-token: write
# This permission is required to read the repository content
contents: read
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v5
- name: Set up Python
run: uv python install 3.10
- name: Build package
run: uv build
- name: Publish package
run: |
# Capture stderr to a file so we can check for specific error strings
uv publish 2> publish_err.log || {
exit_code=$?
# Check for common "version already exists" markers in the output
if grep -qi "already exists" publish_err.log; then
echo "::warning title=Ruff Sync Publish::Version already exists on PyPI. Skipping upload."
else
cat publish_err.log
exit $exit_code
fi
}