Upgrades tree-sitter and moves testing outside of main Rust tests #58
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: build | |
on: | |
pull_request: | |
branches: | |
- main | |
push: | |
branches: | |
- main | |
release: | |
types: | |
- published | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
fmt: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- run: cargo fmt -- --check | |
clippy: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: Swatinem/rust-cache@v2 | |
- run: cargo clippy --all-targets -- -D warnings -D clippy::all | |
test: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: Swatinem/rust-cache@v2 | |
- uses: actions/cache@v4 | |
with: | |
path: tests/cache | |
key: tests-cache | |
- run: cargo test | |
test_msv: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- run: rustup override set 1.81.0 | |
- uses: Swatinem/rust-cache@v2 | |
- uses: actions/cache@v4 | |
with: | |
path: tests/cache | |
key: tests-cache | |
- run: cargo test | |
test_tree_sitter: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: Swatinem/rust-cache@v2 | |
- uses: taiki-e/install-action@v2 | |
with: { tool: tree-sitter-cli } | |
- run: tree-sitter generate | |
working-directory: tree-sitter | |
- run: tree-sitter test | |
working-directory: tree-sitter | |
- run: tree-sitter fuzz | |
working-directory: tree-sitter | |
rustdoc: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: Swatinem/rust-cache@v2 | |
- run: cargo doc --no-deps | |
env: | |
RUSTDOCFLAGS: -D warnings | |
typos: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: taiki-e/install-action@v2 | |
with: { tool: typos-cli } | |
- run: typos | |
python_sdist: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.12" | |
- run: pip install maturin | |
- run: maturin sdist | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: wheels | |
path: target/wheels/*.tar.gz | |
wheel_linux: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
architecture: [ "x86_64", "aarch64" ] | |
continue-on-error: true | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: docker/setup-qemu-action@v3 | |
with: | |
platforms: linux/${{ matrix.architecture }} | |
if: matrix.architecture != 'x86_64' | |
- uses: Swatinem/rust-cache@v2 | |
- run: docker run -v "$(pwd)":/workdir --platform linux/${{ matrix.architecture }} quay.io/pypa/manylinux_2_28_${{ matrix.architecture }} /bin/bash /workdir/.github/workflows/manylinux_build.sh | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: wheels_${{ matrix.architecture }}_linux | |
path: target/wheels/*.whl | |
wheel_linux_musl: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
architecture: [ "x86_64" ] # TODO: aarch64 seems to fail for some reason | |
continue-on-error: true | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: docker/setup-qemu-action@v3 | |
with: | |
platforms: linux/${{ matrix.architecture }} | |
if: matrix.architecture != 'x86_64' | |
- uses: Swatinem/rust-cache@v2 | |
- run: docker run -v "$(pwd)":/workdir --platform linux/${{ matrix.architecture }} quay.io/pypa/musllinux_1_2_${{ matrix.architecture }} /bin/bash /workdir/.github/workflows/musllinux_build.sh | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: wheels_${{ matrix.architecture }}_linux_musl | |
path: target/wheels/*.whl | |
wheel_mac: | |
runs-on: macos-latest | |
strategy: | |
matrix: | |
architecture: [ "x86_64", "aarch64" ] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: Swatinem/rust-cache@v2 | |
- run: rustup target add ${{ matrix.architecture }}-apple-darwin | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.12" | |
- run: pip install maturin | |
- run: maturin build --release --target ${{ matrix.architecture }}-apple-darwin | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: wheels_${{ matrix.architecture }}_macos | |
path: target/wheels/*.whl | |
wheel_windows: | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: Swatinem/rust-cache@v2 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.12" | |
- run: Remove-Item -LiteralPath "C:\msys64\" -Force -Recurse | |
- run: pip install maturin | |
- run: maturin build --release | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: wheels_x86_64_windows | |
path: target/wheels/*.whl | |
publish_pypi: | |
if: github.event_name == 'release' | |
runs-on: ubuntu-latest | |
environment: | |
name: pypi | |
url: https://pypi.org/p/turtlefmt | |
permissions: | |
id-token: write | |
needs: | |
- python_sdist | |
- wheel_windows | |
- wheel_mac | |
- wheel_linux | |
- wheel_linux_musl | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
pattern: wheels_* | |
path: dist | |
merge-multiple: true | |
- uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
packages-dir: dist | |
skip-existing: true | |
python_test: | |
runs-on: ubuntu-latest | |
needs: | |
- wheel_linux | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.12" | |
- uses: actions/download-artifact@v4 | |
with: | |
pattern: wheels_* | |
path: dist | |
merge-multiple: true | |
- run: pip install --no-index --find-links=dist/ turtlefmt | |
- run: turtlefmt --check tests/to.simple.ttl |