Skip to content

Commit

Permalink
refactor tests
Browse files Browse the repository at this point in the history
Signed-off-by: Luka Peschke <[email protected]>
  • Loading branch information
lukapeschke committed Jan 26, 2024
1 parent e810da1 commit 585290d
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 33 deletions.
91 changes: 64 additions & 27 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,23 +7,18 @@ on:
pull_request:
types: [opened, synchronize, reopened]

env:
MIN_PYTHON_VERSION: "3.8"

jobs:
lint_and_test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
os: ["ubuntu-latest", "macos-latest", "windows-latest"]
architecture: [x86-64, aarch64]
exclude:
- os: windows-latest
architecture: aarch64
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "${{ matrix.python-version }}"
python-version: "${{ env.MIN_PYTHON_VERSION }}"
- name: Set up rust toolchain
uses: actions-rs/toolchain@v1
with:
Expand All @@ -33,32 +28,47 @@ jobs:
- name: Set up rustfmt
run: rustup component add rustfmt

- name: Set Rust target for aarch64
if: matrix.architecture == 'aarch64'
id: target
run: |
TARGET=${{ matrix.os == 'macos-latest' && 'aarch64-apple-darwin' || 'aarch64-unknown-linux-gnu'}}
echo "target=$TARGET" >> $GITHUB_OUTPUT
# Maturin requires a venv to be activated, that's why we have to create one here
- name: Create virtualenv
if: matrix.os != 'windows-latest'
run: |
python -m venv .venv
source .venv/bin/activate
make install-test-requirements
- name: Lint
if: matrix.os != 'windows-latest'
run: |
source .venv/bin/activate
make lint
- name: Test
# GitHub provides only x86_64 runners, so we cannot test on arm architecture
test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
os: ["ubuntu-latest", "macos-latest", "windows-latest"]
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Set up rust toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- name: Set up rustfmt
run: rustup component add rustfmt

# Maturin requires a venv to be activated, that's why we have to create one here
- name: Create virtualenv
if: matrix.os != 'windows-latest'
run: |
python -m venv .venv
source .venv/bin/activate
TARGET="${{ steps.target.outputs.target }}" make test-ci
make install-test-requirements
- name: Create virtualenv (windows)
if: matrix.os == 'windows-latest'
Expand All @@ -67,14 +77,41 @@ jobs:
.\.venv\Scripts\activate.bat
make install-test-requirements
- name: Lint (windows)
if: matrix.os == 'windows-latest'
- name: Test
if: matrix.os != 'windows-latest'
run: |
.\.venv\Scripts\activate.bat
make lint
source .venv/bin/activate
make test-ci
- name: Test (windows)
if: matrix.os == 'windows-latest'
run: |
python -m venv .venv
.\.venv\Scripts\activate.bat
TARGET="${{ steps.target.outputs.target }}" make test-ci
make test-ci
check-wheel-build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
os: ["ubuntu-latest", "macos-latest", "windows-latest"]
architecture: [x86-64, aarch64]
exclude:
- os: windows-latest
architecture: aarch64

- name: Set Rust target for aarch64
if: matrix.architecture == 'aarch64'
id: target
run: |
TARGET=${{ matrix.os == 'macos-latest' && 'aarch64-apple-darwin' || 'aarch64-unknown-linux-gnu'}}
echo "target=$TARGET" >> $GITHUB_OUTPUT
- name: build (fast)
uses: messense/maturin-action@v1
with:
manylinux: auto
command: build
args: "-o dist --interpreter python${{ matrix.python-version }}"
target: ${{ steps.target.outputs.target }}
6 changes: 1 addition & 5 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,7 @@ dev-setup: install-test-requirements install-doc-requirements
pre-commit install

dev-install:
if [ -z "${TARGET}" ]; then \
maturin develop -E pandas,polars; \
else \
maturin develop --target "${TARGET}" -E pandas,polars; \
fi
maturin develop -E pandas,polars

prod-install:
./prod_install.sh
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,6 @@ testpaths = [

[tool.ruff]
line-length = 100

target-version = "py38"
# Enable Pyflakes `E` and `F` codes by default.
select = ["E", "F", "I", "Q", "FA102"]

0 comments on commit 585290d

Please sign in to comment.