Skip to content

Weekly testing and recalibration of test timings #10

Weekly testing and recalibration of test timings

Weekly testing and recalibration of test timings #10

Workflow file for this run

name: Weekly testing and recalibration of test timings
on:
schedule:
- cron: "5 3 * * 2"
jobs:
calibrate-timings:
runs-on: ubuntu-latest
permissions:
pull-requests: write
contents: write
steps:
- name: install
uses: khanlab/actions/.github/actions/[email protected]
id: setup
with:
python-version: "3.8"
install-library: true
- name: build docker test container
uses: ./.github/actions/build-test-container
with:
python-version: ${{ steps.setup.outputs.python-version }}
load: true
- name: Count current number of tests
id: count
run: |
echo "NUM=$(
poetry run pytest --collect-only -q | head -n -2 | wc -l
)" >> "$GITHUB_OUTPUT"
- name: Count number of timed tests
id: timed-count
run: |
echo "NUM=$(jq 'keys | length' .test_durations)" >> "$GITHUB_OUTPUT"
- name: Test with pytest
if: ${{ steps.count.outputs.NUM }} != ${{ steps.timed-count.outputs.NUM }}
env:
HYPOTHESIS_PROFILE: pr
run: >-
poetry run pytest -n auto --store-durations --clean-durations
--doctest-modules --ignore=docs
--ignore=snakebids/project_template --benchmark-disable
- name: remove spuriously include "Dancefile.inject"
run: git clean -df
- name: Check if there are changes
id: changes
run: |
echo "changed=$(git diff-files --quiet && echo 0 || echo 1)" >> "$GITHUB_OUTPUT"
- name: debug outputs
run: |
echo "Current # tests: ${{ steps.count.outputs.NUM }}"
echo "Current # timed tests: ${{ steps.timed-count.outputs.NUM }}"
echo "Changes?: ${{ steps.changes.outputs.changed }}"
- name: Create PR
if: steps.changes.outputs.changed == 1
uses: peter-evans/create-pull-request@v6
with:
commit-message: Update test timings file
branch: maint/update-test-timings
title: Merge updated test timings
labels: maintenance
body: >
The number of tests has changed since the last generated test-timings
file. This PR contains an automatically regenerated file.
build-cache-env:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
steps:
- uses: khanlab/actions/.github/actions/[email protected]
id: setup
with:
python-version: ${{ matrix.python-version }}
cache-key: pypi
install-deps-only: dev
install-library: false
- name: build docker test container
uses: ./.github/actions/build-test-container
with:
python-version: ${{ steps.setup.outputs.python-version }}
load: true
- name: install lib
run: poetry run pip install .
test:
runs-on: ubuntu-latest
needs: [ 'build-cache-env' ]
strategy:
matrix:
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12']
split: ['1', '2', '3', '4', '5']
fail-fast: false
steps:
- uses: khanlab/actions/.github/actions/[email protected]
id: setup
with:
python-version: ${{ matrix.python-version }}
cache-key: nightly
install-deps-only: dev
install-library: false
- name: install lib
run: poetry run pip install .
- name: build docker test container
uses: ./.github/actions/build-test-container
with:
python-version: ${{ steps.setup.outputs.python-version }}
load: true
- name: Test with pytest
env:
HYPOTHESIS_PROFILE: pr
run: >-
poetry run pytest -n auto --splits 5 --group ${{ matrix.split }}
--doctest-modules --ignore=docs
--ignore=snakebids/project_template --benchmark-disable