Merge pull request #164 from crs4/feat/ro-crate-1.2 #447
This file contains hidden or 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
| # Copyright (c) 2024-2026 CRS4 | |
| # | |
| # Licensed under the Apache License, Version 2.0 (the "License"); | |
| # you may not use this file except in compliance with the License. | |
| # You may obtain a copy of the License at | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Unless required by applicable law or agreed to in writing, software | |
| # distributed under the License is distributed on an "AS IS" BASIS, | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| # See the License for the specific language governing permissions and | |
| # limitations under the License. | |
| name: π§ͺ CI Pipeline 1 -- Testing | |
| # Controls when the action will run. Triggers the workflow on push or pull request | |
| # events but only for the master branch | |
| on: | |
| push: | |
| branches: | |
| - "**" | |
| tags: | |
| - "*.*.*" | |
| paths: | |
| - "**" | |
| - "!docs/**" | |
| - "!examples/**" | |
| pull_request: | |
| paths: | |
| - "**" | |
| - "!docs/**" | |
| - "!examples/**" | |
| env: | |
| TERM: xterm | |
| VENV_PATH: .venv | |
| PYTHON_VERSION: "3.11" | |
| FORCE_COLOR: "1" # Force color output in CI | |
| jobs: | |
| # Verifies code style, bugs, complexity, and spelling via **ruff** + **typos** | |
| lint: | |
| name: π¨ Lint and spellcheck | |
| runs-on: ubuntu-latest | |
| steps: | |
| # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it | |
| - name: β¬οΈ Checkout code | |
| uses: actions/checkout@v6 | |
| - name: π Set up Python v${{ env.PYTHON_VERSION }} | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: ${{ env.PYTHON_VERSION }} | |
| - name: π½ Install ruff (version from pyproject.toml) | |
| run: | | |
| # Read the ruff version constraint from pyproject.toml. | |
| # Poetry uses caret syntax (e.g. "^0.15.15") which means | |
| # "compatible with 0.15.x". pip uses PEP 440 "~=" for the | |
| # same semantics on pre-1.0 packages. | |
| pip install "$( | |
| python -c " | |
| import tomllib | |
| cfg = tomllib.loads(open('pyproject.toml').read()) | |
| constraint = cfg['tool']['poetry']['group']['dev']['dependencies']['ruff'] | |
| # Drop the caret prefix so we can pass ~= to pip | |
| version = constraint.lstrip('^') | |
| print(f'ruff~={version}') | |
| ")" | |
| - name: β Lint Python code with ruff | |
| run: | | |
| # Produce GitHub annotations; suppress exit code so the | |
| # statistics summary still runs. | |
| ruff check rocrate_validator tests --output-format github || true | |
| # Emit a compact rule-count summary and fail the job if needed. | |
| ruff check rocrate_validator tests --statistics | |
| - name: β Spell check code and profiles (covers Python and SHACL) | |
| uses: crate-ci/typos@v1.47.0 | |
| # Runs the tests | |
| test: | |
| name: β Run tests | |
| runs-on: ubuntu-latest | |
| needs: [lint] | |
| steps: | |
| - name: β¬οΈ Checkout | |
| uses: actions/checkout@v6 | |
| - name: π Set up Python v${{ env.PYTHON_VERSION }} | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: ${{ env.PYTHON_VERSION }} | |
| - name: π Upgrade pip | |
| run: pip install --upgrade pip | |
| - name: π Initialise a virtual env | |
| run: python -m venv ${VENV_PATH} | |
| - name: π Enable virtual env | |
| run: source ${VENV_PATH}/bin/activate | |
| - name: π½ Install Poetry | |
| run: pip install poetry | |
| - name: π½ Install dependencies | |
| run: poetry install --no-interaction --no-ansi | |
| - name: β Run tests | |
| run: poetry run pytest | |
| env: | |
| TERM: "dumb" | |
| LINES: "50" | |
| COLUMNS: "120" |