Add equality test #650
Workflow file for this run
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: Tests | |
on: | |
push: | |
paths-ignore: | |
- 'docs/**' | |
branches: | |
- master | |
pull_request: | |
paths-ignore: | |
- 'docs/**' | |
branches: | |
- '**' | |
jobs: | |
Linting: | |
name: Linting | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: "3.11" | |
- name: "Install pre-commit" | |
run: pip install pre-commit | |
- name: "Install Rust toolchain" | |
run: rustup component add rustfmt clippy | |
- run: pre-commit run --all-files | |
Tests: | |
name: ${{ matrix.os }} / ${{ matrix.python-version }} | |
runs-on: ${{ matrix.os }}-latest | |
strategy: | |
matrix: | |
os: [Ubuntu, MacOS, Windows] | |
python-version: [3.9, "3.10", "3.11", "3.12", "3.13"] | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
allow-prereleases: true | |
- name: Get full Python version | |
id: full-python-version | |
run: | | |
echo ::set-output name=version::$(python -c "import sys; print('-'.join(str(v) for v in sys.version_info))") | |
- name: Install poetry | |
run: | | |
curl -fsS https://install.python-poetry.org | python - --preview -y | |
- name: Update PATH | |
if: ${{ matrix.os != 'Windows' }} | |
run: echo "$HOME/.local/bin" >> $GITHUB_PATH | |
- name: Update Path for Windows | |
if: ${{ matrix.os == 'Windows' }} | |
run: echo "$APPDATA\Python\Scripts" >> $GITHUB_PATH | |
- name: Configure poetry | |
run: poetry config virtualenvs.in-project true | |
- name: Set up cache | |
uses: actions/cache@v3 | |
id: cache | |
with: | |
path: .venv | |
key: venv-${{ runner.os }}-${{ steps.full-python-version.outputs.version }}-${{ hashFiles('**/poetry.lock') }} | |
- name: Ensure cache is healthy | |
# MacOS does not come with `timeout` command out of the box | |
if: steps.cache.outputs.cache-hit == 'true' && matrix.os != 'MacOS' | |
run: timeout 10s poetry run pip --version || rm -rf .venv | |
- name: Install runtime, testing, and typing dependencies | |
run: poetry install --only main --only test --only typing --only build --no-root -vvv | |
- name: Install project | |
run: poetry run maturin develop | |
- name: Run type checking | |
run: poetry run mypy | |
- name: Uninstall typing dependencies | |
# This ensures pendulum runs without typing_extensions installed | |
run: poetry install --only main --only test --only build --sync --no-root -vvv | |
- name: Test Pure Python | |
run: | | |
PENDULUM_EXTENSIONS=0 poetry run pytest -q tests | |
- name: Test | |
run: | | |
poetry run pytest -q tests |