Skip to content

Commit e45d3d7

Browse files
committed
Split into two workflows
1 parent 85caa35 commit e45d3d7

3 files changed

Lines changed: 158 additions & 131 deletions

File tree

Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
name: Run test suite
2+
3+
on:
4+
pull_request:
5+
6+
push:
7+
branches:
8+
- main
9+
10+
concurrency:
11+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
12+
cancel-in-progress: true
13+
14+
jobs:
15+
tests-base:
16+
strategy:
17+
matrix:
18+
os: [ubuntu-latest, windows-latest, macos-latest]
19+
20+
# test with oldest and latest supported Python versions
21+
# NOTE: If bumping the minimum Python version here, also do it in
22+
# ruff.toml, setup.py and other CI files as well.
23+
python-version: ["3.10", "3.12"]
24+
runtime-deps: ["latest"]
25+
26+
include:
27+
- os: ubuntu-latest
28+
python-version: "3.12"
29+
runtime-deps: "oldest"
30+
31+
fail-fast: false
32+
33+
runs-on: ${{ matrix.os }}
34+
35+
steps:
36+
- name: Set up Git repository
37+
uses: actions/checkout@v4
38+
39+
- name: Set up WSL (Windows)
40+
uses: Vampire/setup-wsl@v5
41+
if: runner.os == 'Windows'
42+
with:
43+
distribution: Ubuntu-24.04
44+
45+
- name: Set up Python
46+
if: runner.os != 'Windows'
47+
uses: actions/setup-python@v5
48+
with:
49+
python-version: ${{ matrix.python-version }}
50+
51+
- name: Set up Python (Windows)
52+
if: runner.os == 'Windows'
53+
shell: wsl-bash {0}
54+
run: |
55+
python_version=${{ matrix.python-version }}
56+
if [ $python_version == "3.12" ]; then
57+
# Python 3.12 is the default `python3` in Ubuntu 24.04
58+
python_version="3"
59+
fi
60+
61+
export DEBIAN_FRONTEND=noninteractive
62+
sudo apt-get update
63+
sudo apt-get install -y software-properties-common gnupg2
64+
sudo add-apt-repository ppa:deadsnakes/ppa
65+
sudo apt-get install -y python3-pip python${python_version} python${python_version}-venv
66+
67+
python${python_version} -m venv ~/venv
68+
69+
export PATH="$HOME/venv/bin:$PATH"
70+
python -m pip install --upgrade pip
71+
72+
- name: Set up uv
73+
uses: astral-sh/setup-uv@v6
74+
with:
75+
enable-cache: true
76+
77+
- name: Restore UV environment
78+
run: cp production.uv.lock uv.lock
79+
80+
- name: Install package
81+
if: runner.os != 'Windows'
82+
run: |
83+
uv sync --extra dev --frozen
84+
85+
if [ "${{ matrix.runtime-deps }}" == "oldest" ]; then
86+
# replace >= with == in pyproject.toml to install oldest runtime deps
87+
sed -i 's/>=/==/g' ./tesseract_core/runtime/meta/pyproject.toml
88+
# roll back changes to requires-python
89+
sed -i 's/requires-python\s*=\s*\"==/requires-python = \">=/g' ./tesseract_core/runtime/meta/pyproject.toml
90+
uv pip install -e .[runtime]
91+
fi
92+
93+
- name: Install package (Windows)
94+
if: runner.os == 'Windows'
95+
shell: wsl-bash {0}
96+
run: |
97+
export PATH="$HOME/venv/bin:$PATH"
98+
99+
pip install uv
100+
uv sync --extra dev --frozen
101+
102+
if [ "${{ matrix.runtime-deps }}" == "oldest" ]; then
103+
# replace >= with == in pyproject.toml to install oldest runtime deps
104+
sed -i 's/>=/==/g' ./tesseract_core/runtime/meta/pyproject.toml
105+
# roll back changes to requires-python
106+
sed -i 's/requires-python\s*=\s*\"==/requires-python = \">=/g' ./tesseract_core/runtime/meta/pyproject.toml
107+
uv pip install -e .[runtime]
108+
fi
109+
110+
- name: Run test suite
111+
if: runner.os != 'Windows'
112+
run: |
113+
uv run --no-sync pytest \
114+
--skip-endtoend \
115+
--cov-report=term-missing:skip-covered \
116+
--cov-report=xml:coverage.xml \
117+
--cov=tesseract_core
118+
119+
- name: Run test suite (Windows)
120+
if: runner.os == 'Windows'
121+
shell: wsl-bash {0}
122+
run: |
123+
export PATH="$HOME/venv/bin:$PATH"
124+
uv run --no-sync pytest \
125+
--skip-endtoend \
126+
--cov-report=term-missing:skip-covered \
127+
--cov-report=xml:coverage.xml \
128+
--cov=tesseract_core
129+
130+
- name: Upload coverage reports to Codecov
131+
uses: codecov/codecov-action@v5.4.3
132+
with:
133+
token: ${{ secrets.CODECOV_TOKEN }}
134+
slug: pasteurlabs/tesseract-core
135+
files: coverage*.xml
136+
fail_ci_if_error: true
137+
138+
all-ok:
139+
needs: [tests-base]
140+
141+
runs-on: ubuntu-latest
142+
143+
steps:
144+
- name: Check for errors
145+
run: |
146+
if [ "${{ needs.tests-base.result }}" != "success" ]; then
147+
echo "Base tests failed"
148+
exit 1
149+
fi
150+
151+
echo "All base tests passed!"
Lines changed: 5 additions & 131 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@ on:
44
pull_request:
55
paths:
66
- "tesseract_core/**"
7-
- "tests/**"
7+
- "tests/endtoend_tests/**"
88
- "demo/**"
99
- "examples/**"
10+
- ".github/workflows/run_e2e_tests.yml"
11+
- "production.uv.lock"
1012

1113
push:
1214
branches:
@@ -16,137 +18,14 @@ on:
1618
- "tests/endtoend_tests/**"
1719
- "demo/**"
1820
- "examples/**"
21+
- ".github/workflows/run_e2e_tests.yml"
1922
- "production.uv.lock"
20-
- ".github/workflows/run_tests.yml"
2123

2224
concurrency:
2325
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
2426
cancel-in-progress: true
2527

2628
jobs:
27-
tests-base:
28-
strategy:
29-
matrix:
30-
os: [ubuntu-latest, windows-latest, macos-latest]
31-
32-
# test with oldest and latest supported Python versions
33-
# NOTE: If bumping the minimum Python version here, also do it in
34-
# ruff.toml, setup.py and other CI files as well.
35-
python-version: ["3.10", "3.12"]
36-
runtime-deps: ["latest"]
37-
38-
include:
39-
- os: ubuntu-latest
40-
python-version: "3.12"
41-
runtime-deps: "oldest"
42-
43-
fail-fast: false
44-
45-
runs-on: ${{ matrix.os }}
46-
47-
steps:
48-
- name: Set up Git repository
49-
uses: actions/checkout@v4
50-
51-
- name: Set up WSL (Windows)
52-
uses: Vampire/setup-wsl@v5
53-
if: runner.os == 'Windows'
54-
with:
55-
distribution: Ubuntu-24.04
56-
57-
- name: Set up Python
58-
if: runner.os != 'Windows'
59-
uses: actions/setup-python@v5
60-
with:
61-
python-version: ${{ matrix.python-version }}
62-
63-
- name: Set up Python (Windows)
64-
if: runner.os == 'Windows'
65-
shell: wsl-bash {0}
66-
run: |
67-
python_version=${{ matrix.python-version }}
68-
if [ $python_version == "3.12" ]; then
69-
# Python 3.12 is the default `python3` in Ubuntu 24.04
70-
python_version="3"
71-
fi
72-
73-
export DEBIAN_FRONTEND=noninteractive
74-
sudo apt-get update
75-
sudo apt-get install -y software-properties-common gnupg2
76-
sudo add-apt-repository ppa:deadsnakes/ppa
77-
sudo apt-get install -y python3-pip python${python_version} python${python_version}-venv
78-
79-
python${python_version} -m venv ~/venv
80-
81-
export PATH="$HOME/venv/bin:$PATH"
82-
python -m pip install --upgrade pip
83-
84-
- name: Set up uv
85-
uses: astral-sh/setup-uv@v6
86-
with:
87-
enable-cache: true
88-
89-
- name: Restore UV environment
90-
run: cp production.uv.lock uv.lock
91-
92-
- name: Install package
93-
if: runner.os != 'Windows'
94-
run: |
95-
uv sync --extra dev --frozen
96-
97-
if [ "${{ matrix.runtime-deps }}" == "oldest" ]; then
98-
# replace >= with == in pyproject.toml to install oldest runtime deps
99-
sed -i 's/>=/==/g' ./tesseract_core/runtime/meta/pyproject.toml
100-
# roll back changes to requires-python
101-
sed -i 's/requires-python\s*=\s*\"==/requires-python = \">=/g' ./tesseract_core/runtime/meta/pyproject.toml
102-
uv pip install -e .[runtime]
103-
fi
104-
105-
- name: Install package (Windows)
106-
if: runner.os == 'Windows'
107-
shell: wsl-bash {0}
108-
run: |
109-
export PATH="$HOME/venv/bin:$PATH"
110-
111-
pip install uv
112-
uv sync --extra dev --frozen
113-
114-
if [ "${{ matrix.runtime-deps }}" == "oldest" ]; then
115-
# replace >= with == in pyproject.toml to install oldest runtime deps
116-
sed -i 's/>=/==/g' ./tesseract_core/runtime/meta/pyproject.toml
117-
# roll back changes to requires-python
118-
sed -i 's/requires-python\s*=\s*\"==/requires-python = \">=/g' ./tesseract_core/runtime/meta/pyproject.toml
119-
uv pip install -e .[runtime]
120-
fi
121-
122-
- name: Run test suite
123-
if: runner.os != 'Windows'
124-
run: |
125-
uv run --no-sync pytest \
126-
--skip-endtoend \
127-
--cov-report=term-missing:skip-covered \
128-
--cov-report=xml:coverage.xml \
129-
--cov=tesseract_core
130-
131-
- name: Run test suite (Windows)
132-
if: runner.os == 'Windows'
133-
shell: wsl-bash {0}
134-
run: |
135-
export PATH="$HOME/venv/bin:$PATH"
136-
uv run --no-sync pytest \
137-
--skip-endtoend \
138-
--cov-report=term-missing:skip-covered \
139-
--cov-report=xml:coverage.xml \
140-
--cov=tesseract_core
141-
142-
- name: Upload coverage reports to Codecov
143-
uses: codecov/codecov-action@v5.4.3
144-
with:
145-
token: ${{ secrets.CODECOV_TOKEN }}
146-
slug: pasteurlabs/tesseract-core
147-
files: coverage*.xml
148-
fail_ci_if_error: true
149-
15029
get-e2e-matrix:
15130
runs-on: ubuntu-latest
15231

@@ -326,18 +205,13 @@ jobs:
326205
327206
328207
all-ok:
329-
needs: [tests-base, tests-e2e, tests-demos]
208+
needs: [tests-e2e, tests-demos]
330209

331210
runs-on: ubuntu-latest
332211

333212
steps:
334213
- name: Check for errors
335214
run: |
336-
if [ "${{ needs.tests-base.result }}" != "success" ]; then
337-
echo "Base tests failed"
338-
exit 1
339-
fi
340-
341215
if [ "${{ needs.tests-e2e.result }}" != "success" ]; then
342216
echo "E2E tests failed"
343217
exit 1

.github/workflows/test_pip_install.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ name: Test installation via pip
33
on:
44
# run on PRs for validation
55
pull_request:
6+
paths:
7+
- "requirements.txt"
68

79

810
jobs:

0 commit comments

Comments
 (0)