Skip to content

Pin the representation growth laws to the emitters' actual output #174

Pin the representation growth laws to the emitters' actual output

Pin the representation growth laws to the emitters' actual output #174

Workflow file for this run

name: unit-tests
on:
push:
branches:
- "**"
pull_request:
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
# Pin pip instead of taking whatever released most recently. Every job used to
# run `pip install --upgrade pip`, so each run resolved dependencies with a
# different, unannounced resolver: CI was non-reproducible by construction,
# and a pip release could break the build with no change in this repository.
#
# This does NOT prevent transient index failures, and should not be mistaken
# for a fix for one. A case is on record: the pull_request run for PR #14
# failed with `no matching distributions available for your environment:
# mdurl` while the identical commit had passed 15 minutes earlier on push,
# passed on two other platforms in that same run, and passed again on re-run
# with no code change. mdurl is a pure-Python py3-none-any wheel, so nothing
# about the environment made it uninstallable -- that was the index, not the
# resolver. The right response there is a re-run. The right response to an
# unpinned toolchain is this pin.
#
# Bump deliberately, as its own commit, so a resolver change lands where it
# can be attributed instead of appearing inside an unrelated PR.
PIP_VERSION: "26.2.1"
jobs:
wrapper-cross-platform:
name: wrapper-unit (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- macos-latest
- windows-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install the package and its declared dependencies
# rdflib is a required runtime dependency (see pyproject.toml) and the
# CLI imports it through the data-linking module while building its
# argument parser, so even `--help` needs it. Installing the project
# editable pulls exactly what pyproject declares and cannot drift from
# it, while tests still run against the checkout.
run: |
python -m pip install "pip==${{ env.PIP_VERSION }}"
python -m pip install -e .
- name: Run cross-platform wrapper tests (no real external tools)
run: python -m unittest -v test.test_vcf_rdfizer_cross_platform_unit
shell-posix:
name: shell+pipeline-unit (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- ubuntu-22.04
- macos-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install the package and its declared dependencies
# rdflib is a required runtime dependency (see pyproject.toml) and the
# CLI imports it through the data-linking module while building its
# argument parser, so even `--help` needs it. Installing the project
# editable pulls exactly what pyproject declares and cannot drift from
# it, while tests still run against the checkout.
run: |
python -m pip install "pip==${{ env.PIP_VERSION }}"
python -m pip install -e .
- name: Run full unit test suite
run: python -m unittest discover -s test -p "test_*_unit.py" -v
coverage:
name: coverage-upload
runs-on: ubuntu-latest
needs:
- wrapper-cross-platform
- shell-posix
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Run coverage
run: |
python -m pip install "pip==${{ env.PIP_VERSION }}" coverage
python -m pip install -e .
coverage run -m unittest discover -s test -p "test_*_unit.py"
coverage xml -o coverage.xml
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v5
with:
files: ./coverage.xml
flags: unittests
name: vcf-rdfizer-unit-tests
fail_ci_if_error: false
package-smoke:
name: package-smoke (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- macos-latest
- windows-latest
needs:
- wrapper-cross-platform
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Build + install wheel
run: |
python -m pip install "pip==${{ env.PIP_VERSION }}" build
python -m build
python -c "import glob,subprocess,sys; wheels=sorted(glob.glob('dist/*.whl')); wheels or (_ for _ in ()).throw(SystemExit('No wheel files found in dist/')); print(f'Installing wheel: {wheels[-1]}'); subprocess.check_call([sys.executable,'-m','pip','install',wheels[-1]])"
python -m vcf_rdfizer --help