Repository navigation
98 lines (86 loc) · 2.95 KB
/
Copy pathpython-lab-tests.yml
File metadata and controls
98 lines (86 loc) · 2.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
name: Python - Lab Tests
on:
workflow_dispatch:
pull_request:
branches: ["main"]
paths:
- "python/packages/lab/**"
- ".github/workflows/python-lab-tests.yml"
merge_group:
branches: ["main"]
schedule:
- cron: "0 0 * * *" # Run at midnight UTC daily
env:
# Configure a constant location for the uv cache
UV_CACHE_DIR: /tmp/.uv-cache
jobs:
paths-filter:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: read
outputs:
labChanges: ${{ steps.filter.outputs.lab }}
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: dorny/paths-filter@ceb8a2b8f2d89434be7ff52d3de7ec3738c5cc9d # v4.0.3
id: filter
with:
filters: |
lab:
- 'python/packages/lab/**'
- '.github/workflows/python-lab-tests.yml'
python-lab-tests:
name: Python Lab Tests
needs: paths-filter
if: >
github.event_name == 'workflow_dispatch' ||
github.event_name == 'schedule' ||
needs.paths-filter.outputs.labChanges == 'true'
runs-on: ${{ matrix.os }}
strategy:
fail-fast: true
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
# TODO(ekzhu): re-enable macos-latest when this is fixed: https://github.com/actions/runner-images/issues/11881
os: [ubuntu-latest, windows-latest]
env:
UV_PYTHON: ${{ matrix.python-version }}
permissions:
contents: read
defaults:
run:
working-directory: python/packages/lab
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Set up uv
uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
with:
version-file: "python/packages/lab/pyproject.toml"
python-version: ${{ matrix.python-version }}
enable-cache: true
cache-suffix: ${{ runner.os }}-${{ matrix.python-version }}
cache-dependency-glob: "python/packages/lab/uv.lock"
- name: Install the Lab project
run: uv sync --all-extras --all-groups --frozen --prerelease=if-necessary
# Lab specific tests
- name: Run lab tests
run: uv run poe test
- name: Run resource-intensive lab tests
run: uv run pytest -m "resource_intensive and not integration" --junitxml=test-results-resource-intensive.xml
- name: Run lab lint
run: uv run poe lint
- name: Run lab format check
run: uv run poe fmt --check
- name: Run lab type checking
run: uv run poe pyright
# Surface failing tests
- name: Surface failing tests
if: always()
uses: pmeier/pytest-results-action@fdc7f18d9934e38aca411ca9557e6577bd25ca9c # v0.9.0
with:
path: ./python/packages/lab/**.xml
summary: true
display-options: fEX
fail-on-empty: false
title: Lab Test Results