Skip to content

Add CI on windows-latest, for Python 3.14 only #1747

Add CI on windows-latest, for Python 3.14 only

Add CI on windows-latest, for Python 3.14 only #1747

Workflow file for this run

name: CI
on:
pull_request:
paths-ignore:
- '**.md'
- '**.rst'
- 'LICENSE.txt'
- 'doc/**/*.txt'
- '**/AUTHORS'
- '**/SPONSORS'
- '**/TIPS'
jobs:
tests:
name: Tests
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
with:
version: "latest"
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: ${{ matrix.python-version }}
- name: Start MySQL
run: |
sudo /etc/init.d/mysql start
- name: Install dependencies
run: uv sync --all-extras -p ${{ matrix.python-version }}
- name: Wait for MySQL connection
run: |
while ! mysqladmin ping --host=localhost --port=3306 --user=root --password=root --silent; do
sleep 5
done
- name: Pytest / behave
env:
PYTEST_PASSWORD: root
PYTEST_HOST: 127.0.0.1
TERM: xterm
run: |
uv run tox -e py${{ matrix.python-version }}
tests-macos:
name: Tests macOS
runs-on: macos-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.14"]
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
with:
version: "latest"
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: ${{ matrix.python-version }}
- name: Set up MySQL
run: |
brew install mysql
- name: Start MySQL
run: |
brew services start mysql
- name: Install dependencies
run: uv sync --all-extras -p ${{ matrix.python-version }}
- name: Wait for MySQL connection
run: |
while ! mysqladmin ping --host=localhost --port=3306 --user=root --silent; do
sleep 5
done
- name: Set MySQL test credentials
run: |
$(brew --prefix mysql)/bin/mysqladmin --host=localhost --port=3306 --user=root password root
- name: Pytest / behave
env:
PYTEST_PASSWORD: root
PYTEST_HOST: 127.0.0.1
TERM: xterm
run: |
uv run tox -e py${{ matrix.python-version }}
tests-windows:
name: Tests Windows
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.14"]
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
with:
version: "latest"
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: ${{ matrix.python-version }}
- name: Inspect MySQL installation
shell: cmd
run: |
dir "C:\Program Files\MySQL"
dir "C:\Program Files\MySQL\MySQL Server 8.0"
"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld" --help --verbose
- name: Inspect home directory
run: |
$HOME
- name: Initialize MySQL
shell: cmd
run: |
mkdir "C:\Users\runneradmin\mysql_data"
"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld" --initialize-insecure --user=root --datadir=C:\Users\runneradmin\mysql_data
- name: Start MySQL
shell: cmd
run: |
"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld" --port=3306 --datadir=C:\Users\runneradmin\mysql_data
- name: Install dependencies
run: uv sync --all-extras -p ${{ matrix.python-version }}
# - name: Wait for MySQL connection
# run: |
# while ! mysqladmin ping --host=localhost --port=3306 --user=root --silent; do
# sleep 5
# done
- name: Set MySQL test credentials
shell: cmd
run: |
"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqladmin" --host=localhost --port=3306 --user=root password root
- name: Pytest / behave
env:
PYTEST_PASSWORD: root
PYTEST_HOST: 127.0.0.1
TERM: xterm
run: |
uv run tox -e py${{ matrix.python-version }}
test-no-extras:
name: Tests Without Extras
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
with:
version: "latest"
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: '3.14'
- name: Start MySQL
run: |
sudo /etc/init.d/mysql start
- name: Install dependencies
run: uv sync --extra dev -p python3.14
- name: Wait for MySQL connection
run: |
while ! mysqladmin ping --host=localhost --port=3306 --user=root --password=root --silent; do
sleep 5
done
- name: Pytest / behave
env:
PYTEST_PASSWORD: root
PYTEST_HOST: 127.0.0.1
TERM: xterm
run: |
uv run tox -e py3.14